Reference
CLI
The CLI runs the same dispatcher as the desktop app, in-process. Anything the GUI does, the CLI can script. Run via pnpm cli <command> from the repo, or the built reley binary.
Environment
RELAY_PROJECT_ROOT selects the workspace directory. Defaults to ~/.relay-cli-project. RELAY_RPC_URL overrides the resolved RPC endpoint for all commands.
Raw clone & run
Stateless commands. No project, no session - just clone bytes or execute one tx in a throwaway SVM sandbox. Useful for scripting and CI.
clone-program
pnpm cli clone-program <programId> \ --rpc <url> --out <dir> \ [--network <name>] [--slot <n>] [--cache <dir>]
clone-account
pnpm cli clone-account <address> \ --rpc <url> --out <dir> \ [--network <name>] [--slot <n>] [--cache <dir>]
run
pnpm cli run \ --program <programId>:<elfPath> [--program ...] \ [--account <pubkey>:<blobPath> ...] \ [--payer <secretKeyPath>] \ --ix <hex> --ix-program <pubkey> \ [--ix-account <pubkey>:<isSigner>:<isWritable> ...] \ [--compute-units <n>] # OR pass a fully-serialized versioned tx: pnpm cli run --program <pid>:<elf> --tx <base64>
project
commands
pnpm cli project create <name> --rpc <url-or-id> \ [--network mainnet-beta|devnet|testnet|custom] [--description <text>] pnpm cli project list pnpm cli project open <id> pnpm cli project delete <id>
session
A session is one SVM sandbox instance hydrated with the project's programs and accounts. Reset to discard mutations and re-hydrate.
commands
pnpm cli session create <name> --project <id> pnpm cli session list [--project <id>] pnpm cli session reset <id> pnpm cli session delete <id>
program
Project-scoped program catalog. Clones the Program + IDL on add.
commands
pnpm cli program add <programId> --project <id> \ [--rpc-url <url>] [--slot <n>] pnpm cli program list --project <id> pnpm cli program remove <programId> --project <id>
account
Cloned accounts (PDAs, mints, vaults) grouped under a program.
commands
pnpm cli account add <address> \ --project <id> --program <programId> \ [--label <text>] [--rpc-url <url>] [--slot <n>] pnpm cli account list --project <id> [--program <programId>] pnpm cli account remove <address> --project <id>
tx
send
pnpm cli tx send --session <id> \ --program <programId> --data <hex> \ [--account <pubkey>:<isSigner>:<isWritable> ...] \ [--payer <keypair.json>] \ [--airdrop <lamports>] # default 10_000_000_000 (10 SOL) [--compute-units <n>]
history
pnpm cli tx history --session <id>
replay
pnpm cli tx replay <signature> \ [--session <id>] [--rpc-url <archive-url>]
caveat
Replay reads cloned account state at
slot - 1 to reconstruct pre-tx state. The default public RPC drops historical reads - point at an archive RPC (Helius, Triton, QuickNode) via --rpc-url.