Describe what to index in one YAML file. Indexa handles the how — incremental sync, checkpointing, idempotency, crash-safe resume, blockchain reorg handling, and an auto-generated REST query API. No engine code to write.
Writing an indexer by hand means re-solving where you left off, resuming after a crash, backfilling while tailing, and exposing a query API. Indexa solves these once.
Describe what to index in YAML; Indexa figures out the how. No engine code, no boilerplate.
Backfill history, tail new data, resume exactly where it stopped. The checkpoint commits in the same transaction as your writes — never double-write, never skip.
Every entity becomes a filterable REST resource. Filtering, pagination, ordering — generated from your schema, not written.
A connector exposes ordered streams with a monotonic cursor. The engine persists that cursor inside the same transaction as your writes — that is what makes resumption idempotent.
Zero-dependency files & exports. The fastest way to a query API.
Tail a table by a monotonic cursor column. CDC without the moving parts.
Index on-chain events with automatic reorg handling. Just give it an RPC URL.
Implement init / streams / close, register it, deploy. Kafka, Firehose, anything.
Every write made while indexing an unfinalized block is recorded in an undo journal. When a block hash changes, the engine rolls affected entities back to the last common ancestor — including derived balances — then re-indexes the new canonical chain. All in one transaction.
Drain each stream from its last checkpoint until caught up with history.
Poll for records after the cursor on an interval. New rows appear in the API automatically.
Entity writes and the checkpoint advance commit together. A crash never double-writes or skips.
source connector ──stream(cursor)──▶ engine ──transaction──▶ target store ──▶ REST API │ ▲ └─ checkpoint persisted ─┘ (same txn = idempotent)
From a YAML file to a live, crash-safe, incrementally-synced REST API. Zero engine code.