marmot

Marmot docs

20 pages, from the idea to the error codes

Reference

CLI reference

Every command of marmot, with real examples.

Run with node cli/marmot.mjs <command>. Defaults: RPC=https://rpc.mainnet.chain.robinhood.com. The key comes from MARMOT_PRIVATE_KEY or --key-file. Passing a key as an argument is refused on purpose.

Setup

CommandWhat it does
deployDeploys the factory and prints MARMOT_FACTORY
create --guardian 0x.. --delay 24hCreates your vault with a wallet guardian
create --guardian-passkey 0xX,0xY --rp host --delay 24hCreates your vault with a passkey guardian made on host

Durations are written 30m, 12h, 3d. A random salt is used unless you pass --salt.

Owner

CommandAnnounces
queue-eth <vault> --to 0x.. --amount 0.5Send ETH
queue-token <vault> --token 0x.. --to 0x.. --amount 100 [--decimals 18]Send a token
queue-call <vault> --to 0x.. [--value 0] [--data 0x..]Any call
queue-delay <vault> --delay 3dChange the wait
queue-guardian <vault> --guardian 0x..Replace the guardian (wallet)
queue-owner <vault> --owner 0x..Rotate the owner key
cancel <vault> <id>Withdraws your own announcement

Anyone

CommandWhat it does
status <vault>Owner, guardian, wait, balance, every announcement with its phase
execute <vault> <id>Runs a ripe announcement
relay <vault> --id N --sig 0x..Submits a veto signed on the site. You pay the gas.
relay-panic <vault> --sig 0x..Submits a panic signed on the site

Guardian (wallet)

CommandWhat it does
veto <vault> <id>Refuses one announcement
panic <vault>Kills everything pending

Watcher

marmot watch <vault> [--interval 5] [--notify-url URL] [--auto-veto --allow 0xA,0xB]

A real session

Output from scripts/anvil-e2e.mjs, which runs the actual CLI on a local node:

$ marmot queue-eth --to friend --amount 1
announced #0: Send 1.0 ETH to 0xA7E1...A6C1
ready at 2026-10-10T13:11:16.000Z   tx 0x23efa5...

$ marmot status
vault     0x020d9b50...fCbD
owner     0xbEc82557...A72C
guardian  0xbb834c15...c8e5
delay     1 h    epoch 0
balance   5.0 ETH

announcements
  #0  WAITING   Send 1.0 ETH to 0xA7E1...A6C1  ready in 1 h
  #1  WAITING   Send 4.0 ETH to 0x21f3...a831  ready in 1 h

$ marmot veto 1
vetoed #1  tx 0x3fe566...