Infrastructure
Triton and the infrastructure tooling
What sits beyond the RPC — streams, the historical archive, indexes, transaction landing — and when you need each one.
An RPC answers questions one at a time: "how much does this account hold?", "what happened to this signature?". Nearly everything a project needs in its first month is that. But there are four things an RPC does badly or not at all, and it pays to know their names before reinventing them by hand:
| You need | Not an RPC | The tool |
|---|---|---|
| To know the moment an account or program changes | Polling getAccountInfo every second |
A stream (gRPC or WebSocket) |
| To read the past: every transaction of a wallet, everything your program ever did | Iterating blocks backwards | A historical archive or an indexer |
| To query by a field that is not the address (every token of an owner, every market with X) | getProgramAccounts with filters, which falls over with size |
An index |
| Your transaction to land in the next slot when the network is busy | sendTransaction to a shared RPC |
A landing engine with direct-to-leader forwarding |
The Triton One stack
Triton One runs bare-metal RPC for Solana (also Sui and Monad) and maintains Project Yellowstone, the open-source toolset half the ecosystem uses for streams. What they document at docs.triton.one:
| Product | What it is | When you use it |
|---|---|---|
| RPC (core features) | JSON-RPC with GeoDNS routing, failover and per-key rate limits | Day one. It is what you configured on the previous page |
| Dragon's Mouth (gRPC) | gRPC subscriptions via Geyser: accounts, transactions, slots, blocks, with server-side filters | A live feed, a bot, your own indexer. The de facto standard: nearly every Solana indexer consumes this |
| Whirligig (WebSockets) | The WebSocket *Subscribe methods, served on top of Dragon's Mouth |
What createSolanaRpcSubscriptions uses from the browser |
| Fumarole (reliable streams) | gRPC with gap-free reconnect: if your consumer dies, it resumes where it left off | When a missed event costs money (payments, liquidations) |
| Old Faithful (historical archive) | The complete ledger from genesis, in an open format you can host yourself | Reading the past with no age limit. Superbank is the millisecond-queryable version Triton hosts |
| Cloudbreak (custom indexes) | Indexes created automatically from your query patterns | When getProgramAccounts starts timing out |
| Vixen (parsing framework) | A Rust framework for parsing Yellowstone streams into typed structs | Writing a serious indexer without decoding bytes by hand |
| Cascade (transaction handling) | A transaction-sending engine isolated from RPC traffic, with direct-to-leader forwarding | When "the transaction does not land" during congestion |
| Riptide (docs) · Shred Streaming (docs) · Preconfirmations (gRPC) | Data before the block is confirmed: raw shreds, pre-confirmations | Latency trading. Not for a project that is starting |
For a project that is starting: RPC + Whirligig cover 90%. Dragon's Mouth when you need a live feed on the server side. The rest, when the problem shows up with a name.
Price. Triton is pay-as-you-go with no free tier: a minimum deposit of US$125 (valid 12 months, every product included) and then US$0.08/GB plus US$10 per million calls. Per-key rate limits are at docs.triton.one/…/rate-tiers. Teams in Superteam Argentina's programmes get a key through the mentors — see the previous page.
The same map at other providers
| You need | Triton | Helius | QuickNode | Others |
|---|---|---|---|---|
| RPC | RPC | RPC | RPC | FluxRPC, the public RPC (for trying things only) |
| gRPC stream | Dragon's Mouth | LaserStream (gRPC) | Yellowstone gRPC add-on | Any node running the Yellowstone plugin |
| WebSockets | Whirligig | Enhanced WebSockets | WebSockets | — |
| History / assets | Old Faithful, Superbank | DAS API (getAsset, getAssetsByOwner, cNFTs) |
DAS add-on | Metaplex DAS is the standard everyone implements |
| Events to your backend | Fumarole | Webhooks | Streams / QuickAlerts | — |
| Custom indexes | Cloudbreak | — | — | Substreams, your own indexer with Vixen |
| Transaction landing | Cascade | Sender / staked connections | — | Jito (bundles, tips), sendTransaction with a priority fee |
| Parsing program data | Vixen | Enhanced Transactions API | — | Codama generates decoders from the IDL |
Two things worth knowing when choosing:
- DAS is a Metaplex standard, not one provider's product. If you use compressed NFTs or want "every asset in this wallet" in one call, you need an RPC that implements it. Not every entry plan includes it: ask first.
- Yellowstone is open source. Dragon's Mouth, Old Faithful, Vixen and Fumarole are at github.com/rpcpool. If one day you need to run your own node with streams, it is the same plugin the providers use.
Everything else that gets called "infrastructure"
| For | Tool | Note |
|---|---|---|
| A multisig for the upgrade authority and the treasury | Squads | Before mainnet, not after |
| Private state / confidential compute | Arcium | MPC; still evolving, read the current status |
| Ephemeral rollups for games and latency | MagicBlock | State that lives off-chain and settles on it |
| State compression (ZK compression) | Light Protocol | Accounts cheaper by orders of magnitude; API via Helius (Photon) |
| Signing without holding keys | Turnkey, Privy | See the wallets page |
| Gasless | Kora | See the wallets page |
| Verifiable builds | solana-verifiable-build | So the deployed binary is the one in the repo |