Building from Source
Nym runs on Mac OS X, Linux, and Windows. All nodes except the Desktop Wallet and NymConnect on Windows should be considered experimental - it works fine if you're an app developer but isn't recommended for running nodes.
Building Nym
Nym has two main codebases:
- the Nym platform (opens in a new tab), written in Rust. This contains all of our code except for the validators.
- the Nym validators (opens in a new tab), written in Go.
This page details how to build the main Nym platform code. If you want to build and run a validator, go here instead.
Prerequisites
- Debian/Ubuntu:
pkg-config
,build-essential
,libssl-dev
,curl
,jq
,git
apt install pkg-config build-essential libssl-dev curl jq git
- Arch/Manjaro:
base-devel
pacman -S base-devel
- Mac OS X:
pkg-config
,brew
,openss1
,protobuf
,curl
,git
Running the following the script installs Homebrew and the above dependencies:
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
Rust & cargo >= 1.80
We recommend using the Rust shell script installer (opens in a new tab). Installing cargo from your package manager (e.g. apt
) is not recommended as the packaged versions are usually too old.
If you really don't want to use the shell script installer, the Rust installation docs (opens in a new tab) contain instructions for many platforms.
Download and Build Nym Binaries
You cannot build from GitHub's .zip or .tar.gz archive files on the releases page - the Nym build scripts automatically include the current git commit hash in the built binary during compilation, so the build will fail if you use the archive code (which isn't a Git repository). Check the code out from github using git clone
instead.
The following commands will compile binaries into the nym/target/release
directory:
rustup update
git clone https://github.com/nymtech/nym.git
cd nym
git reset --hard # in case you made any changes on your branch
git pull # in case you've checked it out before
git checkout master # master branch has the latest release version: `develop` will most likely be incompatible with deployed public networks
cargo build --release # build your binaries with **mainnet** configuration
Quite a bit of stuff gets built. The key working parts are:
- Nym Node:
nym-node
- Validator
- websocket client (opens in a new tab):
nym-client
- socks5 client (opens in a new tab):
nym-socks5-client
- webassembly client (opens in a new tab):
webassembly-client
- nym-cli tool (opens in a new tab):
nym-cli
- nym-api:
nym-api
- nymvisor:
nymvisor
The repository also contains Typescript applications which aren't built in this process. These can be built by following the instructions on their respective docs pages.