Installing a package

The releases on GitHub contain binaries and debian packages:

GitLab CI builds binaries for each commit: (currently available for linux/amd64, linux/arm, linux/arm64, darwin/amd64, darwin/arm64 and windows/amd64).

The release and CI binaries for Linux and Windows are statically built and have no dependencies at all. The binaries for macOS require installing libolm, either with brew install libolm or by placing libolm.3.dylib from the CI in the same directory as the gomuks binary.

There are also community maintained packages for several distributions. If you've made a new distro package, please add it to the list below.

Compiling from source

  1. Install Go 1.20 or higher.
    • If you want end-to-end encryption, also install libolm-dev (3.x required, 2.x won't work) and C/C++ compilers.
    • If you don't want encryption, disable CGO with export CGO_ENABLED=0.
  2. Clone the repo: git clone && cd gomuks
  3. Build: ./ ( will simply call go build with some additional flags).

Simply pull changes (git pull) and run go build again to update.

Common compilation issues

  • fatal error: olm/olm.h: No such file or directory means you forgot to install libolm-dev, or that you installed it in a weird place which isn't in your default library lookup path.
    • In the latter case, set the LIBRARY_PATH and CPATH environment variables, e.g. export LIBRARY_PATH=/usr/local/lib CPATH=/usr/local/include.
  • fatal error: olm/pk.h: No such file or directory means you installed libolm2 instead of libolm3.
  • cgo: C compiler "gcc" not found: exec: "gcc": executable file not found in $PATH means you forgot to install C/C++ compilers.
  • //go:build comment without // +build comment means your Go version is slightly outdated.
  • cannot load embed: malformed module path "embed" or package embed is not in GOROOT means your Go version is very outdated.
  • cannot find package "" in any of: usually means your Go version is extremely outdated.