Get Nuthatch running.

Embedded mode is a single static binary with no external services. Pick whichever route you trust. Every one lands you at the same place: nuthatch init, then nuthatch dev.

v2.2.0 is out. This one is about what happens when the data underneath you is not perfect. A sealed segment that has gone bad no longer takes the whole query down with it: nuthatch serves the rest of the table and tells you it did, naming the affected tables in /sql, on the nuthatch sql command line, and through MCP. A caveat you have to notice is worth more than a query that simply fails. Blocks-only nests - the ones that index chain structure rather than a contract - now start, derive one row per block, and no longer ask an endpoint for every log on the chain. And the per-nest memory estimate was measured rather than guessed: it had been about 13x pessimistic, which was refusing mounts that fit comfortably. 2.0 is still the one release that moves data on disk, and it ships the command that does it: nuthatch migrate moves files and rewrites a config, and never re-indexes - 0.259s on a real two-nest deployment. Read the upgrade notes first. Prebuilt binaries ship for macOS (Apple Silicon) and Linux x86_64. Nuthatch follows semantic versioning on the 2.x line under a published stability contract - see also the roadmap. A Homebrew tap, an OCI image, and detached release signatures are still on the way; other platforms build from source with cargo for now.

Shell script

Detects your platform, downloads the matching static binary from the latest GitHub release, verifies its SHA-256 checksum, and puts it on your PATH. Covers macOS Apple Silicon and Linux x86_64; other targets fall back to cargo.

curl -fsSL https://nuthatch-indexer.com/install.sh | sh

Piping to a shell asks for trust. Read it first: the script is short and on GitHub, or download it, read it, then run it.

Cargo

Build from source straight from the repo. The toolchain pin is required, not advisory: rust-toolchain.toml does not apply to cargo install --git, and rustc 1.97 hits a dbsp ICE that installs nothing. No prebuilt binary in the trust path.

cargo +1.95.0 install --git https://github.com/nightswatchhq/nuthatch nuthatch

Or grab a tarball and its .sha256 yourself from the latest GitHub release.

Homebrew planned

macOS and Linuxbrew, once a tap is published.

brew install nuthatch

Docker

Embedded mode needs no Docker at all - that is rather the point. Images are published for anyone who wants one, and for scaled mode, where Postgres replaces the embedded hot store across a fleet.

docker run --rm -v $PWD/nest:/nest ghcr.io/nightswatchhq/nuthatch:latest dev --dir /nest

:latest is the embedded build. :2.2.0-scaled carries the Postgres driver and the worker, control and serve --hot-store commands. The compose files live in the repo.

First run

Point it at a contract and go. Public RPC defaults; no key required.

nuthatch init 0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48 --chain mainnet
nuthatch dev

init resolves each contract's ABI (proxies included), scaffolds a nest, and writes a schema.json, an llms.txt, and a Claude Code skill. Pass several addresses to index a multi-contract nest, and --chain arbitrum-one or --chain base for the L2s. dev follows the tip and serves /tables, /table/{name}, read-only /sql, balances, /metrics, and MCP on one local endpoint.


Verify what you downloaded

Every release binary ships with a SHA-256 checksum file. The shell script checks the sum for you; do it yourself for the manual download.

sha256sum -c nuthatch-<target>.tar.gz.sha256
Detached signatures planned

Releases ship checksums but not yet detached signatures. Minisign and cosign signing, with a published key, land with the remaining release engineering - see the roadmap. Until then, verify the checksum.