RPC Plane
Available now · Free Source available · ELv2 Rust · single binary

The self-hosted
Solana RPC proxy.

Bring your own provider keys. The RPC Plane binary adds intelligent multi-provider routing, slot-aware health scoring, circuit-breaker failover, write broadcast, and HTTP/3 — in front of Helius, QuickNode, Triton, Alchemy, and any JSON-RPC endpoint. One binary, one config file, no databases.

# Linux / macOS
curl -sSf https://rpcplane.dev/install.sh | sh
Quick start → Read the docs No signup. No API keys from us. No telemetry by default.
Drop-in

One URL change.
Everything gets better.

Swap your provider endpoint for http://localhost:9400. That's the whole integration. No SDK changes, no refactoring, no new dependencies — just failover, health scoring, slot-drift detection, and HTTP/3 on top of the providers you already pay for.

  • Speaks standard Solana JSON-RPC — solana-web3.js, Anchor, the CLI, and bots work unchanged.
  • Runs as a sidecar next to your service. No man-in-the-middle, no TLS interception, no data custody.
  • Sub-millisecond routing overhead — health scores are pre-computed, no I/O in the hot path.
# before
const conn = new Connection(
  "https://mainnet.helius-rpc.com/?api-key=..."
);

# after — one line
const conn = new Connection(
  "http://localhost:9400"
);
The proxy fans out to every provider in your config — with your keys, from your machine.
What the binary does

Reliability features,
built for Solana's semantics.

Everything below ships in the free binary. Items marked coming soon are in active development.

Intelligent routing

Each read goes to the healthiest provider, scored in real time on latency, error rate, and slot freshness. Not round-robin, not random — a live ranking.

Automatic failover

A per-provider circuit breaker opens on failure in under a second, probes for recovery, and resumes traffic automatically. No on-call rotation, no endpoint swaps at 2am.

Slot-aware health scoring

Continuously tracks each provider's slot height against network tip. A provider can return HTTP 200 and still be 14 slots behind — RPC Plane sees it and deprioritizes it.

Slot-drift detection

At ~400ms slot times, staleness is measured in fractions of a second. Drifting nodes are demoted before your application ever reads stale data from them.

Write broadcast

sendTransaction fans out to every healthy provider in parallel — the transaction reaches a leader through whichever path is fastest, maximizing landing probability.

HTTP/3 bridging

Your app stays on HTTP/1.1. The proxy speaks HTTP/3 (QUIC) to providers that support it — lower connection overhead and better p99, with zero client changes.

Prometheus metrics

An exporter on :9401/metrics publishes health scores, slot drift, circuit state, failover counts, and request durations — scrape it straight into Grafana.

Hot config reload

Edit rpc-plane.toml and changes apply within ~2 seconds — add a provider, retune routing, flip HTTP/3 — no restart, no dropped connections.

Zero infrastructure

A single statically linked binary. No Postgres, no Redis, no queues, no orchestration. Drop it in a container or run it beside your service.

Cross-provider validation

Coming soon

Detect when providers disagree on state — same request, divergent answers — route to the freshest and flag the stale one.

Commitment-aware routing

Coming soon

Understands processed / confirmed / finalized and verifies providers actually respect the commitment level you asked for.

Cost-aware routing

Coming soon

Routes reads to the cheapest healthy provider per method and tracks credit burn. Compare provider rates →

Routing strategies

Pick how reads are dispatched.

Set one line in your config. Writes always broadcast to every healthy provider regardless of strategy.

default
best_score
Always route reads to the highest-scoring healthy provider.
probabilistic
weighted_random
Probabilistic selection by configured weight × current health score — spreads load so no single key trips its rate limit.
ordered
failover_ordered
Try providers in config order; skip open circuits. Predictable primary/secondary behaviour.
parallel
parallel_race
Send to every healthy provider, return the fastest valid success. Lowest latency at higher request cost.
Free-tier maxxing

Five providers.
Zero dollars a month.

Stack the free tiers of Helius, QuickNode, and Alchemy with the two keyless public endpoints, point them all at RPC Plane, and weighted_random spreads traffic so no single key ever hits its limit. When one rate-limits, the circuit opens and reopens within seconds. Production-grade redundancy before you can justify a paid plan.

# five providers, $0/mo
api.mainnet-beta.solana.com   # no key
rpc.ankr.com/solana           # no key
Helius     free tier
QuickNode  free tier
Alchemy    free tier

[routing]
strategy = "weighted_random"
circuit_cooldown_secs = 2
Quick start

Three commands.
No signup, just a binary.

1Install
# Linux / macOS
curl -sSf https://rpcplane.dev/install.sh | sh
Or GitHub Releases · cargo install · Docker.
2Configure
rpc-plane init
# writes rpc-plane.toml with
# every option and its default
Add your provider URLs. Reference secrets with ${VAR}.
3Run
rpc-plane run
# proxy on :9400
# metrics on :9401/metrics
Point your app at http://localhost:9400 — done.
$ rpc-plane statuslive provider health
  NAME        SCORE          SLOT   DRIFT     LATENCY  CIRCUIT
  --------  -------  ------------  ------  ----------  -------
  provider-a  0.912   341892471       0      23.4ms     closed
  provider-b  0.841   341892469       2      31.1ms     closed
  provider-c  0.000           —       —           —     open
Linux
x86_64 · aarch64
macOS
x86_64 · arm64
Docker
ghcr.io/rpcplane
Source
cargo install
Where it fits

The binary is the foundation.

Run it free forever. Add hosted visibility and zero-ops on top when you need them — same routing engine throughout.

FAQ

Common questions

Is the binary free?

Yes — free and source-available under the Elastic License 2.0. No per-request fees, no request or provider limits.

Does it store my provider keys?

No. The binary runs on your machine and talks to your providers directly. No data custody; nothing leaves your infrastructure unless you opt in to the hosted dashboard.

Do I have to change my code?

No. Point your client at http://localhost:9400. Standard JSON-RPC means solana-web3.js, Anchor, the CLI, and bots all work unchanged.

Which providers work?

Any HTTP JSON-RPC Solana endpoint — Helius, QuickNode, Triton, Alchemy, Chainstack, the public endpoint, and your own validators.

Is it production ready?

Yes. Single Rust binary, sub-millisecond routing overhead, Prometheus metrics, hot reload, per-provider circuit breakers. Run it as a sidecar.

Does it work for trading bots?

Yes — write broadcast plus slot-drift demotion is built for landing transactions before the slot closes. See more →

Install the binary today.

Free, source-available, drop-in. One config file, one URL change.