Skip to content

feat: add self-hosted Firehose profile to docker-compose#909

Open
kayibal wants to merge 1 commit into
mainfrom
feat/self-hosted-firehose-profile
Open

feat: add self-hosted Firehose profile to docker-compose#909
kayibal wants to merge 1 commit into
mainfrom
feat/self-hosted-firehose-profile

Conversation

@kayibal

@kayibal kayibal commented Apr 16, 2026

Copy link
Copy Markdown
Contributor

Summary

  • Adds a substreams-endpoint opt-in profile to docker-compose.yaml: a single-container Firehose stack (reader-node-stdin, merger, relayer, firehose, substreams-tier1, substreams-tier2) backed by any EVM JSON-RPC node via fireeth tools poller generic-evm
  • Auto-resume on restart: poller detects the highest stored one-block file and continues from there, avoiding re-fetching already-fetched blocks
  • Moves lgtm/promtail observability to an opt-in observability profile (was always-on)
  • Fixes tycho-indexer healthcheck to use bash /dev/tcp (curl is not installed in the image)
  • Fixes OTLP exporter default to empty string (disables exporter when lgtm is not running)
  • Makes SUBSTREAMS_ENDPOINT, CHAINS, and RETENTION_HORIZON configurable via env vars; removes hardcoded Ethereum/date defaults
  • Removes chain-specific extractors-tempo.yaml volume mount
  • Deletes docker-compose.firehose.yaml (superseded by the new profile)

Tracked in ENG-5744.

Test plan

  • docker compose --profile substreams-endpoint up starts all services healthy
  • Restarting substreams-endpoint resumes poller from last stored block (not START_BLOCK)
  • Restarting tycho-indexer resumes from cursor
  • Full docker compose down + up (without -v) resumes both correctly
  • docker compose up (without profile) starts only db + tycho-indexer (lgtm/promtail not started)

🤖 Generated with Claude Code

Consolidates the standalone docker-compose.firehose.yaml into the main
compose file as an opt-in `substreams-endpoint` profile, enabling a
fully self-hosted EVM indexing stack without a StreamingFast/Pinax
hosted endpoint.

Changes:
- Add `substreams-endpoint` profile: single-container Firehose stack
  (reader-node-stdin, merger, relayer, firehose, tier1, tier2) backed
  by any EVM JSON-RPC endpoint via `fireeth tools poller generic-evm`
- Auto-resume on restart: poller starts from the highest stored
  one-block file, avoiding re-fetching already-fetched blocks
- Add `observability` profile for lgtm/promtail (opt-in, was always-on)
- Fix tycho-indexer healthcheck: use bash /dev/tcp instead of curl
  (curl is not present in the image)
- Fix OTLP default: empty string disables exporter when lgtm is not running
- Make SUBSTREAMS_ENDPOINT, CHAINS, and RETENTION_HORIZON configurable
  via env vars; remove hardcoded Ethereum defaults from the command
- Remove chain-specific extractors-tempo.yaml volume mount
- Delete docker-compose.firehose.yaml (superseded by the profile)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

@claude claude Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Claude Code Review

This repository is configured for manual code reviews. Comment @claude review to trigger a review and subscribe this PR to future pushes, or @claude review once for a one-time review.

Tip: disable this comment in your organization's Code Review settings.

@github-actions

Copy link
Copy Markdown

To run Claude review, comment /review or /claude-review on this PR.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

Status: Todo

Development

Successfully merging this pull request may close these issues.

1 participant