finds.dev← search

// the find

sevenlabs-hq/carbon

★ 629 · Rust · MIT · updated Sep 2026

Carbon is an indexing framework on Solana.

Carbon is a Rust framework for building Solana indexers and historical backfills from three swappable parts: datasources that stream updates in, decoders that turn raw account and transaction data into typed structs, and processors that act on the decoded output. It is aimed at teams that would otherwise write their own ingestion and instruction parsing for one or more Solana programs. The CLI can generate a decoder crate from an Anchor or Codama IDL, which removes most of the per-program boilerplate.

The datasource, decoder, and processor split is real rather than cosmetic. The processor in the quick start does not change whether its input comes from a Geyser stream or an RPC block subscription, so moving from live indexing to a backfill does not mean rewriting business logic. Generated decoders include typed instructions and accounts, and each decoder crate can optionally add Postgres row types and GraphQL schemas, which is the tedious part most indexer projects end up hand-writing. The datasource list is unusually broad for an open-source Solana project: Yellowstone Geyser, RPC block subscribe and crawlers, validator snapshots, Jetstreamer, and a Jito ShredStream adapter, so the ingestion path is not dictated by the framework.

The quick start points at the public mainnet-beta websocket and uses blockSubscribe. As far as I know that method is marked unstable and the public mainnet endpoint does not serve it, so the first thing a new user runs may fail. The README should name the endpoints that support it or use a provider URL placeholder. The README also says nothing about failure semantics: what happens when a processor returns an error partway through a block, whether there is retry or checkpointing, and how a restart resumes. For an indexer writing to Postgres, that is the first question to answer before adoption. Decoders are only as current as their last regeneration. The README does not say how the maintained decoders track program upgrades or which ones are verified against mainnet, so adopting one for a program that has shipped a new version means checking it yourself.

View on GitHub →

// want more like this?

We dig through GitHub every week and send a few repos picked for what you actually care about — each with an honest take like this one.

Get finds in your inbox → Search again →