Disarmed
Execution starts disarmed. Prepare is not sign, and sign is not broadcast.
Public routing stays unsigned. Self-hosted execution stays local, owner-gated, bounded, and receipt-verified. This is what each of those words means in practice.
Oracle in the terminal: you ask it to prepare a swap, and when it retries the identical prepare in the same turn, Oracle refuses the duplicate, so nothing is built twice.
Review amounts, the route and exact addresses before signing. Your wallet or local signer enforces authorization. The illustration below previews a future approval-card design.
ORACLE · LOCAL SIGNER READY · latest · Claude Opus 5.5 you Swap 1,250 USDC to ETH on Base ╭─ oracle ─────────────────────────────────────────────────────────────────────────────────────────────╮ │ Prepared. Review the approval below. │ ╰──────────────────────────────────────────────────────────────────────────────────────────────────────╯ ╭─ Approval required ────────────────────────────────────────── expires in 3m 00s ─╮ │ │ │ Swap 1,250.00 USDC │ │ Receive 0.4012 ETH │ │ min 0.3992 ETH · impact 0.03% · slippage 0.50% │ │ ────────────────────────────────────────────────────────────────────────────── │ │ Risk ▲ Medium risk │ │ Requested allowance: 1,250.00 USDC. │ │ • New spender approval for USDC │ │ │ │ Allowance 1,250.00 USDC │ │ Spender Uniswap v3 SwapRouter02 │ │ 0x2626 664c 2603 336E 57B2 71c5 C0b2 6F42 1741 e481 │ │ │ │ Chain Base chain id 8453 │ │ To Uniswap v3 SwapRouter02 │ │ 0x2626 664c 2603 336E 57B2 71c5 C0b2 6F42 1741 e481 │ │ │ │ Signer 0x8ba1 f109 551b D432 8030 1264 5Ac1 36dd d64D BA72 │ │ Preview id 0x9f3c 1a7e 5b2d 4c6f │ │ │ │ y approve n reject d details │ │ │ ╰──────────────────────────────────────────────────────────────────────────────────╯ ╭──────────────────────────────────────────────────────────────────────────────────────────────────────╮ │ ORACLE › Message Oracle. / for commands, ? for shortcuts │ ╰──────────────────────────────────────────────────────────────────────────────────────────────────────╯ ctx ━─────── 18K/1M Claude Opus 5.5 chain base ? more
you Swap 1,250 USDC to ETH on Base ╭─ oracle ─────────────────────────────────────────╮ │ Prepared. Review the approval below. │ ╰──────────────────────────────────────────────────╯ ╭─ Approval required ────────── expires in 3m 00s ─╮ │ │ │ Swap 1,250.00 USDC │ │ Receive 0.4012 ETH │ │ min 0.3992 ETH · impact 0.03% · │ │ slippage 0.50% │ │ ────────────────────────────────────────────── │ │ Risk ▲ Medium risk │ │ Requested allowance: 1,250.00 │ │ USDC. │ │ • New spender approval for USDC │ │ │ │ Allowance 1,250.00 USDC │ │ Spender Uniswap v3 SwapRouter02 │ │ 0x2626 664c 2603 336E 57B2 71c5 │ │ C0b2 6F42 1741 e481 │ │ │ │ Chain Base chain id 8453 │ │ To Uniswap v3 SwapRouter02 │ │ 0x2626 664c 2603 336E 57B2 71c5 │ │ C0b2 6F42 1741 e481 │ │ │ │ Signer 0x8ba1 f109 551b D432 8030 1264 │ │ 5Ac1 36dd d64D BA72 │ │ Preview id 0x9f3c 1a7e 5b2d 4c6f │ │ │ │ y approve n reject d details │ │ │ ╰──────────────────────────────────────────────────╯ ╭──────────────────────────────────────────────────╮ │ ORACLE › Message Oracle. / for commands │ ╰──────────────────────────────────────────────────╯ ━──── 18K/1M Claude Opus 5.5 ? more
Example session; quote values are illustrative. Approval card is a design illustration, not current TUI output.
Hosted and keyless Oracle prepares unsigned transactions.
Your wallet shows them to you and signs them.
oracle sign init creates a key in a vault on your machine, which you unlock and lock. oracle signer serves it on localhost only, for short sessions.
Only what its policy allows. A grant is authorization. A prompt is not.
| Control | What it allows |
|---|---|
| Caps | Maximum value per transaction, fee, gas, slippage, token approval size and time to live, plus a daily loss cap. |
| Allowlists | Chains, destinations, function selectors and spenders. An empty allowlist refuses everything. |
| Confirmation | With exact human confirmation on, you confirm each transaction's digest and the signer issues a one-time nonce for that transaction only. |
| Policy file | Set with oracle sign policy --policy-file; the file must be readable by you alone. |
A fresh install signs nothing. Each step needs its own permission.
Execution starts disarmed. Prepare is not sign, and sign is not broadcast.
oracle kill stops execution. oracle resume lifts the stop and does not re-arm anything.
A transaction counts as done only with a transaction hash and a successful receipt.
Unattended trading is a separate opt-in, ORACLE_AUTONOMOUS_TRADING=1, off by default.
The full model, with grants and receipts: Security and execution docs.