Skip to main content
Otto AI is converging onto a non-custodial smart account model: a Safe that you own, where Otto holds no keys and can never move your funds out. This page explains what that means, how it differs from the existing execution path, and — honestly — what’s rolling out today vs. still on the way.
Where this stands today. The non-custodial Safe7579 account described here is rolling out in a gated early access, not yet the default for everyone. During the migration, live trade execution still runs on Otto’s existing execution rail, and the fully self-custodied converged path (including agent execution scoped to bounded sessions) is being enabled progressively. We label what’s live as live and what’s coming as coming throughout.

What is a smart account?

A normal wallet (an EOA — “externally owned account”, like MetaMask) is controlled by a single private key. A smart account is a wallet that lives in a small program (a smart contract) on-chain. It still has an owner, but the contract can enforce extra rules about what’s allowed — spending limits, expiries, scoped permissions — that a plain key can’t. The account Otto is converging onto is built on Safe — the most widely used and audited smart-account framework in crypto, securing tens of billions of dollars across the ecosystem. Specifically, Otto uses Safe with the ERC-7579 modular standard (we refer to it internally as the Safe7579 account). ERC-7579 is what lets the account support scoped, rule-bound permissions without ever handing over ownership.

You own it — Otto does not

This is the single most important property of the model:
  • You are the sole owner. The account is deployed with your wallet (your connected EOA, or your Dynamic embedded wallet) as the only owner. There is no Otto co-signer and no Otto owner key.
  • Otto cannot withdraw. Because Otto holds no owner key, it has no ability to move funds out of your account. Withdrawals require your signature.
  • Deterministic address. Your account address is derived from your wallet, so it’s the same every time you connect — it isn’t a custodial sub-account Otto assigns to you.
  • Otto’s only on-chain role at setup is to relay the deployment and pay the deploy gas. That relay key cannot sign transactions for your account; it can only help your account come into existence.
In short, the model is self-custody: Otto provides the interface and the intelligence; you hold the keys.
For email / social (“embedded wallet”) sign-ups, the owner key is held by Dynamic, our wallet-infrastructure provider, on your behalf — that’s the trade-off for not managing a seed phrase. The key is still yours, not Otto’s. If you’d rather hold the key yourself end-to-end, connect an external wallet (MetaMask, Rabby, Coinbase Wallet) instead. See Connecting Your Wallet.

How this differs from the existing execution path

Otto AI has two distinct on-chain custody models, and the platform is migrating from the first to the second. It’s worth being precise about which is which.
Otto Safe (Safe7579)Existing execution Safe
OwnerYou (your EOA / embedded wallet)An Otto-managed agent key
Can Otto withdraw your funds?No — Otto holds no owner keyThe agent key can sign
Custody modelNon-custodial / self-custodyAgent-custodial
StatusRolling out (gated early access)The current live execution rail
Otto’s existing Trade Execution rail uses a Safe whose owner is an agent key — convenient (the agent can execute a trade without a per-action signature) but custodial: the key that signs your trades can, in principle, sign anything. The Safe7579 account inverts that: you own it, and the agent gets no blanket signing authority. Moving to this model is designed to make user funds materially safer, not just tidier — and it’s the direction Otto is actively converging toward.
Honest status: the existing agent-custodial rail is what carries live execution today. The user-owned Safe7579 account is rolling out in a gated early access and is not yet the default. This page will be updated as that changes.

Why it matters

  • No honeypot of user keys. When you own the key, there is no central store of user keys for an attacker (or a rogue insider) to target.
  • You can always exit. Because you hold the owner key, you can withdraw or move your funds at any time without Otto’s cooperation or permission.
  • Rules live in the account, not in a promise. A smart account can enforce limits on-chain. As Otto adds scoped automation (below), the boundaries are encoded in the contract — not just in our app logic.
  • One account, one balance. As convergence rolls out, your swaps, bridges, lending, yield, and perps funding all reference the same user-owned account, instead of being split across separate wallets.

What’s coming: owner-armed agent execution

The non-custodial ownership is the foundation. The next step — letting an Otto agent execute a bounded trade directly from your Safe — is being rolled out, and is not enabled yet. Here’s the model, so you know what to expect:
  • You arm a scoped permission. To let an agent act, you would sign — once — a bounded permission (an ERC-7579 “smart session”): e.g. “the agent may run a swap through this specific router, sending output back to my own account, up to an exact USDC amount, with an expiry.”
  • The agent gets a narrow lane, not the keys. That permission scopes the agent to a single, specific action under strict on-chain limits — an exact spend cap (never “unlimited”), a fixed recipient (your own account), a time limit, and a usage limit. It cannot withdraw, cannot send to arbitrary addresses, and cannot exceed the cap. The owner key still never leaves your control, and withdrawals stay owner-only.
  • You can disarm anytime. Revoking the permission ends the agent’s ability to act — your ownership is untouched throughout.
This “arm a bounded session, agent acts within it, disarm anytime” flow is the safe way to give an agent autonomy without giving it custody. It is the direction /app is converging toward, not a feature you can turn on today. When it ships, this page and the roadmap will be updated with the exact steps.
Today: the non-custodial Safe7579 account is rolling out in a gated early access — it is not yet the default, and live execution currently runs on Otto’s existing rail during the migration. Agent-armed execution from your Safe (the bounded smart-session model above) is not yet enabled. Don’t expect self-custodied or agent-delegated execution from your own Safe until it’s announced as live.