Lightweight Solana mainnet
on your laptop.

Clone any Solana program into a local SVM sandbox. Patch PDA state, simulate transactions, publish a local JSON-RPC endpoint.

0.84s
Program cached
47
Accounts hydrated
24
RPC methods
reley · pamm · env/current-local-cleanlive
Reley app showing a step-by-step test running on a local copy of a Solana app
Programs Reley has been pointed at.
  • MeteoraMeteora
  • Kamino
  • JupiterJupiter
  • Phantom
Capabilities

The SVM sandbox that thinks it's mainnet.

Real Programs. Real account state. Real Anchor IDLs. SVM sandbox, sealed off from anything that costs SOL.

Clone

Any on-chain program, in seconds.

Fetch the program, account state, and Anchor IDL by pubkey. Transitive PDAs, lookup tables, ATAs, oracles. Pulled and cached locally.

$ reley clone METEORA_DLMM
resolving deps 47 accounts 12 PDAs
hydrate @ slot 348,201,118
0.84s Program cached IDL: anchor v0.30.1
Patch

Mutate any field. IDL-aware.

Make USDC mintable to your keypair. Flip a pool admin. Splice raw bytes when no IDL exists.

pool.adminDLMM…7v2→ Bn4…wAmint.authoritynull→ walletpool.fee_bps30→ 5vault.balance218.4 SOL→ 10,000oracle.price142.07→ 0.01
3 modes·idl·native·raw splice
RPC

Publish the sandbox as Solana JSON-RPC.

Point @solana/web3.js, Anchor, or Phantom dev mode at the URL. Wire-compatible byte-for-byte.

http://127.0.0.1:8899/sandbox/main
HTTP · 24 methods covered
Snapshot

Fork a sandbox. Diff the outcomes.

Snapshot a state, branch it, run both branches independently, compare account-level diffs. Canonical JSON, stable hash.

fork·diff·replay
diff · happy-path vs zero-liquidity
slot+ 248compute183,402 cupool.reserve_a- 4,802,113pool.reserve_b+ 19.4 SOLhash7a3f…b91c
Use case

Test the admin path
you never had keys for.

Your program CPIs into Meteora's DLMM. The pool admin is a Meteora-controlled key. The integration path you actually need to exercise is the one only that key can call.

Reley clones the pool, the vaults, the oracle, every bin array, every mint. Then it patches pool.admin to your local wallet. The CPI tree runs. You see compute, logs, and account diffs at every frame.

Same shape for Kamino vault managers, Drift insurance authorities, Jupiter route ops, any permissioned PDA on mainnet.

clone the pool surface
$ reley account add <pool_pda> --program METEORA_DLMM
+ vault_a vault_b oracle bin_array[0..32]
+ mint_a mint_b ata_user ata_treasury
51 accounts hydrated @ slot 348,201,118
patch the admin field
$ reley patch pool --set admin=$WALLET
using IDL meteora_dlmm@0.30.1
field admin: PublicKey encoded 32B
patch staged · scope: project · auto-apply on sandbox reset
run the CPI path
$ reley tx send --ix UserProg::do_admin_thing
▾ UserProg 14,221 cu
▾ Meteora_DLMM::admin_rebalance 102,418 cu
▸ TokenProgram::transfer 4,712 cu
▸ TokenProgram::transfer 4,712 cu
tx ok · 6 accounts mutated · log lines: 38

Scripted scenarios.
Reusable, deterministic.

Chain airdrops, time warps, snapshots, and transaction sends into a workflow. Run the same sequence against any fork of any sandbox.

airdrop
100 SOL → wallet
warp time
+ 14d
warp slot
+ 1,209,600
send tx
UserProg::vest_close
snapshot
after_vest
send tx
UserProg::claim
in-process
SVM sandbox via NAPI. No validator, no gossip, no RPC round-trip.
deterministic
Same inputs, same hash. Snapshots are canonical-JSON-stable.
offline
Once cached, every sandbox runs without an RPC call.

Stop testing
against production.

Source under PolyForm Noncommercial 1.0. macOS today. Windows and Linux next.

Apple Silicon + Intel · macOS 12+