Desktop: Linux
The Linux desktop build ships two artifacts we host ourselves, from the same source tree, for both x64 and arm64. A third Linux package, the Snap Store one, is built from the same tree but is a separate channel with its own signing, updates and integrity story; everything on this page describes the two hosted artifacts unless it says otherwise. See Snap Store.
Artifacts
| Artifact | What it is |
|---|---|
.AppImage |
A self-contained, portable binary; run it directly, no install step. |
.deb |
A Debian package, for apt/dpkg-based distributions. |
.snap |
Not covered here. Installed from the Snap Store, signed by the Store rather than by us, and updated by snapd. See Snap Store. |
If you install both a hosted artifact and the snap, they hold separate wallets. Strict confinement redirects a snap’s writes into its own directory under your home folder, so the snap and the .AppImage or .deb described on this page do not share a wallet, and neither one can see the other’s. Nothing detects this or warns you about it, and that is not planned. If you want the same wallet in both, move it deliberately: export an encrypted backup from one and import it into the other.
How it’s built
Both artifacts come from electron-builder, packaged with an xz-compressed archive for the .deb. Neither artifact carries an operating-system code signature: Linux has no equivalent of Windows Authenticode or Apple notarization for a generic binary, so integrity here rests on the published hashes and signature described below rather than OS-level signing.
Updates
Both artifacts are update-capable, but the mechanics differ:
.AppImage:electron-updaterdownloads the new AppImage and swaps it in place..deb:electron-updaterdownloads the new package and installs it withdpkg, which requires a privilege-escalation prompt. The update still happens through the in-app updater; it just needs the user to authorize the install the way any.debinstall does.
Update checks run against the wallet’s stable release channel, pulled from the maintainer-controlled update feed. See Build & Release for how the update flow works across every shell.
Verifying a download
Linux is the platform with the strongest integrity story, for two reasons:
- It’s reproducible. The packaged
.AppImageand.deb, for both architectures, are Level-2 reproducible: an independent verifier can rebuild from the tagged source and get byte-identical artifacts. See Reproducible Builds for what that covers and Verify a release for the rebuild-and-diff recipe. - Because there’s no OS code signature, update authenticity rests entirely on a signed release manifest. Before installing any update, on every platform, the wallet verifies a GPG-signed hash manifest against a copy of the release key compiled into the app itself, and refuses to install anything the manifest doesn’t cover. On Linux this pinned-key check is the only authenticity check in the update path, since there’s no OS signature backing it up, which is exactly why Linux is also the platform where independent, bit-for-bit reproduction matters most.
See Verify a release for the full manual verification recipe: importing the release key, checking the published SHA-256 manifest, verifying the GPG signature, and reproducing the build yourself.