Skip to main content
You need a machine that meets the system requirements and the version you are installing from the Versions page. At the end you have a gaiad binary (or image) built from the v29.0.1 commit and that you have verified against the release signature or built yourself. All three options are equal. Pick the one that fits how you run servers.

Pick the version first

Install the current mainnet release tag, not the newest tag. Release candidates (-rc) are for the testnet.
On 2026-11-08 this printed v29.0.1. The examples below use that tag. Replace it if the chain has moved on.

Install

Each gaia v29 release ships two bare binaries, gaiad-<tag>-linux-amd64 and gaiad-<tag>-darwin-amd64, a detached GNU Privacy Guard (GPG) signature (.asc) for each, and SHA256SUMS-<tag>.txt. Releases before v29 also shipped .tar.gz archives. v29 does not. The release is signed with the Cosmos release key, fingerprint E625 9F16 9C7B 913D BB75 DE02 5395 305D 29B8 8B32, published in the cosmos/security repository. There is no arm64 Linux binary. Use the source build on arm64.Import the release key once:
The fingerprint printed must match the one above. If it does not, stop. Do not install.Download the binary, its signature, and the checksum file:
Verify the signature, then the checksum:
Expect Good signature from "Cosmos-Release <nodes@cosmoslabs.io>" from gpg --verify and gaiad-v29.0.1-linux-amd64: OK from sha256sum --check. A warning that the key is not certified is normal for a key you imported directly. A BAD signature line is not, and Can't check signature: No public key means the import did not reach the keyring gpg uses.The v29.0.1 checksum file still names each binary by its old archive path, ./gaiad-linux-amd64/gaiad, so sha256sum --check --ignore-missing on the file itself verifies nothing and exits with no file was verified. The second command above takes the Linux hash from the file and checks the downloaded binary against it. On macOS use shasum -a 256 --check in place of sha256sum --check.Install the binary where your service user can run it:
The install command copies the file and sets the mode in one step, and /usr/local/bin is on PATH for every user, including the service user on Run gaiad as a service.

Verify

Expected for the current release:
That is a source build at the tag. The commit is the git commit of the tag and is the same for every install method. It is the line to compare. The version line reads v29.0.1 for a source build and v29.0.1+dirty for the Linux release binary and the container image. The build_tags line reads netgo,ledger for a source build. It reads netgo,muslc for the Linux release binary and the container image, which are static musl builds without Ledger support. The go line shows the toolchain the binary was built with. For the container image, run the same command with docker run --rm --entrypoint gaiad ghcr.io/cosmos/gaia:v29.0.1 version --long.

Build tags

Next

Join mainnet to initialize and sync the node, or Join testnet to practice first. To run against a fork of the Cosmos SDK, add a replace directive to go.mod (go mod edit -replace github.com/cosmos/cosmos-sdk=../cosmos-sdk && go mod tidy) before make install.