v2.2.0 · MIT OR Apache-2.0
Be your own indexer.
Nuthatch is a self-hosted blockchain indexer in one Rust binary. From contract address to live indexed API in under two minutes. No services to rent, no APIs to trust, nothing phoning home.
curl -fsSL https://nuthatch-indexer.com/install.sh | sh
A real run, start to finish. init resolves the ABI and scaffolds the
project; dev follows the tip, seals finalized ranges to Parquet, and serves it.
A three-contract, 23-table nest, tip-following and serving, live - 2.8% of the 2 GB budget CI enforces.
Sentio's OBIB case 1 - 22.2M blocks of Ethereum, 294,278 events - in 321 RPC requests and 320 MB. Someone else's benchmark, run against a real provider.
Contract address to live indexed API. Timed from init to first query.
No gateway, no metered API, no tokens, no telemetry. Your node, your data, your box.
How it works
One process, from RPC to a query you can trust.
- chain RPC · reth ExEx (planned)
- deterministic decode topic0-keyed, versioned
- incremental views IVM · reorgs = retractions
- redb + Parquet hot tip · sealed segments
- entities · SQL · balances · MCP one local endpoint
Two engines, one binary
A hot store (redb) answers entity point-reads at the tip. Past finality, ranges seal to content-addressed Parquet segments, and an embedded DuckDB attaches them read-only for analytical SQL. Single writer, no Postgres, no Docker.
Entities as incremental views
Entities are declarative views over decoded events, maintained incrementally. A reorg is a retraction, not a pile of rollback code. Backfills are the same circuit run as a batch. The columnar layer stays append-only, by construction.
Deterministic by construction
Decode and derivation are reproducible. The escape hatch is capability-isolated WASM components via WIT. A component granted zero capabilities is pure, so it can be re-executed and verified; effectful ones only annotate.
Where this is going is public, RFC by RFC - see the roadmap.
Who runs it
Three front doors.
POST /sql, like a database that fills itself.
run a published nest, write no indexing code.
built-in MCP, fully local.
Where it sits
The honest comparison.
| Nuthatch | The Graph | Goldsky | Ponder | Subsquid | |
|---|---|---|---|---|---|
| Runs on your hardware | ✓ | ~ Heavy self-host | - Managed only | ✓ | ✓ |
| One-binary install | ✓ | - node + PG + IPFS | - | - Node.js runtime | - Archive + PG |
| No mandatory third-party API | ✓ | ~ If self-hosted | - Required | ~ Needs an RPC | ~ Archive network |
| Deterministic / re-executable | ✓ | ~ PoI | - | - Imperative | - Imperative |
| Declarative entities (IVM) | ✓ | - AssemblyScript | - | - TypeScript | - TypeScript |
| Built-in MCP server | ✓ | - | - | - | - |
| Licence | MIT / Apache-2.0 | Open source | Closed | MIT | Apache-2.0 |
| Price | Free | Per-query fees | Usage-based | Free | Free |
Ponder is excellent. If you want TypeScript, use it. The Graph, Goldsky, and Subsquid are good tools too; this table states facts, not a verdict.
AI-native, sovereignty-respecting
The AI writes the code. It never sits in the data path.
- A built-in MCP server - 12 tools, 3 resources, and 3 prompts: schema discovery, SQL, entity and balance lookup, plus flags, exposure, and sanctions screening.
- A governed semantic layer:
schemaserves this nest's meaning, and a failed query comes back as a fix hint (explainchecks a query before it runs) - so the agent gets it right first try. - Ships
llms.txtand a Claude Code skill an agent uses to drive nuthatch, not just read it. - Works fully offline against your local instance.
initresolves the ABI and scaffolds the project: config,llms.txt, and a Claude Code skill.- The skill hands the tool the real query surface, so it uses actual endpoints, not guesses.
- Planned: generated schema, views, and tests from an ABI, reviewed through the deterministic core.
- Planned: local models via Ollama or your own key - no AI feature will require the cloud.
Two minutes. One binary. No one to ask.
curl -fsSL https://nuthatch-indexer.com/install.sh | sh