docs: update indexer docs for Horizon-only operation (indexer-rs v2.0.0)#1073
Merged
benface merged 2 commits intographprotocol:mainfrom Feb 5, 2026
Merged
Conversation
Reflect that indexer-service-rs and indexer-tap-agent v2.0.0 require Graph Horizon and no longer support legacy V1 TAP receipts. Simplify the GraphTally configuration guide to show only required Horizon fields, add the /healthz endpoint and receipt validation documentation, document the v2.0.0 upgrade path, and update the indexing overview to reference the Rust indexer components instead of the deprecated TypeScript stack.
Contributor
Author
|
@benface would be great to get this updated! 🙏 |
benface
reviewed
Feb 5, 2026
| - **IPFS node (version less than 5)** - Subgraph deployment metadata is stored on the IPFS network. The Graph Node primarily accesses the IPFS node during Subgraph deployment to fetch the Subgraph manifest and all linked files. Network Indexers do not need to host their own IPFS node, an IPFS node for the network is hosted at https://ipfs.thegraph.com. | ||
|
|
||
| - **Indexer service** - Handles all required external communications with the network. Shares cost models and indexing statuses, passes query requests from gateways on to a Graph Node, and manages the query payments via state channels with the gateway. | ||
| - **Indexer service ([indexer-service-rs](https://github.com/graphprotocol/indexer-rs))** - Handles all required external communications with the network. Shares cost models and indexing statuses, passes query requests from gateways on to a Graph Node, and manages query payments via [GraphTally](/indexing/tap). |
Contributor
There was a problem hiding this comment.
Suggested change
| - **Indexer service ([indexer-service-rs](https://github.com/graphprotocol/indexer-rs))** - Handles all required external communications with the network. Shares cost models and indexing statuses, passes query requests from gateways on to a Graph Node, and manages query payments via [GraphTally](/indexing/tap). | |
| - **Indexer service ([`indexer-service-rs`](https://github.com/graphprotocol/indexer-rs))** - Handles all required external communications with the network. Shares cost models and indexing statuses, passes query requests from gateways on to a Graph Node, and manages query payments via [GraphTally](/indexing/tap). |
benface
reviewed
Feb 5, 2026
| - **Indexer service** - Handles all required external communications with the network. Shares cost models and indexing statuses, passes query requests from gateways on to a Graph Node, and manages the query payments via state channels with the gateway. | ||
| - **Indexer service ([indexer-service-rs](https://github.com/graphprotocol/indexer-rs))** - Handles all required external communications with the network. Shares cost models and indexing statuses, passes query requests from gateways on to a Graph Node, and manages query payments via [GraphTally](/indexing/tap). | ||
|
|
||
| - **TAP agent ([indexer-tap-agent](https://github.com/graphprotocol/indexer-rs))** - Aggregates GraphTally receipts into RAVs (Receipt Aggregate Vouchers) and reconciles redemptions. Exactly one instance should run per indexer. |
Contributor
There was a problem hiding this comment.
Suggested change
| - **TAP agent ([indexer-tap-agent](https://github.com/graphprotocol/indexer-rs))** - Aggregates GraphTally receipts into RAVs (Receipt Aggregate Vouchers) and reconciles redemptions. Exactly one instance should run per indexer. | |
| - **TAP agent ([`indexer-tap-agent`](https://github.com/graphprotocol/indexer-rs))** - Aggregates GraphTally receipts into RAVs (Receipt Aggregate Vouchers) and reconciles redemptions. Exactly one instance should run per indexer. |
benface
reviewed
Feb 5, 2026
| | 8040 | Prometheus metrics | /metrics | --metrics-port | - | | ||
|
|
||
| #### Indexer Service | ||
| #### Indexer Service (indexer-service-rs) |
Contributor
There was a problem hiding this comment.
Suggested change
| #### Indexer Service (indexer-service-rs) | |
| #### Indexer Service (`indexer-service-rs`) |
benface
reviewed
Feb 5, 2026
| - **Indexer agent** - The agent monitors the network and the Indexer's own infrastructure and manages which Subgraph deployments are indexed and allocated towards onchain and how much is allocated towards each. | ||
|
|
||
| - **Indexer service** - The only component that needs to be exposed externally, the service passes on Subgraph queries to the graph node, manages state channels for query payments, shares important decision making information to clients like the gateways. | ||
| - **[indexer-service-rs](https://github.com/graphprotocol/indexer-rs)** - The only component that needs to be exposed externally, the service passes on Subgraph queries to the graph node, validates [GraphTally](/indexing/tap) receipts, and shares important decision making information to clients like the gateways. |
Contributor
There was a problem hiding this comment.
Suggested change
| - **[indexer-service-rs](https://github.com/graphprotocol/indexer-rs)** - The only component that needs to be exposed externally, the service passes on Subgraph queries to the graph node, validates [GraphTally](/indexing/tap) receipts, and shares important decision making information to clients like the gateways. | |
| - **[`indexer-service-rs`](https://github.com/graphprotocol/indexer-rs)** - The only component that needs to be exposed externally, the service passes on Subgraph queries to the graph node, validates [GraphTally](/indexing/tap) receipts, and shares important decision making information to clients like the gateways. |
benface
reviewed
Feb 5, 2026
| #### Getting started | ||
|
|
||
| The Indexer agent and Indexer service should be co-located with your Graph Node infrastructure. There are many ways to set up virtual execution environments for your Indexer components; here we'll explain how to run them on baremetal using NPM packages or source, or via kubernetes and docker on the Google Cloud Kubernetes Engine. If these setup examples do not translate well to your infrastructure there will likely be a community guide to reference, come say hi on [Discord](https://discord.gg/graphprotocol)! Remember to [stake in the protocol](/indexing/overview/#stake-in-the-protocol) before starting up your Indexer components! | ||
| The Indexer agent, indexer-service-rs, and indexer-tap-agent should be co-located with your Graph Node infrastructure. There are many ways to set up virtual execution environments for your Indexer components; here we'll explain how to run them using docker or via kubernetes on the Google Cloud Kubernetes Engine. If these setup examples do not translate well to your infrastructure there will likely be a community guide to reference, come say hi on [Discord](https://discord.gg/graphprotocol)! Remember to [stake in the protocol](/indexing/overview/#stake-in-the-protocol) before starting up your Indexer components! |
Contributor
There was a problem hiding this comment.
Suggested change
| The Indexer agent, indexer-service-rs, and indexer-tap-agent should be co-located with your Graph Node infrastructure. There are many ways to set up virtual execution environments for your Indexer components; here we'll explain how to run them using docker or via kubernetes on the Google Cloud Kubernetes Engine. If these setup examples do not translate well to your infrastructure there will likely be a community guide to reference, come say hi on [Discord](https://discord.gg/graphprotocol)! Remember to [stake in the protocol](/indexing/overview/#stake-in-the-protocol) before starting up your Indexer components! | |
| The Indexer agent, `indexer-service-rs`, and `indexer-tap-agent` should be co-located with your Graph Node infrastructure. There are many ways to set up virtual execution environments for your Indexer components; here we'll explain how to run them using docker or via kubernetes on the Google Cloud Kubernetes Engine. If these setup examples do not translate well to your infrastructure there will likely be a community guide to reference, come say hi on [Discord](https://discord.gg/graphprotocol)! Remember to [stake in the protocol](/indexing/overview/#stake-in-the-protocol) before starting up your Indexer components! |
benface
reviewed
Feb 5, 2026
| # Indexer Service | ||
| cd packages/indexer-service | ||
| ./bin/graph-indexer-service start ... | ||
| #### indexer-service-rs and indexer-tap-agent (Docker) |
Contributor
There was a problem hiding this comment.
Suggested change
| #### indexer-service-rs and indexer-tap-agent (Docker) | |
| #### `indexer-service-rs` and `indexer-tap-agent` (Docker) |
benface
reviewed
Feb 5, 2026
| #### Using docker | ||
|
|
||
| - Pull images from the registry | ||
| The indexer-service-rs and indexer-tap-agent are Rust applications distributed as Docker images. See the [GraphTally guide](/indexing/tap) for detailed configuration. |
Contributor
There was a problem hiding this comment.
Suggested change
| The indexer-service-rs and indexer-tap-agent are Rust applications distributed as Docker images. See the [GraphTally guide](/indexing/tap) for detailed configuration. | |
| The `indexer-service-rs` and `indexer-tap-agent` are Rust applications distributed as Docker images. See the [GraphTally guide](/indexing/tap) for detailed configuration. |
benface
reviewed
Feb 5, 2026
| ``` | ||
|
|
||
| #### Indexer service | ||
| #### indexer-service-rs and indexer-tap-agent |
Contributor
There was a problem hiding this comment.
Suggested change
| #### indexer-service-rs and indexer-tap-agent | |
| #### `indexer-service-rs` and `indexer-tap-agent` |
benface
reviewed
Feb 5, 2026
| - **Indexer service** - The only component that needs to be exposed externally, the service passes on Subgraph queries to the graph node, manages state channels for query payments, shares important decision making information to clients like the gateways. | ||
| - **[indexer-service-rs](https://github.com/graphprotocol/indexer-rs)** - The only component that needs to be exposed externally, the service passes on Subgraph queries to the graph node, validates [GraphTally](/indexing/tap) receipts, and shares important decision making information to clients like the gateways. | ||
|
|
||
| - **[indexer-tap-agent](https://github.com/graphprotocol/indexer-rs)** - Aggregates GraphTally receipts into RAVs and manages receipt-to-payment lifecycle. Run exactly one instance per indexer. |
Contributor
There was a problem hiding this comment.
Suggested change
| - **[indexer-tap-agent](https://github.com/graphprotocol/indexer-rs)** - Aggregates GraphTally receipts into RAVs and manages receipt-to-payment lifecycle. Run exactly one instance per indexer. | |
| - **[`indexer-tap-agent`](https://github.com/graphprotocol/indexer-rs)** - Aggregates GraphTally receipts into RAVs and manages receipt-to-payment lifecycle. Run exactly one instance per indexer. |
benface
approved these changes
Feb 5, 2026
benface
approved these changes
Feb 5, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Reflect that indexer-service-rs and indexer-tap-agent v2.0.0 require Graph Horizon and no longer support legacy V1 TAP receipts. Simplify the GraphTally configuration guide to show only required Horizon fields, add the /healthz endpoint and receipt validation documentation, document the v2.0.0 upgrade path, and update the indexing overview to reference the Rust indexer components instead of the deprecated TypeScript stack.
Signed off by Joseph Livesey joseph@semiotic.ai