Quick start with Firehose for Stellar can be found in the official Firehose docs. Here some quick links to it:
Two fetcher backends are available. Both emit the same pbbstream.Block shape; check proto/sf/stellar/type/v1/block.proto for the payload schema.
Captive-core is the supported backend going forward. The RPC poller is kept for compatibility but is no longer actively developed — new deployments should use captive-core.
Spawns a stellar-core subprocess and streams ledgers from it.
firestellar fetch captive-core {FIRST_STREAMABLE_BLOCK} \
--stellar-core-bin /usr/bin/stellar-core \
--stellar-core-network mainnet \
--state-dir {STATE_DIR}Streams ledgers from a Stellar RPC endpoint. Maintenance-only — prefer captive-core for new work.
firestellar fetch rpc {FIRST_STREAMABLE_BLOCK} --endpoints {STELLAR_RPC_ENDPOINT} --state-dir {STATE_DIR}Both backends persist the last fired block to {STATE_DIR}/cursor.json after each successful emission. On restart, the fetcher resumes at last_fired_block + 1 instead of replaying from {FIRST_STREAMABLE_BLOCK}.
--state-dir— directory holdingcursor.json. Default:/data/work(both backends). Pass an empty string to disable persistence.--ignore-cursor— ignore any persistedcursor.jsonand start fresh from{FIRST_STREAMABLE_BLOCK}. Use this when running under a supervisor (e.g.firecore reader-node) that already tracks downstream state and passes the correct start block on restart.
The cursor schema is shared between the two backends, so a single state directory can be reused if you switch backends.
For more information, please read the CONTRIBUTING.md file.