Granola only ships for macOS and Windows. It is an Electron app though, so the macOS .dmg already holds all of the app's JavaScript, which runs anywhere. It is just attached to a macOS runtime. This repo swaps in the Linux runtime and fixes what breaks. You get a real Linux app. No Wine, no VM, no emulation.
- Download the
.dmgfrom granola.ai/download - Install what you need:
sudo apt install g++-11 nodejs npm python3 curl make - Run
./granola-linux.sh "Granola - AI Notepad.dmg" - Open Granola from your app menu and sign in
That is it. The script installs to ~/Applications/granola, adds a desktop entry, registers the granola:// sign-in handler, and tests the build before it tells you it worked. Run ./uninstall.sh to undo it.
Set INSTALL_DIR= to install somewhere else. You need x86-64 and g++ 11 or newer. Tested on Pop!_OS (Ubuntu 20.04 base, glibc 2.32) with Granola 7.452.1 and Electron 42.7.0.
| ✅ | Notes, editor, sync, AI features, and search. The core app. |
| ✅ | Sign-in with Google, Microsoft, or SSO |
| ✅ | Encrypted local database that survives restarts |
| ✅ | Microphone recording |
| System audio capture is limited. The macOS build uses Core Audio to hear the other side of a call. On Linux the app falls back to a browser style capture path. | |
| ❌ | Apple Calendar (EventKit). Google and Microsoft calendars still work, since those run on the server. |
| ❌ | Global hotkeys |
| ❌ | Auto-update. Run the script again with a newer .dmg. |
If you would rather not run the script, the conversion takes six steps:
- Extract the
.dmgwith a modern7zz. Thep7zipin most distros cannot read its LZFSE compression. - Read the Electron version out of
Electron Framework.framework/.../Info.plist, then download that exact Linux build. - Unzip the Linux runtime into your install folder and delete
resources/default_app.asar. - Copy
app.asar,app.asar.unpacked, andicons/from the bundle into the runtime'sresources/. Skip every Mac binary, since they all sit behinddarwinchecks. - Patch the platform string inside
app.asarso it reportsWindows. Granola's API returns a 500 error forplatform=linux, so sign-in fails without this. - Rebuild
better-sqlite3-multiple-ciphersfrom the C++ source insideapp.asar.unpackedusing g++ 11 or newer. Granola's version adds anupdateHook()that no public build has.
Four of those six fail with errors that do not point at the real cause. granola-linux.sh has the exact commands, with comments explaining each one.
- Nothing here gets around licensing or sign-in. You use your own account and the app talks to Granola's real servers. The only patch is a platform label that their API refuses to accept.
- Granola's code belongs to Granola. Do not commit
app.asaror the.dmg. The.gitignorecovers both. - Running the script again is safe. It wipes and rebuilds the install folder and leaves your notes in
~/.config/Granolaalone. ./uninstall.sh --purgealso removes the local notes cache and login.
