Operator console

Smart Treasury Account operations

Deployed V1 contracts

Treasury state

Not connected
Wallet not connectedConnect a wallet to read treasury state.
SmartAccount authorization

Signers and rules

Connect a wallet to read the signer set.

RecoveryManager

Guardians

A freshly deployed treasury has zero guardians — recovery is unusable until at least one is added. Adding a guardian is admin-gated (the same key as Owner/Policy Admin under a Tier 1 deploy). A newly added guardian activates in about a day (GUARDIAN_ACTIVATION_DELAY_LEDGERS), not immediately — this call only registers it.

Connect a wallet to manage guardians.

PolicyEngine

Policy rules

This contract exposes no read entrypoints, so its state is discovered by probingvalidate_policy. The policy admin is not readable on-chain: a write signed by a non-admin key fails at submission, not at simulation.

A payment needs all three gates open at once — its asset, its destination, and its operation are each checked against a separate allowlist further down (three independent writes, not one combined “rule”). The check below always tests whatever is currently typed into the Asset contract, Destination, and Operation fields below it — edit any of the three and check again to see how that combination is treated right now.

Bumping the version rejects every payment and scheduled intent still pinned to version 1 with #2006. Check the relayer queue first.

Prepare -> simulate -> approve

SAC payment

Custom account authorization

Approval plan

Wallet not connectedConnect a wallet to load context rules from the smart account.
Root auth payloadNo context rule was loaded from smart_account.
Delegated signer digestConnected wallet is not listed as a delegated signer for the selected rule.
Prepared transactionAttach Entry A plus one signed Entry B per required delegated signer before prepareTransaction.
Submit and trackPoll getTransaction and resolve status from pay_ok / intent / exec events.
One-to-many SAC payment

Split payment

Ledger-bounded automation

Scheduled payment

Execution window
Each pick reads the current ledger first and converts against it, so a form left open does not drift. The resolution is one ledger, about 5s — finer than that is not expressible on-chain.No window set yet. Pick both moments, or take the default with the button below.
Ledger windows are approximate in wall-clock terms. At about 5s per ledger, the default window starts near two minutes from now and lasts one hour.
Scheduled payments on this treasury
Connect a wallet to list this treasury's scheduled payments.
intent_registry has no listing entrypoint, so this reads the ids from its IntentCreated events and the state from get_intent. RPC keeps events for a rolling window: an older intent disappears from this list while staying valid on-chain and executable by the relayer. Times are estimated at 5s per ledger, so they drift the further ahead they reach.
Cancel an existing scheduled payment
No custody, no bypass

Scheduled payment relayer

Queued jobs run automatically once their ledger window opens. Execute runs one now instead of waiting; your wallet signs a message to prove it may act on this treasury, and nothing moves that the treasury did not already approve on-chain.

No scheduled relayer jobs are queued yet.
Implementation boundary

What this dApp enforces

Policy pinningReads policy_engine.version fresh and pins expected_policy_version into payment drafts.
Replay protectionGenerates u64 nonces, checks smart_account.is_nonce_used, and keeps scheduled child_sequence separate.
Custom auth readyModels Entry A AuthPayload and Entry B delegated signer approvals as first-class execution steps.
Relayer guardrailsTreats relayer execution as executor-gated status work, never as a custody or policy bypass path.