Quickstart
From zero to a running fork you can drive.
Boot the fork
This starts the gRPC server on 127.0.0.1:9000, JSON-RPC on http://127.0.0.1:9123, and
Studio on http://127.0.0.1:9124.
galene startThis forks mainnet by default. To fork testnet, devnet, localnet, or a private fullnode, set fork.rpc in galene.toml.
Mint a million USDC
Open another shell. Fabricate a coin and give it an owner.
Reflection is on, so grpcurl needs no .proto files.
grpcurl -plaintext -d '{
"coin_symbol": "USDC",
"amount": 1000000000,
"recipient": "0x<address>"
}' localhost:9000 galene.v1.CheatcodeService/FaucetRead it back over StateService.
grpcurl -plaintext -d '{"owner":"0x<address>"}' \
localhost:9000 sui.rpc.v2.StateService/ListBalancesFork a real on-chain object
Pull a live object into the engine. Use any object id from the network you fork, like a pool or registry your app depends on. It isn’t local yet, so the fork fetches it on demand and the object comes back at its real on-chain version.
grpcurl -plaintext -d '{"object_id":"0x<a live object id>"}' \
localhost:9000 sui.rpc.v2.LedgerService/GetObjectA package id works too. galene_forkObject (or CheatcodeService/ForkObject) on a package forks
its whole dependency closure, so the Move VM can call into it right away.
Everything here also works over JSON-RPC on :9123. Sui is moving off JSON-RPC, so the examples
lead with gRPC.
Open the dashboard
galene studioSubmitting a full transaction? galene_executeTransactionBlock forks every object the transaction needs before it runs. You do not fork them by hand. See the cheatcode reference.
Replay a past transaction
Replay any past transaction locally. You get its full object and trace artifacts.
galene replay <tx-digest>Then render its object graph, one command at a time.
galene graph <tx-digest>Next steps
- How it works. The copy-on-read fork, end to end.
- Cheatcodes. Every
galene_*method. - Studio. The local dashboard.