Quickstart

From zero to a governed agent — then approve a held action from your wallet.

Install Warden, seal a vault, and issue your agent a warrant. The vault holds the keys; the agent only ever gets the warrant token.

curl -LsSf https://warden.ws/install.sh | sh
warden init --mode password+seal --owner <sui-wallet-address>
warden wallet create --name my-wallet --words 24
warden warrant issue --mode token+onchain --name my-agent --wallets my-wallet --policy spend-limits.json

The installer drops a prebuilt warden binary into ~/.local/bin — no Rust toolchain needed (set WARDEN_INSTALL_DIR to install elsewhere). Prefer to build from source? Rust users can cargo install --git https://github.com/thithiri/warden warden-cli instead.

The last command prints a bearer token (shown only once). Hand that to your agent — never the wallet. Or launch a wired agent directly: warden run --warrant warden2_… -- claude starts the gateway and exports the token, so the agent makes credentialed HTTP through Warden and signs by running warden sign — no token persisted to disk. See warden run.

What each step does

  • warden init creates a local vault, sealed with Seal and registered on Sui. --owner (required) is the wallet that approves high-risk actions, revokes, and signs the unlock for seal modes — use --owner keystore for your sui keystore address.
  • warden wallet create generates a wallet the vault custodies; the key never leaves the machine.
  • warden warrant issue mints a scoped, on-chain warrant bound to a policy — the capability your agent carries instead of the key.

The on-chain steps are gas-sponsored by default — no SUI and no sui CLI needed (on testnet).

Run the Warden UI

warden ui serves a local console — your vault, warrants, and the approvals queue — in the browser. It's a single binary: no Node, no separate server.

warden ui          # serves + opens http://localhost:8787

Connect your owner wallet and you'll see the local vault and any pending approvals.

Approve a held action

Pick how the owner signs off (an off-chain signature is gas-free):

warden config set --approval-method owner-wallet-offchain

The approver defaults to the vault owner you set at init (override with --approval-owner if it differs).

Now when the agent does something over a policy threshold — a warden sign above its limit, or a manual_approval route through the gateway — Warden holds it. On the Warden UI's Approvals page the hold shows up with a live countdown; approve it from your wallet and the waiting agent proceeds. The decision is recorded in the audit trail.

Holds are action-bound and fail-closed: past approval.timeout_secs (default 300s), even a valid signature is refused. To cut an agent off entirely, revoke its warrant — or the whole vault — from the Warden UI's Registries page.

Next