# 🦀 rindexer 🦀 > rindexer is a lighting-fast multi chain indexing solution written in Rust ## Docs - [Changelog](/docs/changelog): breaking: **Generated code uses `Arc` instead of `Arc`** — Rust-mode projects that call concrete-type methods (e.g. `get_inner_provider()`) through the generated provider binding will need to use the network-specific accessors (`get_ethereum_provider_cache()`, etc.) which still return the concrete type. After upgrading, run `rindexer codegen typings` to regenerate. - [0.39.0-beta - 14th April 2026](/docs/changelog): breaking: **Generated code uses `Arc` instead of `Arc`** — Rust-mode projects that call concrete-type methods (e.g. `get_inner_provider()`) through the generated provider binding will need to use the network-specific accessors (`get_ethereum_provider_cache()`, etc.) which still return the concrete type. After upgrading, run `rindexer codegen typings` to regenerate. - [0.38.0-beta - 10th April 2026](/docs/changelog): breaking: **Generated code uses `Arc` instead of `Arc`** — Rust-mode projects that call concrete-type methods (e.g. `get_inner_provider()`) through the generated provider binding will need to use the network-specific accessors (`get_ethereum_provider_cache()`, etc.) which still return the concrete type. After upgrading, run `rindexer codegen typings` to regenerate. - [0.37.2-beta - 1st April 2026](/docs/changelog): breaking: **Generated code uses `Arc` instead of `Arc`** — Rust-mode projects that call concrete-type methods (e.g. `get_inner_provider()`) through the generated provider binding will need to use the network-specific accessors (`get_ethereum_provider_cache()`, etc.) which still return the concrete type. After upgrading, run `rindexer codegen typings` to regenerate. - [0.37.1-beta - 26th March 2026](/docs/changelog): breaking: **Generated code uses `Arc` instead of `Arc`** — Rust-mode projects that call concrete-type methods (e.g. `get_inner_provider()`) through the generated provider binding will need to use the network-specific accessors (`get_ethereum_provider_cache()`, etc.) which still return the concrete type. After upgrading, run `rindexer codegen typings` to regenerate. - [0.37.0-beta - 24th Match 2026](/docs/changelog): breaking: **Generated code uses `Arc` instead of `Arc`** — Rust-mode projects that call concrete-type methods (e.g. `get_inner_provider()`) through the generated provider binding will need to use the network-specific accessors (`get_ethereum_provider_cache()`, etc.) which still return the concrete type. After upgrading, run `rindexer codegen typings` to regenerate. - [0.35.0-beta - 28th Janurary 2026](/docs/changelog): breaking: **Generated code uses `Arc` instead of `Arc`** — Rust-mode projects that call concrete-type methods (e.g. `get_inner_provider()`) through the generated provider binding will need to use the network-specific accessors (`get_ethereum_provider_cache()`, etc.) which still return the concrete type. After upgrading, run `rindexer codegen typings` to regenerate. - [0.34.0-beta - 23rd Janurary 2026](/docs/changelog): breaking: **Generated code uses `Arc` instead of `Arc`** — Rust-mode projects that call concrete-type methods (e.g. `get_inner_provider()`) through the generated provider binding will need to use the network-specific accessors (`get_ethereum_provider_cache()`, etc.) which still return the concrete type. After upgrading, run `rindexer codegen typings` to regenerate. - [0.33.0-beta - 21st Janurary 2026](/docs/changelog): breaking: **Generated code uses `Arc` instead of `Arc`** — Rust-mode projects that call concrete-type methods (e.g. `get_inner_provider()`) through the generated provider binding will need to use the network-specific accessors (`get_ethereum_provider_cache()`, etc.) which still return the concrete type. After upgrading, run `rindexer codegen typings` to regenerate. - [0.32.0-beta - 20th January 2026](/docs/changelog): breaking: **Generated code uses `Arc` instead of `Arc`** — Rust-mode projects that call concrete-type methods (e.g. `get_inner_provider()`) through the generated provider binding will need to use the network-specific accessors (`get_ethereum_provider_cache()`, etc.) which still return the concrete type. After upgrading, run `rindexer codegen typings` to regenerate. - [0.31.0-beta - 20th January 2026](/docs/changelog): breaking: **Generated code uses `Arc` instead of `Arc`** — Rust-mode projects that call concrete-type methods (e.g. `get_inner_provider()`) through the generated provider binding will need to use the network-specific accessors (`get_ethereum_provider_cache()`, etc.) which still return the concrete type. After upgrading, run `rindexer codegen typings` to regenerate. - [0.30.0-beta - 19th January 2026](/docs/changelog): breaking: **Generated code uses `Arc` instead of `Arc`** — Rust-mode projects that call concrete-type methods (e.g. `get_inner_provider()`) through the generated provider binding will need to use the network-specific accessors (`get_ethereum_provider_cache()`, etc.) which still return the concrete type. After upgrading, run `rindexer codegen typings` to regenerate. - [0.29.0-beta - 6th January 2026](/docs/changelog): breaking: **Generated code uses `Arc` instead of `Arc`** — Rust-mode projects that call concrete-type methods (e.g. `get_inner_provider()`) through the generated provider binding will need to use the network-specific accessors (`get_ethereum_provider_cache()`, etc.) which still return the concrete type. After upgrading, run `rindexer codegen typings` to regenerate. - [0.28.2-beta - 5th November 2025](/docs/changelog): breaking: **Generated code uses `Arc` instead of `Arc`** — Rust-mode projects that call concrete-type methods (e.g. `get_inner_provider()`) through the generated provider binding will need to use the network-specific accessors (`get_ethereum_provider_cache()`, etc.) which still return the concrete type. After upgrading, run `rindexer codegen typings` to regenerate. - [0.28.1-beta - 21st October 2025](/docs/changelog): breaking: **Generated code uses `Arc` instead of `Arc`** — Rust-mode projects that call concrete-type methods (e.g. `get_inner_provider()`) through the generated provider binding will need to use the network-specific accessors (`get_ethereum_provider_cache()`, etc.) which still return the concrete type. After upgrading, run `rindexer codegen typings` to regenerate. - [0.28.0-beta - 13th October 2025](/docs/changelog): breaking: **Generated code uses `Arc` instead of `Arc`** — Rust-mode projects that call concrete-type methods (e.g. `get_inner_provider()`) through the generated provider binding will need to use the network-specific accessors (`get_ethereum_provider_cache()`, etc.) which still return the concrete type. After upgrading, run `rindexer codegen typings` to regenerate. - [0.27.1-beta - 6th October 2025](/docs/changelog): breaking: **Generated code uses `Arc` instead of `Arc`** — Rust-mode projects that call concrete-type methods (e.g. `get_inner_provider()`) through the generated provider binding will need to use the network-specific accessors (`get_ethereum_provider_cache()`, etc.) which still return the concrete type. After upgrading, run `rindexer codegen typings` to regenerate. - [0.27.0-beta - 26th September 2025](/docs/changelog): breaking: **Generated code uses `Arc` instead of `Arc`** — Rust-mode projects that call concrete-type methods (e.g. `get_inner_provider()`) through the generated provider binding will need to use the network-specific accessors (`get_ethereum_provider_cache()`, etc.) which still return the concrete type. After upgrading, run `rindexer codegen typings` to regenerate. - [0.26.0-beta - 12th September 2025](/docs/changelog): breaking: **Generated code uses `Arc` instead of `Arc`** — Rust-mode projects that call concrete-type methods (e.g. `get_inner_provider()`) through the generated provider binding will need to use the network-specific accessors (`get_ethereum_provider_cache()`, etc.) which still return the concrete type. After upgrading, run `rindexer codegen typings` to regenerate. - [0.25.3-beta - 8th September 2025](/docs/changelog): breaking: **Generated code uses `Arc` instead of `Arc`** — Rust-mode projects that call concrete-type methods (e.g. `get_inner_provider()`) through the generated provider binding will need to use the network-specific accessors (`get_ethereum_provider_cache()`, etc.) which still return the concrete type. After upgrading, run `rindexer codegen typings` to regenerate. - [0.25.2-beta - 30th August 2025](/docs/changelog): breaking: **Generated code uses `Arc` instead of `Arc`** — Rust-mode projects that call concrete-type methods (e.g. `get_inner_provider()`) through the generated provider binding will need to use the network-specific accessors (`get_ethereum_provider_cache()`, etc.) which still return the concrete type. After upgrading, run `rindexer codegen typings` to regenerate. - [0.25.1-beta - 28th August 2025](/docs/changelog): breaking: **Generated code uses `Arc` instead of `Arc`** — Rust-mode projects that call concrete-type methods (e.g. `get_inner_provider()`) through the generated provider binding will need to use the network-specific accessors (`get_ethereum_provider_cache()`, etc.) which still return the concrete type. After upgrading, run `rindexer codegen typings` to regenerate. - [0.25.0-beta - 27th August 2025](/docs/changelog): breaking: **Generated code uses `Arc` instead of `Arc`** — Rust-mode projects that call concrete-type methods (e.g. `get_inner_provider()`) through the generated provider binding will need to use the network-specific accessors (`get_ethereum_provider_cache()`, etc.) which still return the concrete type. After upgrading, run `rindexer codegen typings` to regenerate. - [0.24.1-beta - 20th August 2025](/docs/changelog): breaking: **Generated code uses `Arc` instead of `Arc`** — Rust-mode projects that call concrete-type methods (e.g. `get_inner_provider()`) through the generated provider binding will need to use the network-specific accessors (`get_ethereum_provider_cache()`, etc.) which still return the concrete type. After upgrading, run `rindexer codegen typings` to regenerate. - [0.24.0-beta - 19th August 2025](/docs/changelog): breaking: **Generated code uses `Arc` instead of `Arc`** — Rust-mode projects that call concrete-type methods (e.g. `get_inner_provider()`) through the generated provider binding will need to use the network-specific accessors (`get_ethereum_provider_cache()`, etc.) which still return the concrete type. After upgrading, run `rindexer codegen typings` to regenerate. - [0.23.0-beta - 4th August 2025](/docs/changelog): breaking: **Generated code uses `Arc` instead of `Arc`** — Rust-mode projects that call concrete-type methods (e.g. `get_inner_provider()`) through the generated provider binding will need to use the network-specific accessors (`get_ethereum_provider_cache()`, etc.) which still return the concrete type. After upgrading, run `rindexer codegen typings` to regenerate. - [0.22.3-beta - 30th July 2025](/docs/changelog): breaking: **Generated code uses `Arc` instead of `Arc`** — Rust-mode projects that call concrete-type methods (e.g. `get_inner_provider()`) through the generated provider binding will need to use the network-specific accessors (`get_ethereum_provider_cache()`, etc.) which still return the concrete type. After upgrading, run `rindexer codegen typings` to regenerate. - [0.22.2-beta - 30th July 2025](/docs/changelog): breaking: **Generated code uses `Arc` instead of `Arc`** — Rust-mode projects that call concrete-type methods (e.g. `get_inner_provider()`) through the generated provider binding will need to use the network-specific accessors (`get_ethereum_provider_cache()`, etc.) which still return the concrete type. After upgrading, run `rindexer codegen typings` to regenerate. - [0.22.1-beta - 29th July 2025](/docs/changelog): breaking: **Generated code uses `Arc` instead of `Arc`** — Rust-mode projects that call concrete-type methods (e.g. `get_inner_provider()`) through the generated provider binding will need to use the network-specific accessors (`get_ethereum_provider_cache()`, etc.) which still return the concrete type. After upgrading, run `rindexer codegen typings` to regenerate. - [0.22.0-beta - 25th July 2025](/docs/changelog): breaking: **Generated code uses `Arc` instead of `Arc`** — Rust-mode projects that call concrete-type methods (e.g. `get_inner_provider()`) through the generated provider binding will need to use the network-specific accessors (`get_ethereum_provider_cache()`, etc.) which still return the concrete type. After upgrading, run `rindexer codegen typings` to regenerate. - [0.21.2-beta - 16th July 2025](/docs/changelog): breaking: **Generated code uses `Arc` instead of `Arc`** — Rust-mode projects that call concrete-type methods (e.g. `get_inner_provider()`) through the generated provider binding will need to use the network-specific accessors (`get_ethereum_provider_cache()`, etc.) which still return the concrete type. After upgrading, run `rindexer codegen typings` to regenerate. - [0.21.1-beta - 16th July 2025](/docs/changelog): breaking: **Generated code uses `Arc` instead of `Arc`** — Rust-mode projects that call concrete-type methods (e.g. `get_inner_provider()`) through the generated provider binding will need to use the network-specific accessors (`get_ethereum_provider_cache()`, etc.) which still return the concrete type. After upgrading, run `rindexer codegen typings` to regenerate. - [0.21.0-beta - 15th July 2025](/docs/changelog): breaking: **Generated code uses `Arc` instead of `Arc`** — Rust-mode projects that call concrete-type methods (e.g. `get_inner_provider()`) through the generated provider binding will need to use the network-specific accessors (`get_ethereum_provider_cache()`, etc.) which still return the concrete type. After upgrading, run `rindexer codegen typings` to regenerate. - [0.20.0-beta - 10th July 2025](/docs/changelog): breaking: **Generated code uses `Arc` instead of `Arc`** — Rust-mode projects that call concrete-type methods (e.g. `get_inner_provider()`) through the generated provider binding will need to use the network-specific accessors (`get_ethereum_provider_cache()`, etc.) which still return the concrete type. After upgrading, run `rindexer codegen typings` to regenerate. - [0.19.1-beta - 17th June 2025](/docs/changelog): breaking: **Generated code uses `Arc` instead of `Arc`** — Rust-mode projects that call concrete-type methods (e.g. `get_inner_provider()`) through the generated provider binding will need to use the network-specific accessors (`get_ethereum_provider_cache()`, etc.) which still return the concrete type. After upgrading, run `rindexer codegen typings` to regenerate. - [0.19.0-beta - 17th June 2025](/docs/changelog): breaking: **Generated code uses `Arc` instead of `Arc`** — Rust-mode projects that call concrete-type methods (e.g. `get_inner_provider()`) through the generated provider binding will need to use the network-specific accessors (`get_ethereum_provider_cache()`, etc.) which still return the concrete type. After upgrading, run `rindexer codegen typings` to regenerate. - [0.18.0-beta - 13th June 2025](/docs/changelog): breaking: **Generated code uses `Arc` instead of `Arc`** — Rust-mode projects that call concrete-type methods (e.g. `get_inner_provider()`) through the generated provider binding will need to use the network-specific accessors (`get_ethereum_provider_cache()`, etc.) which still return the concrete type. After upgrading, run `rindexer codegen typings` to regenerate. - [0.17.3-beta - 9th June 2025](/docs/changelog): breaking: **Generated code uses `Arc` instead of `Arc`** — Rust-mode projects that call concrete-type methods (e.g. `get_inner_provider()`) through the generated provider binding will need to use the network-specific accessors (`get_ethereum_provider_cache()`, etc.) which still return the concrete type. After upgrading, run `rindexer codegen typings` to regenerate. - [Shoutout](/docs/shoutout): Big big thanks to [Avara](https://avara.xyz/) who allowed me to finish this off in work time. - [Add](/docs/start-building/add): These commands allow you to through the CLI add elements to your YAML file. - [Codegen](/docs/start-building/codegen): You can generate a few different types of code when using rindexer codegen. - [Delete](/docs/start-building/delete): This allows you to delete data from the postgres database or csv files. This is useful if you want to start fresh and start indexing again or if you updated an ABI and want to drop the tables and start over. - [Health Monitoring](/docs/start-building/health-monitoring): Rindexer includes a comprehensive health monitoring system that provides real-time insights into the status of your indexing infrastructure. This built-in monitoring helps you ensure your indexers are running smoothly and quickly identify issues when they occur. - [Hot Reload](/docs/start-building/hot-reload): Rindexer supports hot-reloading your `rindexer.yaml` configuration without manually stopping and restarting the process. When enabled with the `--watch` flag, rindexer monitors your YAML file for changes, validates the new configuration, and automatically restarts with the updated settings. - [Historic indexing](/docs/start-building/live-indexing-and-historic): If you want to index only historic data between block ranges just put in the [start\_block](/docs/start-building/yaml-config/contracts#start_block) and [end\_block](/docs/start-building/yaml-config/contracts#end_block) in the YAML configuration file. This will index only the data between those blocks. - [Live indexing](/docs/start-building/live-indexing-and-historic): rindexer will save the last synced block for each contract in the database so it can pick up where it left off if stopped and started again. If you want to start fresh you can use the [delete](/docs/start-building/delete) command to drop all the data and start over. You can also use the [drop\_each\_run](/docs/start-building/yaml-config/storage#drop_each_run) option in the YAML configuration file to drop all the data for the indexer before starting. - [Historic and live indexing](/docs/start-building/live-indexing-and-historic): rindexer will save the last synced block for each contract in the database so it can pick up where it left off if stopped and started again. If you want to start fresh you can use the [delete](/docs/start-building/delete) command to drop all the data and start over. You can also use the [drop\_each\_run](/docs/start-building/yaml-config/storage#drop_each_run) option in the YAML configuration file to drop all the data for the indexer before starting. - [Prometheus Metrics](/docs/start-building/metrics): Rindexer exposes Prometheus metrics for production observability. These metrics help you monitor indexing performance, RPC health, database operations, and stream delivery in real-time. - [Phantom events](/docs/start-building/phantom): Phantom events enable you to add custom events or modify existing events for any smart contract. This feature allows you to extract any data you need from smart contracts without the constraints of on-chain modifications. - [Running](/docs/start-building/running): You can run the no-code project really easily with the CLI toolset. - [Log block-timestamps](/docs/start-building/timestamps): A log result in the JSON-RPC spec does not always expose the block timestamp, which means it can require another block lookup per each log to get the block timestamp. This is not efficient and can cause a big bottleneck in indexing. - [How we handle it](/docs/start-building/timestamps): But we want the best DX and so until all node implementation catch up, we have the following solutions. - [Extending supported chains](/docs/start-building/timestamps): But we want the best DX and so until all node implementation catch up, we have the following solutions. - [Config](/docs/start-building/yaml-config/config): More advanced configuration options for fine-tuning memory usage, event throughput, and more. Most of the time you will not need to adjust these values. - [Contracts](/docs/start-building/yaml-config/contracts): The list of contracts to index for this indexer. - [global](/docs/start-building/yaml-config/global): Global YAML. - [graphql](/docs/start-building/yaml-config/graphql): To define some graphql settings you can use the `graphql` section of the YAML configuration file. - [Overview of the YAML Configuration File](/docs/start-building/yaml-config): The YAML configuration file is the heart of your rindexer project. It defines the project's name, description, repository, and the contracts that will be used to index the data. This file is used to set up the project and configure the indexing tasks that will be performed. - [Native Transfers](/docs/start-building/yaml-config/native-transfers): A special opt-in configuration for indexing native token transfers such as "ETH", in the form of "ERC20"-like transfer events. - [Simple](/docs/start-building/yaml-config/native-transfers): This is **experimental** functionality which has not yet been extensively tested in production. - [Complex](/docs/start-building/yaml-config/native-transfers): This is **experimental** functionality which has not yet been extensively tested in production. - [networks](/docs/start-building/yaml-config/networks): Networks YAML config describes the networks you wish to enable. - [storage](/docs/start-building/yaml-config/storage): Storage YAML config describes the storage providers you wish to enable. - [Top level fields](/docs/start-building/yaml-config/top-level-fields): The top-level fields of the YAML configuration file. - [Custom Tables](/docs/start-building/tables): The Recommended Way to Build No-Code Indexers - [Cloudflare Queues](/docs/start-building/streams/cloudflare-queues): rindexer streams can be used without any other storage providers. It can also be used with storage providers. - [Streams](/docs/start-building/streams): rindexer streams can be used without any other storage providers. It can also be used with storage providers. - [Kafka](/docs/start-building/streams/kafka): Kafka streams do not work with windows from the CLI installation, it will panic if you try to use it with windows. If you are on windows and want to use kafka streams you should use the docker image. - [RabbitMQ](/docs/start-building/streams/rabbitmq): rindexer streams can be used without any other storage providers. It can also be used with storage providers. - [Redis Streams](/docs/start-building/streams/redis): rindexer streams can be used without any other storage providers. It can also be used with storage providers. - [SNS / SQS](/docs/start-building/streams/sns): rindexer streams can be used without any other storage providers. It can also be used with storage providers. - [Webhooks](/docs/start-building/streams/webhooks): rindexer streams can be used without any other storage providers. It can also be used with storage providers. - [Ethers to Alloy Migration Guide](/docs/start-building/rust-project-deep-dive/ethers-alloy-migration): Rindexer released a breaking change for all Rust projects, which internally migrates from ethers to alloy. - [Rust Project Deep Dive](/docs/start-building/rust-project-deep-dive): As explained in the [rust](/docs/start-building/project-types/rust-project) project type, the Rust project is a project that is meant to be changed and extended. The template gives you a starting point, and you may choose to run the indexer differently, use your own custom logic, do http requests, do on chain lookups or anything else you can think of. rindexer is also a framework that can be used to build your own custom indexer and not just a no-code indexer. - [Indexers](/docs/start-building/rust-project-deep-dive/indexers): When creating a new rust project with rindexer it will create you a indexers folder, this is where you will write your custom logic for the indexer. This is where you will do all your indexing logic, you can do anything you want in here, you can do http requests, on chain lookups, custom logic, custom DBs, anything you can think of. rindexer gives you the foundations and also baked in extendability. Rust enforces a strong type system, all logs will be streamed to you just focus on the logic you want. - [Typings](/docs/start-building/rust-project-deep-dive/typings): When creating a new rust project with rindexer it will create you a typings folder, this has pretty advanced typings for all your contracts, events and network information. This is generated from the ABIs you provide in the YAML configuration file. This folder is not meant to be manually edited and should always be generated using codegen. - [Project Types](/docs/start-building/project-types): rindexer has two types of projects you can create: - [No-code Project](/docs/start-building/project-types/no-code-project): The No-code Project type in rindexer is designed for users who wish to quickly set up and deploy indexing solutions without delving into the complexities of coding. This project type leverages a YAML-based configuration that guides you through specifying what data to index and how to index it. It's an ideal solution for those who need to implement standard indexing tasks, or for developers who prefer to focus more on application logic than on the intricacies of the indexing process. - [Rust Project](/docs/start-building/project-types/rust-project): Requires you to have rust installed on your machine. You can install rust by following the instructions [here](https://www.rust-lang.org/tools/install). - [Create New Project](/docs/start-building/create-new-project): rindexer provides two modes for creating new projects, each optimized for different use cases and infrastructure setups. - [Create New Project - Reth Mode](/docs/start-building/create-new-project/reth-mode): Reth mode requires running a Reth archive node and is intended for advanced users. If you're just getting started, you should be using [Standard Mode](/docs/start-building/create-new-project/standard) instead. - [Create New Project - Standard Mode](/docs/start-building/create-new-project/standard): Make sure you have the CLI installed before starting a new project. You can find the installation instructions [here](/docs/introduction/installation). - [Discord](/docs/start-building/chatbots/discord): Discord is one of the most popular chat platforms, and is great to build bots and notifications when things happen on chain. - [Chatbots](/docs/start-building/chatbots): rindexer Chatbots can be used without any other storage providers. It can also be used with storage providers. - [OpsGenie](/docs/start-building/chatbots/opsgenie): OpsGenie is an alert and incident management platform by Atlassian. rindexer can create OpsGenie alerts when on-chain events occur. - [PagerDuty](/docs/start-building/chatbots/pagerduty): PagerDuty is an incident management platform that helps teams detect and respond to issues in real-time. rindexer can trigger PagerDuty incidents when on-chain events occur. - [Slack](/docs/start-building/chatbots/slack): Slack is one of the most popular chat platforms, and is great to build bots and notifications when things happen on chain. - [Telegram](/docs/start-building/chatbots/telegram): Telegram is one of the most popular chat platforms, and is great to build bots and notifications when things happen on chain. - [Twilio](/docs/start-building/chatbots/twilio): Twilio SMS allows you to send SMS notifications to phone numbers when events happen on chain. - [rindexer CLI](/docs/references/cli): rindexer is a CLI first tool allowing you to do everything you need to do with rindexer. - [RPC node providers](/docs/references/rpc-node-providers): RPC providers speed has a direct link to how fast you can index data, providers who try to return data as fast as possible are the best providers to have. With RPC providers the fastest providers are ones which return you the to and from block ranges even if you supply an out of range block request. This means you can extract that data from the error message and use it to get the the biggest depth of logs out of a single request. The slower providers give you a max block range and this means you have to crawl through the blocks to get the logs even if no data is in the blocks, this is a lot slower. - [Installation](/docs/introduction/installation): rindexer installation process is simple and can be done with a few steps. - [Other indexing tools](/docs/introduction/other-indexing-tools): rindexer is not a tool to take market share from other indexing tools, it is a tool to provide more options for developers to index data on EVM chains. rindexer allows you to index data with no learning curve and no-code if you pick that option. The current indexing tools are mainly JavaScript based alongside require code to be written to use them, rindexer is a Rust based indexing tool and has no-code features built into it. Diversity is very important in the industry and rindexer is here to provide more options for developers to index data on EVM chains. rindexer is not a company or a business it is an open-source project and is here to help the industry move forward. - [What is rindexer ?](/docs/introduction/what-is-rindexer): Note rindexer is brand new and actively under development, things will change and bugs will exist - if you find any bugs or have any feature requests please open an issue on [github](https://github.com/joshstevens19/rindexer/issues). - [What can I use rindexer for?](/docs/introduction/what-is-rindexer): Note rindexer is brand new and actively under development, things will change and bugs will exist - if you find any bugs or have any feature requests please open an issue on [github](https://github.com/joshstevens19/rindexer/issues). - [What networks do you support?](/docs/introduction/what-is-rindexer): Note rindexer is brand new and actively under development, things will change and bugs will exist - if you find any bugs or have any feature requests please open an issue on [github](https://github.com/joshstevens19/rindexer/issues). - [Why rindexer?](/docs/introduction/why-rindexer): Indexing data on EVM chains is crucial for developers creating dApps or just general data reporting. Building the necessary indexing infrastructure, however, presents significant challenges. It is complex, time-consuming, and can divert focus from the task at hand and in a lot of cases even stop the task from moving forward. As applications become more complex with more advanced features, the need for robust, easily extendable indexing solutions grows. Some great indexing tools exist already mainly all in JavaScript so adding a rust based indexer tool creates more indexing options which is important for the industry. - [AWS](/docs/deploying/aws): Ensure that you have the following installed and configured: - [GCP](/docs/deploying/gcp): Ensure that you have the following installed and configured: - [Railway](/docs/deploying/railway): [![Deploy on Railway](https://railway.app/button.svg)](https://railway.app/template/Rqrlcf?referralCode=eD4laT) - [Using Reth Execution Extensions (ExEx)](/docs/advanced/using-reth-exex): Reth Execution Extensions (ExEx) is a powerful framework introduced by Reth for building high-performance off-chain infrastructure as post-execution hooks. rindexer leverages ExEx to provide superior indexing performance and native reorg handling. - [Direct SQL](/docs/accessing-data/direct-sql): If you are wanting to access the data directly from the database you can use a tool like DBeaver to connect to the database. you can download it [here](https://dbeaver.io/download/) and is supported on all platforms. - [GraphQL](/docs/accessing-data/graphql): GraphQL is a query language for your API, and a server-side runtime for executing queries using a type system you define for your data.