Build from Source
Compile the Gryt desktop client yourself from the public source code
Don't want to trust a pre-built binary? You can build the Electron desktop client yourself directly from source. The entire codebase is open — inspect it, audit it, then build it.
Prerequisites
- Node.js v20 or later
- npm (comes with Node.js) or bun
- Git
Most distributions ship the required build tools. On Debian/Ubuntu:
sudo apt update
sudo apt install -y git nodejs npmInstall Node.js via Homebrew or the official installer:
brew install node gitInstall Node.js (LTS) and Git for Windows. Use PowerShell or Git Bash for the commands below.
Clone the repository
git clone --recurse-submodules https://github.com/Gryt-chat/gryt.git
cd gryt/packages/clientInstall dependencies
npm installbun installBuild the desktop app
This compiles the TypeScript source with Vite, then packages it with Electron Builder. No artifacts are published — everything stays local.
npm run electron:buildThe command runs cross-env ELECTRON=1 vite build && electron-builder --publish never under the hood.
Building for a specific platform only
By default electron:build targets the platform you're running on. To explicitly target one platform:
# Linux (AppImage + deb)
npx cross-env ELECTRON=1 vite build && npx electron-builder --linux --publish never
# macOS (zip)
npx cross-env ELECTRON=1 vite build && npx electron-builder --mac --publish never
# Windows (NSIS installer + portable exe)
npx cross-env ELECTRON=1 vite build && npx electron-builder --win --publish neverCross-compiling (e.g. building a Windows .exe on Linux) is possible but may require additional tooling. Building on the target OS is the most reliable approach.
Find your build output
Built artifacts are written to packages/client/release/:
| Platform | Artifacts |
|---|---|
| Linux | .AppImage, .deb |
| macOS | .zip |
| Windows | NSIS installer (.exe), portable (.exe) |
Verify the build
- Read the source — the full client source lives in
packages/client/src/. No hidden code, no obfuscation. - Check dependencies — run
npm lsto list every dependency and its resolved version. - Compare checksums — after building, you can compare the SHA-256 hash of your local build against the published release to confirm they were built from the same source.
sha256sum release/*.AppImage # Linux
sha256sum release/*.exe # Windows
shasum -a 256 release/*.zip # macOSExact byte-for-byte reproducibility between your local build and the CI release is unlikely due to timestamps, signing certificates, and platform differences. The important thing is that you can audit every line of code that goes into the build.
Code signing and OS trust
Pre-built releases from GitHub may trigger security warnings on Windows (SmartScreen) or macOS (Gatekeeper) because the binaries are not yet signed with a trusted certificate. This is normal for open-source projects and does not mean the software is malicious.
Windows SmartScreen
When you run the installer, Windows may show "Windows protected your PC". Click More info → Run anyway to proceed.
SmartScreen builds reputation over time — the more users download and run the app from a given certificate, the fewer warnings appear. An EV (Extended Validation) code signing certificate bypasses this warm-up entirely.
macOS Gatekeeper
macOS may show "Gryt Chat can't be opened because Apple cannot check it for malicious software." To open it:
- Right-click (or Control-click) the app
- Select Open
- Click Open in the confirmation dialog
This only needs to be done once. Subsequent launches work normally.
Linux
AppImage and .deb packages do not have an equivalent gatekeeper system. You may need to mark the AppImage as executable:
chmod +x Gryt-Chat-*.AppImageBuild metadata
The Electron Builder config includes metadata that helps establish trust with operating systems:
- Copyright and publisher — embedded in the executable's file properties
requestedExecutionLevel: asInvoker— declares the app does not require admin privileges- macOS entitlements — declares only the permissions the app actually needs (microphone, network)
- NSIS display names — proper app name in Add/Remove Programs and Start Menu
If you're building from source, these are all configured in electron-builder.yml and applied automatically during the build.
Prefer the pre-built release?
If you've reviewed the source and are comfortable, you can grab the latest build from the GitHub Releases page instead.