This guide provides step-by-step instructions to build Status Desktop from source on Windows, Linux, and macOS.
If you're looking for instructions to build Status Mobile instead, go here.
- 🛠️ Status Desktop Build Guide
Install Chocolatey by running the following command in an Administrator PowerShell:
Set-ExecutionPolicy Bypass -Scope Process -Force; `
[System.Net.ServicePointManager]::SecurityProtocol = `
[System.Net.ServicePointManager]::SecurityProtocol -bor 3072; `
iex ((New-Object System.Net.WebClient).DownloadString('https://community.chocolatey.org/install.ps1'))Run with Administrator privileges:
choco install make cmake mingw wgetDownload and install Go 1.24 from the official website.
⚠️ Note: There is a scriptscripts/windows_build_setup.ps1, but it may be outdated.
Install required packages:
sudo apt update
sudo apt install libpcsclite-dev build-essential mesa-common-dev libglu1-mesa-dev libssl-dev cmake jq libxcb-xinerama0 protobuf-compilerInstall Go 1.24:
Download and install from the official website.
Install nvm (Node Version Manager):
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.38.0/install.sh | bashAdd the following to your .bashrc or .zshrc:
export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"Install Node.js (LTS version):
nvm install --lts
nvm alias default lts/*
npm install -g npm@latestInstall required packages:
sudo dnf install pcsc-lite-devel pcre-devel openssl-devel protobuf-devel protobuf-compilerInstall nvm and Node.js as per the Ubuntu instructions above.
Install Homebrew if not already installed.
brew install cmake pkg-config go@1.24 qt protobuf Install additional packages if you are planning to build DMG
brew install nvm yarn fileiconstatus-desktop uses Homebrew to download precompiled binary packages ("bottles") from GitHub.
Sometimes, Homebrew can hit GitHub's API rate limits, causing builds to fail.
To avoid this, you can generate a GitHub personal access token and export it in your environment:
export GITHUB_TOKEN=github_pat_YOURSUPERSECRETTOKENDONOTSHARE
export GITHUB_USER=yourgithubnameTip
You can skip this step if not planning to build a DMG
Create NVM's working directory:
mkdir ~/.nvmAdd the following to your shell profile (~/.zshrc, ~/.bash_profile, etc.):
export NVM_DIR="$HOME/.nvm"
[ -s "/opt/homebrew/opt/nvm/nvm.sh" ] && \. "/opt/homebrew/opt/nvm/nvm.sh"
[ -s "/opt/homebrew/opt/nvm/etc/bash_completion.d/nvm" ] && \. "/opt/homebrew/opt/nvm/etc/bash_completion.d/nvm"Install Node.js (LTS version):
nvm install --lts
nvm alias default lts/*
npm install -g npm@latestInstall additional dependencies:
npm install fileicon
brew install coreutilsTip
You can skip this step if not planning to build a DMG
If using Python ≥ 3.12:
python3 -m pip install setuptools --break-system-packagesInstall Qt 6.9.2 using the Qt Online Installer.
You can use any newer 6.9.x version available in your system's package manager.
sudo apt install qt6-base-dev qt6-declarative-dev qt6-tools-dev qt6-multimedia-dev qt6-svg-dev qt6-webengine-devsudo dnf install qt6-qtbase-devel qt6-qtbase-private-devel qt6-qt5compat-devel qt6-qtsvg-devel qt6-qtdeclarative-devel qt6-qtwebchannel-devel qt6-qtwebengine-devel qt6-qtwebsockets-develSet environment variables:
$env:QTPATH = "C:\Qt\5.15.2\5.15.2"
$env:QTBASE = "C:\Qt\5.15.2"
$env:QTDIR = "C:\Qt\5.15.2\msvc2017_64"
$env:GOPATH = "C:\Users\{your_username}\go\bin"
$env:VCINSTALLDIR = "C:\Program Files (x86)\Microsoft Visual Studio\2019\BuildTools\VC"
$env:VS160COMNTOOLS = "C:\Program Files (x86)\Microsoft Visual Studio\2019\BuildTools\VC\Auxiliary\Build"Add the following paths to your PATH environment variable:
C:\ProgramData\chocolatey\bin
C:\Users\{your_username}\scoop\apps\mingw\current\bin
C:\Users\{your_username}\scoop\apps\cmake\3.31.6\bin
C:\Users\{your_username}\scoop\apps\mingw\15.1.0-rt_v12-rev0\bin
С:\Users\{your_username}\go\bin
C:\Program Files\Go\bin
C:\Qt\5.15.2\msvc2019_64\bin
C:\protoc-30.2-win64\bin
C:\Qt\Tools\Ninja
C:\Program Files (x86)\Microsoft Visual Studio\2019\BuildTools\MSBuild\Current\Bin
C:\Program Files (x86)\Microsoft Visual Studio\2019\BuildTools\VC\Tools\MSVC\14.29.30133\bin
C:\Users\{your_username}\AppData\Local\Programs\Microsoft VS Code\bin
If you installed Qt via your system's package manager, additional environment configuration may not be necessary.
Otherwise, set those environment variables:
export QTDIR="/path/to/Qt/6.9.2/gcc_64"
export PATH="${QTDIR}/bin:${PATH}"📝 Note: On Windows, all commands should be executed under Git Bash. .
Clone the repository:
git clone https://github.com/status-im/status-app.git
cd status-desktopInstall some status-go dependencies:
make status-go-depsMake sure you have ~/go/bin in your PATH:
echo "export PATH=\"$HOME/go/bin:\$PATH\"" >> ~/.zshrcUpdate all submodules and build the dependencies:
make updateTip: Nim takes a long compile. Try using the
-j8flag where 8 is the number of cores you want to allocate
Build and run the app:
make run🎉
The following environment variables can be used to customize the build:
- INCLUDE_DEBUG_SYMBOLS (0,1) - Configure nim to include the debug symbols for desktop platforms.
- KDF_ITERATIONS (number) - Configure the KDF_ITERATIONS to use for the DB encryption
- KEYCARD_QT_SOURCE_DIR (path) - Point the build system to a local keycard-qt folder. Defaults to a new clone of the latest master in the
status-keycard-qtbuild folder. - MONITORING (true,false) - Enable/disable qml monitoring tools. The monitoring tools provide a suite of qml introspection tools to debug data transformations. Defaults to
false - NIM_SDS_SOURCE_DIR (path) - Point the build system to a local nim-sds folder. Defaults to
$(GIT_ROOT)/../nim-sds - PRODUCTION_PARAMETERS (string) - Configure the production arguments for nim compilation. Defaults to
-d:production - QMAKE (path to executable) - Point the build system to a different qt installation. Defaults to env configuration
- QML_DEBUG (true,false) - Enable qml debugger and profiler. Needs DOtherSide recompilation. Defaults to
false - QML_DEBUG_PORT (number) - Configure the qml debugger port. Defaults to
49152 - QT_ARCH (string) - Configure the Qt architecture for macOS cross-compilation. Can be used to compile Intel builds on ARM64 OS. Defaults to
$(shell uname -m) - REBUILD_NIM (true,false) - Force nim recompilation
- REBUILD_UI (true,false) - Force qrc recompilation
- STATUS_KEYCARD_QT_SOURCE_DIR (path) - Point the build system to a local status-keycard-qt folder. Defaults to
vendor/status-keycard-qt - USE_STATUS_KEYCARD_QT (0,1) - Toggle to switch between
status-keycard-goandstatus-keycard-qt. Defaults to0 - VCINSTALLDIR (path) - Visual Studio compiler installation path. Defaults to
C:\\Program Files (x86)\\Microsoft Visual Studio\\2017\\BuildTools\\VC\\
Make sure your QTDIR and PATH are correctly set. You can also try:
export QTDIR=/path/to/Qt/6.9.2/gcc_64
export PATH=$QTDIR/bin:$PATHGet more log output:
make run V=1If you get stuck or something doesn't work:
- Ask in
#feedback-desktopchannel on Status - Open an issue on GitHub