frozen mainnet · dedicated environment
Solana mainnet,
paused on a frame.
Replay boots a patched Solana validator from any mainnet snapshot, advances it slot by slot, splices transactions into the stream, patches accounts, deploys programs — and answers every read with full JSON-RPC, WebSocket, and Geyser. It's the closest thing to a time machine for the Solana state machine.
replay-us-east
ActiveUS East · Pro · agave v4.0.0
Validator ready at slot 418,908,412
uptime 48m 16s
advanced 2 slots since boot
boot point of the local fork
RPC accepting queries
JSON-RPC accepting queries
Pick any moment. Be inside it in seconds.
One click on a slot, one click on Start. You are now Solana mainnet at that exact frame, with no other tenants.
Snapshots stream in parallel — cached ones come up in seconds, uncached ones in a few minutes. Full, or full + incremental. Pick the agave version. Pick a Geyser plugin (or none). The validator that comes up is yours, on dedicated hardware, in the region you chose.
replay-us-eastActive
US East · Pro · agave v4.0.0
Boot
Pick a snapshot and start the local replay validator.
Validator ready at slot 418,908,412
uptime 48m 16s
- Download
- Boot
- Extract
- Index
- Ready
advanced 2 slots since boot
boot point of the local fork
RPC accepting queries
JSON-RPC accepting queries
Boot From Snapshot
Select a snapshot slot to boot the replay validator
- Cached
418,908,370
27s ago · 84.2 GB
- Cached
418,876,800
9m ago · 84.1 GB
- Cached
418,832,500
32m ago · 83.9 GB
- Stream
418,791,200
1h ago · 83.7 GB
- Stream
418,733,400
2h ago · 83.5 GB
Geyser plugin
Optional. Loads a Solana Geyser plugin alongside the validator for this boot. Pick a bundled preset, upload your own .so + config.json, or leave off for a vanilla validator.
vanilla validator, JSON-RPC + WebSocket only
bundled preset · binds gRPC on host:10000
your .so + config.json · port 10000 forwarded as-is
Validator is currently running
Booting will stop the current validator and rebuild replay state from the selected snapshot.
Inspect every account at that exact slot.
USDC. Jupiter. Your wallet. The Raydium AMM that broke at 9pm. Open the address, see the bank's actual answer.
The sidebar is your production address book — quick-add chips for the programs you'll always need, paste-anywhere input for the ones you won't. The detail panel reads the bank: owner, balance, data size, rent epoch, raw bytes. Mutate lamports, owner, data, or executable in-place — every patch is labeled, and the moment one lands the environment flips to a labeled local fork. Re-boot to return to canonical mainnet.
replay-us-eastActive
US East · Pro · agave v4.0.0
Accounts
Inspect, mutate, and deploy programs to accounts on the local fork.
Validator ready at slot 418,908,412
uptime 48m 16s
- Download
- Boot
- Extract
- Index
- Ready
advanced 2 slots since boot
boot point of the local fork
RPC accepting queries
JSON-RPC accepting queries
Tokenkeg…623VQ5DA
ProgramTokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA
Owner
BPFLoader2111111111111111111111111111111111
5,678,237,313 lamports
134,080 bytes
u64::MAX sentinel — never charged
Account Data
134,080 bytes
00000000 7f 45 4c 46 02 01 01 00 00 00 00 00 00 00 00 00 .ELF........ 00000010 03 00 f7 00 01 00 00 00 d8 f9 00 00 00 00 00 00 ............ 00000020 40 00 00 00 00 00 00 00 80 09 02 00 00 00 00 00 @........... 00000030 00 00 00 00 40 00 38 00 04 00 40 00 09 00 08 00 ....@.8...@.. 00000040 01 00 00 00 05 00 00 00 20 01 00 00 00 00 00 00 ............ 00000050 20 01 00 00 00 00 00 00 20 01 00 00 00 00 00 00 ............ 00000060 60 b9 01 00 00 00 00 00 60 b9 01 00 00 00 00 00 '.......'..... 00000070 00 10 00 00 00 00 00 00 01 00 00 00 06 00 00 00 ............
…133,568 more bytes (download for full data)
Actions
Mutations are applied directly to the local fork — they bypass normal Solana authority. Re-boot the snapshot to revert.
Splice your transactions into the canonical stream.
Append at block_end. Inject after a known signature. Replace the transaction at slot index 14.
Eight anchors. One queue. Run advance and canonical mainnet blocks stream in, with your transactions woven in at the slot you asked for. The validator walks forward block-by-block — canonical, then yours, then canonical again — exactly the order it applies them. Cancel any time and inspect what landed.
replay-us-eastActive
US East · Pro · agave v4.0.0
Advance
Replay mainnet blocks into the local validator, or send a custom transaction.
Validator ready at slot 418,908,412
uptime 48m 16s
- Download
- Boot
- Extract
- Index
- Ready
advanced 2 slots since boot
boot point of the local fork
RPC accepting queries
JSON-RPC accepting queries
Advance Validator
Move the replay validator forward, with optional custom splices.
Current Slot
418,908,412
Shred Version
50093
Target Slot
Inject operator-supplied VersionedTransactions into upstream blocks at chosen anchor points. Each splice targets a single slot in (current, target].
block_end
signed by WALLET · JUP6Lk…NyVTaV4
after_signature · 5fH8wK…XzQ7P
replace LP token amount · 3pNa6w…rTzYk
replace_index · ix #14
modified signer + amount · 8mRkLp…wQz3D
Every block. Every transaction. Including the one you added.
Walk the chain forward from your boot point. 1,446 txs in a block, your splice at index 10, the fee at 1,005,000 lamports.
Filter by signature or any pubkey in the tx — recipient, signer, program. The list reflects your replay chain, not upstream mainnet, so the tx you spliced in at slot 418,908,420 sits exactly where you put it. Click any row for the decoded instructions, log messages, and pre/post balances.
replay-us-eastActive
US East · Pro · agave v4.0.0
Blocks
Browse confirmed blocks, expand any transaction, and see the exact pre/post account state diff the validator committed.
Validator ready at slot 418,908,412
uptime 48m 16s
- Download
- Boot
- Extract
- Index
- Ready
advanced 2 slots since boot
boot point of the local fork
RPC accepting queries
JSON-RPC accepting queries
Slot
Search by signature
Slot
418,908,420
Parent slot
418,908,419
Block height
397,000,050
Transactions
1,255 + 191 err / 1,446
Blockhash
# FykHTQkha8t7eHDAdLYxCKpEqPAwCuHr18wuek16GFX8 ⧉
block time: 5/17/2026, 6:14:02 PM
- 0PMXyVcmpdT34Z9YfbvTUJ5JW5YAKvyCGNNjqZrDEnTKUF6DR4vxefWDQzLVdAJBHNW2VS4v1bEzMX4ftDDxzYYgLfee 5,000 λ
- 15cBbxrnkszXXoZy8pvCkmxhNHJ9CzJuYzibJLQcscFwn6r2aCUQ7ztnoZHTNhiiu72EZ4dqso4koa6CioT2JbHnSfee 5,000 λ
- 2RGTr4gD1dPRX2MzRZMTytFZuy8XVXm8Gcc4DgdpLWe9rwAV9D6kdksbKzUv38gsad9rvP7c1KVXimGMeHXRpE5yfee 5,000 λ
- 34Lc5tED7tKtn7wkqPRP4i4RaG9ArzRCafq1skc2r96GC42ZEpRajqmM3HUbD5R5K5rgazLMBqUAiUZc4MZSqxds8Sfee 5,000 λ
- 45TceA34JWotUCEeSAx9ewELmo5pAqTinCWwCjLAqYNR9s4YpKwdGHQ2DWTNTV3fzXBmfnz1gAdD347fui6JRFf3gfee 5,000 λ
- 53XapaApeV8qTa1CYVfKj6DMseGXubjnPm4AzUwY17XYxSWdYjVxd57Tmuj6EK3UH9ShNngiaWeGv36VLjwc2g5Dufee 15,000 λ
- 62HWPNAH1ijDweyB8aNs1LEwdqA2QqGoFbWMW3ZhxsFdQ6lZfL4a1xE7uLzHQYgLWSUM6xBhRuxSExbPCuMmp61aFWfee 15,000 λ
- 77PYeKVVBBTvWyWEsHLi1hBe9wNRm85Z91dKkYZaPsQamTad1f1At3FzGLgA9A9mkGgT2zXNKZ145HiAmerxUvYCfee 5,000 λ
- 82Yqf3xZBbCgX9p4z5UNyMR1vGQK2tPwL8aH7eXjK3mNzBdT6cRY1uV4sP9tQrLnA8mEhKjF2WxBpDcZ4NHsTqVRyfee 5,000 λ
- 96KqRpA8WHbMyL2zXg3vN1eFt5cBdQ7uPrJ9oS4iH8eWxKj2nM3sV1aB7tY5cZqL4wRhUfPxN6yE9oDmCb3JsKtVefee 5,000 λ
- 104ApAhJaV1AiHziFgPHXxgzN7AP8omaWBFfL9E6hUPz8h2im6Wz1MFpzrvJAT9SUzkaMyscS1N5EcJmq75UboiDDXoursfee 1,005,000 λ
Down to the byte. Every account it touched.
Click any committed tx and the State diff tab shows the exact pre/post account state the validator wrote — lamports, owner, data — with a hex view that highlights the bytes that changed.
Every non-vote transaction your replay session executes is captured as a state-diff fixture: writable rows side-by-side with role-only rows, lamport movements stacked, owner changes inline, and a hex diff for any account whose data moved. Identical wire shape on the API (GET /fixtures/tx/:sig), the MCP tool (replay_fixture_get), and the k256-replay CLI (k256-replay diff <sig>) — drop the same signature into any one and you'll see the same diff. Iterate fearlessly: clear the cache, advance again, diff again. A 5 GiB FIFO bound and a process-lifetime evicted/oversized/cleared counter keep you honest about what's still in the session.
replay-us-eastActive
US East · Pro · agave v4.0.0
Blocks
Browse confirmed blocks, expand any transaction, and see the exact pre/post account state diff the validator committed.
Validator ready at slot 418,908,412
uptime 48m 16s
- Download
- Boot
- Extract
- Index
- Ready
advanced 2 slots since boot
boot point of the local fork
RPC accepting queries
JSON-RPC accepting queries
- 104ApAhJaV1AiHziFgPHXxgzN7AP8omaWBFfL9E6hUPz8h2im6Wz1MFpzrvJAT9SUzkaMyscS1N5EcJmq75UboiDDXoursfee 1,005,000 λ
| # | Account | Change | Lamports | Owner | Data |
|---|---|---|---|---|---|
| 0 | 5Zzg…qkJxfee payersignerwritableinstruction | changed | 311,943,205→ 306,943,205 | 1111…1111 | same |
| 1 | 9nVV…Sc1Vwritableinstruction | changed | 9,243,352,240→ 9,248,102,240 | 9B6F…2ft9 | len 165 |
| 2 | 5oKE…7PDbwritableinstruction | changed | 324,637,281→ 324,887,281 | Toke…Q5DA | len 165 |
| 3 | Toke…Q5DAreadonlyinvokedinstruction | role only | — | — | not captured |
| 4 | JUP6…TaV4readonlyinvokedinstruction | role only | — | — | not captured |
| 5 | Hp53…XQKpwritableinstruction | changed | 5,436,955→ 5,436,955 | whir…tyCc | len 653 |
Hp53…XQKp· 14 bytes differ· owner whir…tyCchexascii| field | type | pre | post |
|---|---|---|---|
| whirlpools_config | pubkey | 2Lec…P2NQ | 2Lec…P2NQ |
| whirlpool_bump | [u8;1] | [fe] | [fe] |
| tick_spacing | u16 | 128 | 128 |
| fee_tier_index_seed | [u8;2] | [80 00] | [80 00] |
| fee_rate | u16 | 10,000 | 10,000 |
| protocol_fee_rate | u16 | 1,300 | 1,300 |
| liquidity | u128 | 271,030,330,806 | 271,030,330,806 |
| sqrt_price | u128 | 8,949,020,920,635,578,298 | 8,949,106,042,015,710,954 |
| tick_current_index | i32 | -14,468 | -14,468 |
| protocol_fee_owed_a | u64 | 236,334,893 | 236,334,893 |
| protocol_fee_owed_b | u64 | 53,452,578 | 53,454,220 |
Save any moment. Snap back to it in an instant.
Checkpoint before a risky splice. Try three approaches. Return to the exact state you started from — as many times as you want.
Every checkpoint is a complete, independent save of your environment at that slot. Restoring is instant. Keep as many as you need — name them, restore any one, delete the ones you're done with. Experiment without fear: there's always a way back to a known-good state.
replay-us-eastActive
US East · Pro · agave v4.0.0
Checkpoints
Save a point-in-time checkpoint of the environment and restore it instantly.
Validator ready at slot 418,908,412
uptime 48m 16s
- Download
- Boot
- Extract
- Index
- Ready
advanced 2 slots since boot
boot point of the local fork
RPC accepting queries
JSON-RPC accepting queries
Save a checkpoint
Save the exact state of your environment at this moment. Restore it later — instantly, as many times as you like.
Saving briefly pauses the node while the checkpoint is captured; the moment it's ready you can restore (instant) or save again.
Saved checkpoints
Refreshbefore-experiment (slot 418,908,412)
2m agoRestorepost-splice (slot 418,908,420)
just nowRestoreclean-boot (slot 418,908,370)
14m agoRestore
Full JSON-RPC, WebSocket, and Geyser.
Every read endpoint your existing tools already speak — at your environment's public IP, behind your DNS.
@solana/web3.js, anchor, solana-cli, your indexer, your bots, your dashboards. Copy the curl. Run it. Subscribe to slotSubscribe and watch the bank tick. Yellowstone gRPC is one switch away on boot. Nothing to rewrite.
replay-us-eastActive
US East · Pro · agave v4.0.0
RPC
Send raw JSON-RPC calls to the local validator.
Validator ready at slot 418,908,412
uptime 48m 16s
- Download
- Boot
- Extract
- Index
- Ready
advanced 2 slots since boot
boot point of the local fork
RPC accepting queries
JSON-RPC accepting queries
Validator endpoints
Standard Solana JSON-RPC. Point any client (web3.js, Anchor, solana-cli) at this URL — read methods return state from the local replay fork (snapshot + your /advances + patches + materializations).
Two things to know before pointing a client at this URL
Account
shared across the account-bearing calls
getSlot
Return the validator's current slot.
curl -s http://45.32.173.217:18899 \
-H 'content-type: application/json' \
-d '{"jsonrpc":"2.0","id":1,"method":"getSlot","params":[{"commitment":"processed"}]}' | jqgetAccountInfo
Look up the account above at the replay slot. Returns null if it doesn't exist.
curl -s http://45.32.173.217:18899 \
-H 'content-type: application/json' \
-d '{"jsonrpc":"2.0","id":1,"method":"getAccountInfo","params":["EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v",{"encoding":"jsonParsed"}]}' | jqgetBalance
Return the lamport balance of the account above.
curl -s http://45.32.173.217:18899 \
-H 'content-type: application/json' \
-d '{"jsonrpc":"2.0","id":1,"method":"getBalance","params":["EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v",{"commitment":"processed"}]}' | jqEvery advance, recorded.
Start slot, target slot, duration, status. Twenty most recent jobs, in memory.
Skim what ran, expand a row for the exit code, the finality choice, and the full job ID. The signal you want when you're iterating on a splice plan and need to know which run produced which state.
replay-us-eastActive
US East · Pro · agave v4.0.0
History
Past advance jobs and per-mutation audit trail.
Validator ready at slot 418,908,412
uptime 48m 16s
- Download
- Boot
- Extract
- Index
- Ready
advanced 2 slots since boot
boot point of the local fork
RPC accepting queries
JSON-RPC accepting queries
Advance History
Recent advance jobs (up to 20 in memory)
Slots
418,908,412 → 418,908,500
Duration
4.1s
Status
Done
Slots
418,908,370 → 418,908,412
Duration
1.9s
Status
Done
Slots
418,908,300 → 418,909,000
Duration
12.4s
Status
Cancelled
Slots
418,908,260 → 418,908,300
Duration
0.6s
Status
Failed
Slots
418,908,230 → 418,908,260
Duration
1.5s
Status
Done
Drive Replay from your agent. Or curl.
One hostname. api-replay.k256.xyz. Bearer in, your box out — over plain HTTP for scripts, or Model Context Protocol for AI agents. Same token, same contract, eighteen verbs.
Cursor, Claude (Code & Desktop), Codex CLI, VS Code — paste one snippet, restart the host, the agent can boot, advance, splice, patch, and inspect on its own.
Cursor
~/.cursor/mcp.jsonClaude
claude mcp add ...Codex CLI
codex mcp add ...VS Code
.vscode/mcp.jsonReproduce a live bug at the slot it happened.
Boot the snapshot, replay the offending transaction, inspect the bank. No prod risk, no flaky local repros.
Stage a .so against today's mainnet accounts.
Deploy your candidate, run the workloads that break things, validate before you ship.
Model a decision before it hits the chain.
Splice the proposed transactions, advance forward, inspect the result. Decide with evidence.
- Is this a testnet or devnet?
- No. It's mainnet state, frozen at a snapshot you pick, running as your private validator. There's no public consensus to lag behind and no other tenants to share with.
- Can I deploy my program here before mainnet?
- Yes. Upload the .so, mark it executable, point your CI at the public RPC. You're testing against today's mainnet accounts, not yesterday's local-validator stub state.
- What's the boundary between mainnet and local fork?
- Reads before mutation match mainnet at the snapshot slot. After your first account patch, program deploy, or transaction splice, the UI flips a label and the environment becomes a labeled local fork.
- What's actually under the hood?
- A Solana validator booted from hosted snapshots, with replay-specific instrumentation. You pick the validator version from the ones we host. Your environment runs on dedicated hardware in your region of choice.
private access · invite only
If this is the tool you wished you'd had — it's here now.
Teams who debug production Solana, ship program upgrades, or do protocol work already lose hours to ad-hoc fork setups. Replay collapses that to one click and one URL.
pricing
Dedicated environment. One region. One operator.
- Validator version of your choice
- Snapshots cached
- Full RPC + WS + Geyser
- Public IP, your DNS
- Unlimited splices and patches