Installing from Releases

Yggdrasil ships pre-built Linux binaries with every tagged release. If you do not need to build from source, this is the fastest path to a running node.

For source builds (recommended for development, custom CPU targets, or platforms without a prebuilt binary), see Installation.

Available platforms

Platform Archive name suffix Build runner
Linux x86_64 (glibc) yggdrasil-node-<tag>-linux-x86_64.tar.gz ubuntu-latest
Linux aarch64 (glibc) yggdrasil-node-<tag>-linux-aarch64.tar.gz ubuntu-24.04-arm

macOS and Windows builds are not currently published. Build from source on those platforms.

Quick install (one-liner)

$ curl -fsSL https://raw.githubusercontent.com/yggdrasil-node/Cardano-node/main/node/scripts/install_from_release.sh \
    | bash

This pulls the latest tagged release for your detected architecture, verifies the SHA256 against the published SHA256SUMS.txt, and installs to /usr/local/bin/yggdrasil-node.

Manual install (verifiable)

If you prefer to inspect each step:

$ TAG=v0.2.0
$ ARCH=$(uname -m | sed 's/x86_64/x86_64/; s/aarch64\|arm64/aarch64/')
$ ARCHIVE="yggdrasil-node-${TAG}-linux-${ARCH}.tar.gz"
$ BASE="https://github.com/yggdrasil-node/Cardano-node/releases/download/${TAG}"

# Download the archive and the aggregated checksums.
$ curl -fsSL -O "${BASE}/${ARCHIVE}"
$ curl -fsSL -O "${BASE}/SHA256SUMS.txt"

# Verify the SHA256 — exits non-zero on mismatch.
$ grep " ${ARCHIVE}\$" SHA256SUMS.txt | sha256sum -c -
yggdrasil-node-v0.2.0-linux-x86_64.tar.gz: OK

# Extract.
$ tar -xzf "${ARCHIVE}"
$ cd "yggdrasil-node-${TAG}-linux-${ARCH}"

# Inspect.
$ ls
yggdrasil-node       # binary
configuration/       # vendored mainnet/preprod/preview presets
scripts/             # operator scripts
README.md
LICENSE              # if present

Install where convenient:

# sudo install -o root -g root -m 0755 yggdrasil-node /usr/local/bin/
# yggdrasil-node --version

Verifying the install

$ yggdrasil-node --version
yggdrasil-node 0.2.0 (commit abc1234)
$ yggdrasil-node validate-config --network mainnet --database-path /tmp/empty

If validate-config reports zero errors and a few normal warnings (storage uninitialised, peer snapshot missing), you are ready to run.

Bundled artifacts

Each release archive contains:

  • yggdrasil-node — the binary.
  • configuration/ — the vendored mainnet, preprod, and preview presets including genesis files, config.json, and topology.json. These match the SHAs pinned at release time.
  • scripts/ — operator scripts: install_from_release.sh, healthcheck.sh, backup_db.sh, check_upstream_drift.sh, compare_tip_to_haskell.sh, parallel_blockfetch_soak.sh, preview_producer_harness.sh, restart_resilience.sh, run_mainnet_real_pool_producer.sh, run_preprod_real_pool_producer.sh, yggdrasil-node.service (systemd unit template).
  • README.md and any LICENSE files.

Pre-release tags

Tags ending in -rc, -beta, or -alpha are flagged as pre-releases on GitHub. The install_from_release.sh script’s “latest” resolution skips pre-releases by default. To install one explicitly:

$ ./install_from_release.sh v0.2.0-rc1

Verifying provenance

Every release artifact is built by .github/workflows/release.yml running on a hosted GitHub Actions runner. Each archive’s SHA256 appears both in its .sha256 sidecar and in the aggregated SHA256SUMS.txt. The workflow run associated with a release is linked from the release page on GitHub.

For higher provenance assurance, build from source and verify against the same source SHA the release was tagged from:

$ git clone https://github.com/yggdrasil-node/Cardano-node yggdrasil
$ cd yggdrasil
$ git checkout v0.2.0
$ cargo build --release --bin yggdrasil-node
$ sha256sum target/release/yggdrasil-node
# Compare with the release archive's contained binary.

Reproducible builds across hosts are not yet a guaranteed property — the binaries contain timestamps and rustc-version-specific code generation. Use the source path for byte-level reproducibility.

Where to go next