For the happy path (cargo install nyx-scanner, release binary on PATH), see the README. This page covers platform-specific notes and upgrade paths.
Release binaries are published for:
| Platform | Archive |
|---|---|
| Linux x86_64 | nyx-x86_64-unknown-linux-gnu.zip |
| macOS Intel | nyx-x86_64-apple-darwin.zip |
| macOS Apple Silicon | nyx-aarch64-apple-darwin.zip |
| Windows x86_64 | nyx-x86_64-pc-windows-msvc.zip |
Build from source works on any stable Rust 1.88+ target (edition 2024).
Each release attaches a SHA256SUMS file. When the maintainer signs the release, a detached SHA256SUMS.asc is published alongside it.
# Verify the checksum file's signature (skip if .asc isn't present)
gpg --verify SHA256SUMS.asc SHA256SUMS
# Then check your archive against it
sha256sum -c SHA256SUMS --ignore-missingIf sha256sum is missing on macOS, shasum -a 256 -c SHA256SUMS --ignore-missing is equivalent.
Expand-Archive -Path nyx-x86_64-pc-windows-msvc.zip -DestinationPath .
Move-Item -Path .\nyx.exe -Destination "C:\Program Files\Nyx\"
# Add C:\Program Files\Nyx to PATH in System Properties → Environment Variables
nyx --versiongit clone https://github.com/nyx-sec/nyx.git
cd nyx
cargo build --release
# Binary at target/release/nyxThe frontend is built and embedded into the binary during cargo build, so there's no separate step for nyx serve. Node is only required if you're working on the frontend itself; see CONTRIBUTING.md.
Optional features:
| Flag | Adds |
|---|---|
--features smt |
Bundles Z3 for stronger path-constraint solving. MIT-licensed; distributors should include Z3's license in their attribution |
--features smt-system-z3 |
Links against a system-installed Z3 instead of bundling |
Nyx stores its scanner version in the project's index database. When the binary's version differs from the stored version, the index is wiped on the next scan and rebuilt against the new engine. You'll see one info-level log line:
engine version changed (<old> → <new>), rebuilding index
No flag needed. If you see this on every scan, the metadata row isn't being persisted; file an issue.
If the SQLite file itself is damaged (killed scan, full disk), delete it and let the next scan rebuild from scratch:
rm "$(nyx config path)"/<project>.sqlite*Only the named project's rows are affected.