Skip to content

Guide

Solana clients

Three implementations and a fourth thing people call a client, why an RPC node is a different job from a validator, and why getVersion cannot tell you which one you are talking to.

ClientsSolanaUpdated 16 August 2026

Three implementations, and a fourth thing people call a client

Agave
The descendant of the original validator software, now stewarded by Anza. Still the majority of the network and still what most operators run.
Firedancer
A from-scratch implementation in C, by Jump Crypto, built for throughput. The point of it is the same as Ethereum’s five clients: a second implementation that does not share a codebase and therefore does not share bugs.
Frankendancer
The hybrid that got there first — Firedancer’s networking layer in front of Agave’s runtime and consensus. It let operators take the performance work without waiting for a complete second implementation, and it is why the transition has been gradual rather than a flag day.
Jito-Solana
An Agave fork adding MEV auction and tip distribution. Widely run, but not a separate implementation — a bug in Agave is a bug in Jito-Solana, so it does not contribute to client diversity even though it appears as a distinct name in operator surveys.

Serving RPC is a separate job from validating

An RPC node is a validator with voting turned off and the full RPC API turned on, and it is materially more expensive than a voting validator — more memory, more disk, and account indexes a validator does not build. Sizing one from validator requirements is the mistake that produces a node permanently behind the cluster; running a Solana RPC node has the numbers.

[these RPC options] are passed to the Agave client
Firedancer documentation, on the [rpc] configuration section, read 2026-08-16 from docs.firedancer.io

So the second implementation is a consensus and networking story rather than an RPC one. If what you care about is the endpoint your application calls, the relevant question is still which solana-core version is answering it.

What getVersion can and cannot tell you

Solana’s equivalent of web3_clientVersion returns two fields, and the second is the more interesting one:

curl -s https://api.mainnet-beta.solana.com \
  -H 'content-type: application/json' \
  -d '{"jsonrpc":"2.0","id":1,"method":"getVersion"}'
{"jsonrpc":"2.0","result":{"feature-set":565236538,"solana-core":"4.2.0"},"id":1}
solana-core — the version, not the implementation
Agave reports one, and so do the Firedancer variants, which build Agave components. The RPC cannot tell you which implementation is behind it, and nothing on this site pretends otherwise.
feature-set — which rules the binary knows about
An identifier for the set of protocol features the running build carries. Two nodes on one version with different feature sets are running the same code with different features compiled in, which a version string alone would hide.

No endpoint has answered the question yet.

Client software is read from web3_clientVersion and getVersion, which every endpoint is asked on a fifteen-minute cycle. This fills in as answers arrive.

If you are choosing between endpoints rather than running one, the Solana rankings measure what these actually do, and the method matrix covers which of them answer what.