A no-code or framework to build blazing fast EVM indexers - built in rust.
A no-code or framework to build blazing fast EVM indexers - built in rust.
rindexer is an opensource powerful, high-speed indexing toolset developed in Rust, designed for compatibility with any EVM chain. This tool allows you to index chain events using a simple YAML file, requiring no additional coding. For more advanced needs, the rindexer provides foundations and advanced capabilities to build whatever you want. It's highly extendable, enabling you to construct indexing pipelines with ease and focus exclusively on the logic. rindexer out the box also gives you a GraphQL API to query the data you have indexed instantly.
You can get to the full rindexer documentation.
curl -L https://rindexer.xyz/install.sh | bash
If you’re on Windows, you will need to install and use Git BASH or WSL, as your terminal, since rindexer installation does not support Powershell or Cmd.
Native Windows release binaries are built without Reth/ExEx support. If you need Reth mode, use Linux, macOS, Docker, or WSL/Linux instead of the native Windows artifact.
Once installed you can run rindexer --help in your terminal to see all the commands available to you.
rindexer --help
…
We have full documentation https://rindexer.xyz/docs/introduction/installation which goes into more detail on how to use rindexer and all the commands available to you.
There's a pre-built docker image which can be used to run rindexer inside your dockerized infra:
ghcr.io/joshstevens19/rindexerTo create a new no-code project in your current directory, you can run the following:
docker run -it -v $PWD:/app/project_path ghcr.io/joshstevens19/rindexer new -p /app/project_path no-code
To use it with an existing project and a running postgres instance you can simply invoke:
export PROJECT_PATH=/path/to/your/project
export DATABASE_URL="postgresql://user:pass@postgres/db"
docker-compose up -d
This will start all local indexing and if you have enabled the graphql endpoint, it will become exposed under:
We also provide a Helm chart for deploying rindexer in Kubernetes environments. The Helm chart simplifies the deployment process and allows for easy customization of the deployment parameters.
You can find the Helm chart in the following directory:
To use the Helm chart, follow the instructions in the Helm Chart README to deploy rindexer to your Kubernetes cluster.
rindexer rust project building is available on crate.io but we strongly recommend using the git repository to install it and use it in your project. To use the CLI please install it using the above instructions.
https://crates.io/crates/rindexer
rindexer supports any EVM chain out of the box. If you have a custom chain, you can easily add support for it by adding the chain's RPC URL to the YAML configuration file and defining the chain ID. No code changes are required.
This is the core of rindexer, it contains all the logic for indexing and where most the code lives.
This is the cli for rindexer, it contains all the logic for the cli and is how users interact with rindexer.
This is the express project which leverages postgraphile rindexer GraphQL, it is automatically built into a binary during the Rust build process using pkg.
Build Process:
cargo buildDevelopment:
cd graphql
npm install
npm start
The binary is embedded into the Rust application and started automatically when GraphQL functionality is enabled.
This is the documentation for rindexer, it is built using voc which is an incredible
tool to build documentation. Big shout out to wevm team for all the work they have done on vocs, viem and wagmi.
Example projects showing different ways to use rindexer. There are three types: no-code (YAML-only, no Rust project), table (data transformations before storage), and rust (full Rust projects with custom handlers).
| Example | Type | Key differentiator | Storage | Complexity |
|---|---|---|---|---|
rindexer_demo_cli |
No-code | Basic PostgreSQL indexing | PostgreSQL | Low |
nocode_clickhouse |
No-code | Basic ClickHouse indexing | ClickHouse | Low |
rindexer_demo_custom_indexing |
No-code | Custom indexing patterns | PostgreSQL | Low |
rindexer_native_transfers |
No-code | Native ETH transfer indexing | Streams | Medium |
streams_playground |
No-code | Stream integrations (Kafka, RabbitMQ, etc.) | Streams | Medium |
rust_clickhouse |
Rust | Minimal starter example | ClickHouse | Low |
rindexer_factory_indexing |
Rust | Factory pattern (dynamic contract discovery) | PG + CSV | Medium |
clickhouse_factory_indexing |
Rust | Factory pattern on ClickHouse | ClickHouse | Medium |
rindexer_rust_playground |
Rust | Multi-contract, multi-network, dual storage | PG + CSV | High |
tables_erc20_balances |
Table | Balance tracking with add/subtract | PostgreSQL | Medium |
tables_erc20_allowances |
Table | Approval allowances tracking | PostgreSQL | Medium |
tables_erc721_ownership |
Table | NFT ownership tracking | PostgreSQL | Medium |
tables_erc1155_balances |
Table | Multi-token balance tracking | PostgreSQL | Medium |
tables_dex_pool |
Table | DEX pool state tracking | PostgreSQL | Medium |
tables_factory_uniswap |
Table | Factory + tables pattern | PostgreSQL | High |
tables_governance |
Table | Compound primary keys demo | PostgreSQL | Medium |
tables_token_supply |
Table | Global tables for supply tracking | PostgreSQL | Medium |
tables_registry_delete |
Table | Delete operations demo | PostgreSQL | Medium |
tables_view_calls |
Table | On-chain view call enrichment | PostgreSQL | Medium |
tables_cron_chainlink_price |
Table | Cron-triggered data fetching | PostgreSQL | Medium |
tables_cron_historical_sync |
Table | Historical cron replay | PostgreSQL | Medium |
tables_factory_cron |
Table | Factory + cron pattern | PostgreSQL | High |
To build locally you can just run cargo build in the root of the project. This will build everything for you as this is a workspace, including the GraphQL server binary.
Note: The first build may take longer as it needs to:
Subsequent builds use smart caching and will only rebuild components that have changed.
To build for prod you can run make prod_build this will build everything for you and optimise it for production.
you can run cargo fmt to format the code, rules have been mapped in the rustfmt.toml file.
Anyone is welcome to contribute to rindexer, feel free to look over the issues or open a new one if you have any new ideas or bugs you have found.
You can use the make commands to run the CLI commands locally, this is useful for testing and developing.
These are located in the cli folder > Makefile. It uses CURDIR to resolve the paths for you, so they should work
out of the box. The examples repo has a rindexer_demo_cli folder which you can modify (please do not commit any changes though)
or spin up a new no-code project using the make commands.
To release a new rindexer:
release/x.x.x branch depending on the next version numberNo open issues yet, or sync has not completed.