HyperIndex Complete Documentation
This document contains all HyperIndex documentation consolidated into a single file for LLM consumption.
| What it is | A blazing-fast, developer-friendly multichain blockchain indexer that transforms on-chain events into structured, queryable databases with GraphQL APIs |
| Data engine | Powered by HyperSync - up to 2000x faster than traditional RPC endpoints |
| Performance | Fastest in four of the five scenarios in the open indexer benchmark, jointly in one, as of the 16 September 2026 run |
| Supported chains | 80+ EVM chains and Fuel, with new networks added regularly; all EVM-compatible chains supported via RPC |
| Languages | TypeScript, JavaScript, ReScript |
| Key files | config.yaml (indexer settings), schema.graphql (data schema), src/EventHandlers.* (event logic) |
| Prerequisites | Node.js v22+, pnpm v8+, Docker Desktop (local dev only) |
| Deployment | Hosted service (managed, no API token needed) or self-hosted |
| API token | Required for local dev and self-hosted deployments from 3 November 2025 via ENVIO_API_TOKEN env variable |
| Query interface | GraphQL API auto-generated from your schema |
| Multichain | Native multichain indexing with unordered_multichain_mode support |
| Wildcard indexing | Index by event signature rather than contract address |
| Migration | Straightforward migration path from TheGraph subgraphs |
| Get started | pnpx envio init |
| Support | Discord · GitHub |
Overview
File: overview.md
HyperIndex is a blazing-fast, developer-friendly multichain indexer, optimized for both local development and reliable hosted deployment. It empowers developers to effortlessly build robust backends for blockchain applications. If you are new to indexing, see what a blockchain indexer is for the wider context.
HyperIndex is Envio's full-featured blockchain indexing framework that transforms on-chain events into structured, queryable databases with GraphQL APIs.
HyperSync is the high-performance data engine that powers HyperIndex. It provides the raw blockchain data access layer, delivering up to 2000x faster performance than traditional RPC endpoints.
While HyperIndex gives you a complete indexing solution with schema management and event handling, HyperSync can be used directly for custom data pipelines and specialized applications.
Key Features
- Quickstart templates – Rapidly bootstrap your indexer.
- Real-time indexing – Instantly track blockchain events.
- Multichain indexing – Support multiple blockchains simultaneously.
- Local development – A full-featured local environment with Docker.
- Reorg support – Gracefully handle blockchain reorganizations without sacrificing latency.
- GraphQL API – Easily query indexed data.
- Cross-platform support – Index any EVM-, SVM-, or Fuel-compatible blockchain.
- High performance – Perform historical backfills at 30,000+ events per second.
- Indexer auto-generation – Generate indexers directly from smart contract addresses.
- Flexible language support – TypeScript, JavaScript, and ReScript.
- Factory contract support – Index data from over 1M dynamically registered contracts seamlessly.
- On-chain and off-chain data integration – Easily combine multiple data sources.
- Self-hosted and managed options – Run your own setup or use Envio Cloud.
- Detailed logging and observability – Debug and optimize with clarity.
- External API actions – Trigger external services based on blockchain events.
- Wildcard topic indexing – Flexibly index based on event topics.
- Fallback RPC data sources – Enhance reliability with RPC connections.
Feature Roadmap
Upcoming features on our development roadmap:
- Indexing 1,000,000+ events per second
- Configurable Query/REST API layer
- No-Code Indexers
- Durable & Non-Blocking Effect API
Recently shipped: isolated multichain mode (v3.6, with per-chain rollbacks in v3.10) and stable Solana support (v3.11).
HyperSync API Token Requirements
HyperSync (the data engine powering HyperIndex) requires an API token for all requests. You can generate one in the Envio Cloud portal. Here's what you need to know:
- Local Development: An API token is required. The CLI supports an automatic login flow to make this smoother.
- Self-Hosted Deployments: API tokens are required for HyperSync access in self-hosted deployments. Set the token via the
ENVIO_API_TOKENenvironment variable in your indexer configuration. This can be read from the.envfile in the root of your HyperIndex project. - Envio Cloud: Indexers deployed to Envio Cloud have special access that doesn't require a custom API token.
- Pricing: Tiered packages are available for those self-hosting HyperIndex and using HyperSync. See the HyperSync pricing page for details, or reach out to us on Discord for preferred pricing based on your specific use case.
For more details about API tokens, including how to generate and implement them, see our API Tokens documentation.
🔗 Quick Links
Contract Import
File: contract-import.md
The Quickstart enables you to instantly autogenerate a powerful blockchain indexer and start querying blockchain data in minutes. This is the fastest and easiest way to begin using HyperIndex. If you are new to indexing, see what a blockchain indexer is for the wider context.
Example: Autogenerate an indexer for the Eigenlayer contract and index its entire history in less than 5 minutes by simply running pnpx envio init and providing the contract address from Etherscan.
Prerequisites
- Node.js (v22 or newer recommended)
- pnpm (recommended but not required)
- Docker Desktop (required to run the Envio indexer locally)
Note: Docker is only required if you plan to run your indexer locally. You can skip installing Docker if you'll only be using Envio Cloud. Podman also works if you prefer it to Docker.
Additionally for Windows Users:
- WSL Windows Subsystem for Linux
Getting Started
Run the following command to initialize your blockchain indexer:
pnpx envio init
You'll then follow interactive prompts to customize your indexer.
Video Tutorials
Indexer Initialization Options
During initialization, you'll be presented with two options:
- Contract Import (recommended for existing smart contracts)
- Template
Choose the Contract Import option to auto-generate indexers directly from smart contracts.
? Choose an initialization option
Template
> Contract Import
[↑↓ to move, enter to select]
Contract Import Methods
There are two convenient methods to import your contract:
- Block Explorer (verified contracts on supported explorers like Etherscan and Blockscout)
- Local ABI (custom or unverified contracts)
1. Block Explorer Import
This method uses a verified contract's address from a supported blockchain explorer (Etherscan, Routescan, etc.) to automatically fetch the ABI.
Steps:
a. Select the blockchain
? Which blockchain would you like to import a contract from?
> ethereum-mainnet
goerli
optimism
base
bsc
gnosis
polygon
[↑↓ to move, enter to select]
HyperIndex supports all EVM-compatible chains. If your desired chain is not listed, you can import via the local ABI method or manually adjust the config.yaml file after initialization.
b. Enter the contract address
? What is the address of the contract?
[Use proxy address if ABI is for a proxy implementation]
If using a proxy contract, always specify the proxy address, not the implementation address.
c. Select events to index
? Which events would you like to index?
> [x] ClaimRewards(address indexed from, address indexed reward, uint256 amount)
[x] Deposit(address indexed from, uint256 indexed tokenId, uint256 amount)
[x] NotifyReward(address indexed from, address indexed reward, uint256 indexed epoch, uint256 amount)
[x] Withdraw(address indexed from, uint256 indexed tokenId, uint256 amount)
[space to select, → to select all, ← to deselect all]
d. Finish or add more contracts
You'll be prompted to continue adding more contracts or to complete the setup:
? Would you like to add another contract?
> I'm finished
Add a new address for same contract on same network
Add a new network for same contract
Add a new contract (with a different ABI)
2. Local ABI Import
Choose this method if the contract ABI is unavailable from a block explorer or you're using an unverified contract.
Steps:
a. Select Local ABI
? Would you like to import from a block explorer or a local abi?
Block Explorer
> Local ABI
[↑↓ to move, enter to select]
b. Specify ABI JSON file
Provide the path to your local ABI file (JSON format):
? What is the path to your json abi file?
c. Select events to index
? Which events would you like to index?
> [x] ClaimRewards(address indexed from, address indexed reward, uint256 amount)
[x] Deposit(address indexed from, uint256 indexed tokenId, uint256 amount)
[space to select, → to select all, ← to deselect all]
d. Choose blockchain
Specify the blockchain your contract is deployed on:
? Choose network:
> ethereum-mainnet
goerli
optimism
base
bsc
gnosis
[Custom Network ID]
[↑↓ to move, enter to select]
e. Enter contract details
- Contract name
? What is the name of this contract?
- Contract address
? What is the address of the contract?
[Use proxy address if ABI is for a proxy implementation]
f. Finish or add more contracts
Complete the import process or continue adding contracts:
? Would you like to add another contract?
> I'm finished
Add a new address for same contract on same network
Add a new network for same contract
Add a new contract (with a different ABI)
Generated Files & Configuration
The Quickstart automatically generates key files:
1. config.yaml
Automatically configured parameters include:
- Network ID
- Start Block
- Contract Name
- Contract Address
- Event Signatures
By default, all selected events are included, but you can manually adjust the file if needed. See the detailed guide on config.yaml.
2. GraphQL Schema
- Entities are automatically generated for each selected event.
- Fields match the event parameters emitted.
See more details in the schema file guide.
3. Event Handlers
- Handlers are autogenerated for each event.
- Handlers create event-specific entities.
Learn more in the event handlers guide.
Congratulations! Your HyperIndex indexer is now ready to run and query data!
Next step: Running your Indexer locally or Deploying to Envio Cloud.
Other Ways to Start
Contract Import is the recommended path, but you can also bootstrap an indexer from:
- Templates - pre-built
ERC20or Greeter projects, selectable from thepnpx envio initinteractive prompt. - Examples - copy and adapt an existing indexer from our Examples, our Tutorials, or the GitHub repositories.
Quickstart With Ai
File: quickstart-with-ai.md
Build an Envio HyperIndex indexer end-to-end with an AI coding assistant.
Most developers now reach for an AI coding assistant before they open a file. This guide walks through an AI-centric flow for creating, developing, and deploying a HyperIndex indexer. It is semi-generic, so any capable AI coding assistant (Cursor, Windsurf, Copilot Agent, Continue, etc.) will work. That said, we've seen the best results with Claude Code and recommend starting there.
If you'd rather drive the CLI yourself, see the Quickstart.
Prerequisites
- Node.js (v22 or newer)
- pnpm (recommended but not required)
- Docker Desktop (only needed to run the indexer locally)
- An AI coding assistant (we recommend Claude Code)
Step 1. Initialize The Indexer
Open Claude/Cursor/Codex and prompt:
pnpx envio init
Built for AI Agents
When we notice a command is run by an agent instead of interactively, we output an AI-friendly prompt with the available options and step-by-step instructions on what to do next.
We also provide tools and recommendations an agent can use to get the result, like envio tools search-docs, with more coming soon.
After the project is initialized, we provide a curated set of skills that guide an agent through the codebase. Together with our testing framework, they let it iterate quickly on indexer changes while keeping quality high.
Upgrading Envio or have stale skills? Run envio skills update to pull the latest skills into your project.
About Envio API Token
The Envio API token is your HyperSync API token. A few things to know:
- The token can't currently be created programmatically. You generate one by logging in to envio.dev/app/api-tokens and copying it into
ENVIO_API_TOKENin your indexer's.env. - It's only required for local development and self-hosted deployments. Indexers running on Envio Cloud get special access and don't need a custom token.
- It's required when using Envio as the data provider (HyperSync). If you only use an external RPC as the data source, no token is needed - you can pass an empty string to skip the prompt.
- To run
pnpm devlocally, generate a token from the link above and setENVIO_API_TOKENin.envbefore starting the indexer.
See API Tokens and Environment Variables for full details.
Step 2. The Development Loop
The skills cover config, schema, handlers, loaders, dynamic contracts, testing, and migration checklists, so an agent can read them directly instead of inventing patterns. A productive loop looks like:
- Describe the behavior you want in plain English.
- Let the assistant edit
config.yaml,schema.graphql, andsrc/handlers. - Have it follow a test-driven loop: write a failing test with
createTestIndexer(), implement the handler, then runpnpm testto capture and lock in snapshots. See the Testing guide for the full TDD workflow. - Iterate on failures together.
The three files your agent will spend most of its time in:
config.yaml: chains, contracts, eventsschema.graphql: entities and relationshipssrc/handlers: per-event logic
Step 3. Migrating an Existing Indexer
If you're porting from The Graph, Ponder, or another indexing framework, start with the AI migration workflow. It scales much better than hand-editing handlers.
- Migrate Using AI: the recommended assistant-driven flow. It's written around subgraphs, but the same monorepo-plus-phased-prompt pattern works for Ponder and other frameworks. Point the assistant at the source project plus a freshly scaffolded HyperIndex indexer and let the skills guide it.
- Migrate from The Graph (manual)
- Migrate from Ponder
- Migrate from Alchemy
Step 4. Deploy Programmatically with envio-cloud
Once your indexer runs locally, the envio-cloud CLI lets an assistant (or a CI job) deploy and manage the hosted indexer without opening the dashboard.
npm install -g envio-cloud
envio-cloud login --token $ENVIO_GITHUB_TOKEN
envio-cloud indexer add --name my-indexer --repo my-repo
envio-cloud deployment status my-indexer <commit> --watch-till-synced
envio-cloud deployment logs my-indexer <commit> --follow
Every command supports -o json, which makes it easy for assistants and scripts to parse results. Full reference: Envio Cloud CLI.
Related Resources
- MCP Server
- LLM-friendly docs bundle
- Envio CLI reference
- Envio Cloud CLI
- Migrate Using AI
- HyperIndex v3 migration
Benchmarks
File: benchmarks.md
HyperIndex Performance Benchmarks
HyperIndex is the fastest blockchain indexer in four of the five scenarios in our open benchmark, jointly in one of them, and second in the fifth. On state aggregation it processed 261x the events per second of a subgraph on Graph Node.
Figures are events per second from the run of 16 September 2026. The benchmark runs in GitHub CI and checks each tool's output against ground truth. The repository README always has the latest run, and the methodology explains how it works.
State aggregation
Every rETH transfer changes a balance, so each event means finding a row, updating it and saving it again.
| Tool | Data source | Events/s | vs fastest |
|---|---|---|---|
| Envio Indexer | HyperSync | 8,182.4 | Fastest |
| Envio Subgraph | HyperSync | 7,649.6 | 1.1x slower |
| Rindexer | HyperSync | 947.2 | 8.6x slower |
| Squid SDK | SQD Network | 556.1 | 14.7x slower |
| Envio Indexer | RPC | 341.9 | 23.9x slower |
| Rindexer | RPC | 322.8 | 25.3x slower |
| Envio Subgraph | RPC | 241.1 | 33.9x slower |
| Ponder | RPC | 62.0 | 132x slower |
| Subgraph (Graph Node) | RPC | 31.4 | 261x slower |
| Substreams | StreamingFast | 28.7 | 285.1x slower |
| SubQuery | RPC | 25.3 | 323.9x slower |
| Squid SDK | RPC | 17.3 | 474.1x slower |
SubQuery and Squid SDK on RPC did not finish verifying the full range inside the 300 second cap.
Solana USDC transfers
Every USDC transfer on Solana, including the ones inside swaps and routers.
| Tool | Data source | Events/s | vs fastest |
|---|---|---|---|
| Envio Indexer | HyperSync | 16,204.7 | Fastest |
| Substreams | StreamingFast | 3,856.5 | 4.2x slower |
| Squid SDK | SQD Network | 996.8 | 16.3x slower |
| Carbon | RPC | 563.2 | 28.8x slower |
Other scenarios
| Scenario | Fastest | HyperIndex | Next tool |
|---|---|---|---|
| Decoded event stream | Rindexer on HyperSync, 78,416 | 1.2x slower | Squid SDK on SQD Network, 6.7x slower |
| External contract calls | HyperIndex and Squid SDK, jointly | Joint fastest | Rindexer on HyperSync, 1.7x slower |
| Factory contract registration | HyperIndex, 10,782 | Fastest | Rindexer on HyperSync, 1.5x slower |
Rindexer's lead on the decoded event stream comes from reading HyperSync, Envio's own data layer. With RPC as its source, Rindexer is 7.2x slower, at 10,950 events/s. Read more about HyperSync.
For a wider comparison, see Best Blockchain Indexers in 2026.
Sentio benchmark cases, April 2025
These cases come from Sentio's April 2025 research and are kept for reference. They measure total sync time, predate the current method and are not comparable with the tables above. The Envio column names the product behind each figure, because HyperSync is a raw data engine rather than a full indexer. Sentio has since published its own benchmark with different results.
| Case | Description | Envio | Nearest competitor | The Graph | Ponder |
|---|---|---|---|---|---|
| LBTC Token Transfer Events | Event handling, no RPC calls, write-only | 3m (HyperIndex) | 8m - 2.6x slower (Sentio) | 3h9m - 63x slower | 1h40m - 33x slower |
| LBTC Token with RPC calls | Event handling, RPC calls, read-after-write, point calculation | 1m (HyperIndex) | 6m - 6x slower (Sentio) | 1h3m - 63x slower | 45m - 45x slower |
| Ethereum Block Processing | 100K blocks with metadata extraction | 7.9s (HyperSync) | 1m - 7.5x slower (Subsquid) | 10m - 75x slower | 33m - 250x slower |
| Ethereum Transaction Gas Usage | Transaction handling, gas calculations | 1m26s (HyperSync) | 7m - 4.8x slower (Subsquid) | N/A | 33m - 23x slower |
| Uniswap V2 Swap Trace Analysis | Transaction trace handling, swap decoding | 41s (HyperSync) | 2m - 2.9x slower (Subsquid) | 8m - 11x slower | N/A |
| Uniswap V2 Template | Event handling, pair and swap analysis | 8s (HyperIndex) | 2m - 15x slower (Subsquid) | 19m - 142x slower | 21m - 157x slower |
Some runs in these cases did not return complete data. The reference README has the counts.
Historical benchmarking results
In October 2023 our internal benchmark indexed the Uniswap V3 ETH-USDC pool 2.1x faster than the nearest competitor. See the Indexer Benchmarking Results blog post.
Verify for yourself
Every Open Indexer Benchmark figure comes from code you can run. Each scenario in the repository has its own setup instructions, and contributions are welcome, including new indexers, new scenarios and reports of results that look wrong.
How to Migrate Using AI
File: migrate-with-ai.md
HyperIndex v3 includes built-in Claude skills that show AI programming assistants how to write HyperIndex config, schema, handlers, and tests. With your existing subgraph in the same workspace, the assistant reads your current logic and ports it to HyperIndex. This is the recommended way to migrate complex subgraphs.
Prerequisites
- An AI programming assistant (Cursor or Claude Code)
- pnpm installed
- HyperIndex v3 (Claude skills are available in v3)
Step 1: Initialize a Boilerplate HyperIndex Indexer
Create a new HyperIndex indexer that indexes the same contracts and events as the subgraph you are migrating. Run the following in a new directory:
pnpx envio init
Follow the CLI prompts to set up the boilerplate indexer with the same contracts and events as your existing subgraph.
The Claude skills are only available in HyperIndex v3. See the v3 migration guide for current install guidance.
Step 2: Set Up a Monorepo Structure
Create a parent directory that contains both your new HyperIndex boilerplate indexer and the existing subgraph repo you want to migrate:
my-migration/
├── my-subgraph/ # Your existing subgraph repo
└── my-hyperindex-indexer/ # The boilerplate HyperIndex indexer from Step 1
This structure gives your assistant visibility into both projects so it can read and understand your subgraph logic while writing the HyperIndex implementation.
Step 3: Run Your AI Programming Assistant
Open the monorepo root with your AI programming assistant running there (for example, run Claude Code in the monorepo root or open the monorepo in Cursor). Put your assistant in plan mode first, then provide a prompt like the following (replace the repo names with your own):
<context>
This monorepo contains two indexers:
- `my-subgraph/` — an existing Graph Protocol subgraph indexer (source of truth)
- `my-hyperindex-indexer/` — a HyperIndex boilerplate scaffolded from the same
contracts (migration target)
</context>
<task>
Migrate the subgraph indexer to a fully working HyperIndex indexer.
Follow these phases in order:
Phase 1 — Plan
- Produce a migration plan mapping each subgraph component to its HyperIndex
equivalent.
- Flag anything that has no direct equivalent and propose a workaround.
- Do NOT write code yet.
Phase 2 — Implement
- Migrate the entire subgraph following the plan and skill guides.
- Process one handler file at a time.
- After each file, run `pnpm envio codegen` to validate, and verify it against
the migration plan before moving on.
Phase 3 — Verify
- Walk through every item in the migration plan and confirm it is
implemented.
- Run any available build or type check commands.
- List any items you could not complete and why.
</task>
<rules>
- Only modify files in `my-hyperindex-indexer/`. Do not change the subgraph repo.
- Preserve all entity fields and event mappings from the subgraph.
- Do not skip or summarize plan items — execute every one.
- If you are uncertain about a migration decision, pause and ask me.
</rules>
- After migration, run
pnpm devto verify the indexer runs correctly - Use the Indexer Migration Validator to compare outputs between your subgraph and the new HyperIndex indexer
Manual Migration
For a detailed manual migration guide covering the step by step conversion of subgraph.yaml, schema, and event handlers, see Migrate from The Graph.
Migrate from The Graph to Envio
File: migration-guide.md
Please reach out to our team on Discord for personalized migration assistance.
This page covers migrating from The Graph to Envio, with all examples shown in current HyperIndex V3 syntax (indexer.onEvent(...), chains:). If instead you are upgrading an existing HyperIndex project from V2 to V3, follow the Migrate to V3 guide.
Introduction
Migrating your existing subgraph to Envio's HyperIndex is designed to be a developer-friendly process. HyperIndex draws strong inspiration from The Graph’s subgraph architecture, which makes the migration simple, especially with the help of coding assistants like Cursor and AI tools (don't forget to use our ai friendly docs).
The process is simple but requires a good understanding of the underlying concepts. If you are new to HyperIndex, we recommend starting with the Quickstart guide.
If you want an assistant-led workflow, see How to Migrate Using AI for a guided process that works in both Cursor and Claude Code.
Run your subgraph as it is (preview)
The Envio Subgraph Engine runs an unmodified subgraph project on HyperIndex. Point it at a folder with a subgraph.yaml and it runs on HyperIndex underneath, reading the manifest, schema and mappings you already have.
cd my-subgraph && pnpx envio@3.10.0-subgraph dev
This is a preview, published as its own build rather than in the main release, so the version above is needed. It requires Node 22 or higher, and envio dev needs Docker, the same as running any indexer locally.
No changes to your subgraph are needed. The subgraph.yaml, schema, mappings and ABIs stay exactly as they are.
The engine runs graph codegen for you when the generated folder is missing, using the graph-cli from the project's own dependencies, so install those first.
Contract calls need an RPC
HyperSync and HyperRPC serve logs and blocks rather than eth_call, so a subgraph that calls contracts needs an RPC endpoint in the environment:
ENVIO_SUBGRAPH_RPC=https://...
Without it, the engine refuses to start and names the binding it found, such as Gravity.bind(...). Each call is made at the block of the event that triggered it, so indexing history needs an RPC that serves archive state.
What it does not run yet
Anything the engine does not support is refused when the config is parsed, naming the feature and where it was found, rather than failing part way through indexing. Call handlers and grafting are refused this way today.
When to migrate properly instead
Converting your subgraph to HyperIndex gives you multichain indexing, TypeScript handlers and the rest of the features in this guide. Use the sections below for that, or How to Migrate Using AI for an assistant-led conversion.