Practical overview
When it fits
Use Erpc when an application needs a controllable RPC gateway between its clients and multiple EVM or Solana endpoints, especially for read-heavy traffic or when upstream resilience and cache behavior need to be managed centrally.
Who it is for
- Teams operating EVM or Solana applications that need a unified layer in front of RPC providers or their own nodes.
- Operators handling read-heavy workloads such as data indexing or high-load frontends.
- Developers who want to configure upstream selection, caching, request limits or response-integrity checks.
Documented uses
- Route application RPC traffic across multiple upstream providers or nodes.
- Continue routing around unhealthy endpoints with retries, failover and circuit breakers.
- Cache eligible reads, including reorganization-aware EVM data and configured SVM data.
- Compare upstream responses to enforce consensus and identify stale or disagreeing nodes.
- Manage rate limits, compute-unit budgets and provider selection policies.
Requirements & limits
The project is an open-source, self-hosted server repository licensed under Apache-2.0. The README documents starting an instance with npx or Docker.
- Erpc is infrastructure that operators place between applications and RPC services; it is not a wallet or explorer.
- EVM and SVM have distinct cache and finality behavior, and Solana networks require explicit configuration.
- The README positions the quick-start setup for development and testing and recommends dedicated premium providers and advanced failover settings for production.
- Available controls include hourly or daily rate limits, per-upstream compute-unit budgets, selection policies, consensus checks and smart batching.
Check current requirements in the official documentation. Source-based guidance does not mean OpenViST has run or independently tested this project.
Start eRPC with Docker and send an EVM JSON-RPC request
Run a local eRPC instance using the documented default setup and submit an EVM request.
Before you start
- Docker is available.
- The example uses the instance at localhost:4000.
Steps
Start eRPC with the command below.
docker run -p 4000:4000 ghcr.io/erpc/erpcSend the example request to
http://localhost:4000/main/evm/42161with methodeth_getBlockByNumber, params["latest", false], and JSON-RPC version2.0.Use the returned response from the local eRPC instance.
Expected outcome
A local eRPC instance is available on port 4000, and the example EVM JSON-RPC request is sent to it.
Guide limitations
- The README describes this quick-start setup as suitable for development and testing; production use should add dedicated premium providers and advanced failover settings.
- The shown request targets chain ID 42161 and requests the latest block; no response result is specified.
Configure and start eRPC with one EVM upstream
Create a minimal YAML configuration for one EVM upstream and start eRPC with that configuration.
Before you start
- An Alchemy API key for the example endpoint.
- Docker, or Node.js 18+ when using the documented npx CLI.
Steps
Create
erpc.yamlin the current directory withlogLevel: infoand a project with idmainand an upstream endpointhttps://eth-mainnet.g.alchemy.com/v2/YOUR_API_KEY.Start eRPC with Docker by mounting the file at
/erpc.yamland mapping ports 4000 and 4001, or run the command below.npx @erpc-cloud/cli start ./erpc.yamlSend a JSON-RPC request to
http://localhost:4000/main/evm/1, such as the documentedeth_blockNumberrequest.
Expected outcome
eRPC starts with the configured `main` project and exposes JSON-RPC traffic on port 4000; the documented request is directed to the configured instance.
Guide limitations
- The example configuration contains a placeholder API key that must be replaced.
- The documentation identifies port 4001 as the Prometheus metrics port; the example does not configure or demonstrate metrics collection.
Sources & review
Source record details
- Source availability
- Active
- Sources checked
- 9 October 2026
- Original website title
- erpc/erpc · Official homepage title · retained in its source language

