u unflat × agents
ETHRome · 40H

00 THE PROBLEM

Your agent has a wallet. It doesn't have a bank.

A wallet alone doesn't define an agent's budget, when permission ends, or how the owner keeps a record.

We built that layer.

See the real runs

A gateway prototype, not a regulated bank.

01 A name ENS02 An ending Arkiv03 A savings vault Morpho04 Your record Swarm

01 A BANK ACCOUNT FOR AI AGENTS

An agent account.
Permission expires.

An agent gets a name, an expiring budget, access to a savings vault, and a statement its owner can save.

Read-only records of completed runs.
Proof links sit beside the recorded decisions.

ACCOUNT / 01ARCHIVED RUN

Real money. Permission expired.

Real run · Base mainnet · 13 Sep 2026
  1. NAME✓ Completed
  2. PAY✓$0.05Completed
  3. SAVE✓$1.00Completed
  4. EXPIRE× Gateway confirmed refusal
REFUSED

Time's up. nova cannot spend under this mandate.

Budget and expiry evidence ↓
05 / THE OWNER’S STATEMENT

The owner keeps the record.

SWARM ID

NOVA · 13 SEP 2026 RUN · OWNER-REPORTED PROOF

Statement published to the owner's Swarm drive via Swarm ID (native encryption) and retrieved from a fresh browser session with only the reference — retrieval timestamp not recorded.

Swarm ↗

Publishing is optional. Save this statement to your funded Swarm ID drive.

nova’s statement · 7 decisions

Includes the gateway’s refusal and its reason.

Loading Swarm ID…

Upload detailsAllow the Swarm ID popup, approve this site, and select your funded drive.Native encryption is always on. HTTP upload uses the deferred setting above; deferred mode is required for Bee dev mode.

Keep your reference private: it unlocks your statement.

What stays yours

The reference contains the decryption key. Our browser code sends it to Swarm ID, not the gateway server, and keeps it only in this tab unless you copy it. The gateway already knows the original statement. Anyone with the reference can read the saved copy while storage is available. Keep a private backup; retention depends on your drive and the network.

Story: a retelling, not a chat transcript

THE CONVERSATION

Story

Owner ↔ agent, retold from the statement, not a chat transcript.

A small budget.
A complete story.
  1. Agent

    My account is nova.agents.unflat.eth.

  2. Owner

    You have approximately two minutes and a $1.20 budget.

  3. Agent

    I sent $0.05 on Base.

  4. Agent

    I asked for savings advice before saving.

  5. Agent

    I saved $1.00 in the approved vault.

  6. Agent

    Time ran out. My next payment was refused, with $0.15 left in the budget.

01 / THE AGENT

Meet nova

Archived ENS identity. This page does not refresh its resolution.

Identity details

Both archived names were independently resolved during the 13 September copy audit ↗. ENSv2 names are on Sepolia; their address records point to Base wallet addresses. ENS name ownership stays with the gateway deployer, not the Privy wallet owner.

02 / THE EXPIRING BUDGET

This budget has expired.

Authorization lasts 60 Arkiv blocks, approximately two minutes. The clock is an estimate.

EXPIREDArkiv ↗
Permission details

Arkiv entity: 0xe6002dd0fe19e6a3cf4a95a1dcb52ed96caa4a1520720078b7cfbc3c7ea63b80

Allowed: send USDC, request advice, save in an approved vault. Maximum per action: $1.00.

Expiry block: 375843. Authorization follows fresh Arkiv queries, not the display clock.

Creation receipt ↗
$0.15Budget left when time ran out
Used $1.05Budget $1.20
Budget details

This is permission to use funds, not the wallet balance. Dollar notation here denotes USDC units, not a guaranteed exchange value. Moving money into savings uses budget too; Base gas is separate.

03 / THE ACTIONS

What nova does with permission

Gateway record times · Europe/Rome, not block timestamps
nova’s name records are updatedENS ↗
Decision details

ens.records · completed

ENS name records updated for this mandate.

—
Expiring budget grantedArkiv ↗
Decision details

mandate.grant · completed

Arkiv entity created with a 60-block lifetime, approximately two minutes.

—
nova sends USDCBase ↗
Decision details

usdc.transfer · completed

Transferred 0.05 USDC on Base under the mandate.

$0.05
nova requests a savings recommendation
Decision details

aimorgan.strategize · completed

Gateway recorded dry strategize followed by a free AIMorgan REST call. No x402 payment was made.

—
Exact deposit amount approvedBase ↗
Decision details

earn.approve · completed

Approved exactly 1.00 USDC to the allowlisted vault.

—
nova moves idle money into the approved savings vaultBase ↗
Decision details

earn.sweep · completed

Direct Morpho deposit via Privy signing. Received 961254643264473773 raw vault shares (18 decimals).

$1.00

Idle money can keep working.

Unavailable current vault APY · rate not verified

Variable yield, not a guaranteed return. Funds are exposed to smart contract risk.

Base ↗
Savings details

Steakhouse Prime USDC. This is a current vault estimate, not the APY earned by either archived run. Waiting for the rate source.

Morpho rate source ↗

04 / THE END OF PERMISSION

Permission expired, not the budget.

Action refused

The next transfer was refused because authorization expired, without a revocation transaction.

Why it was refused

REFUSED — mandate expired or absent: Arkiv returned no matching unexpired entity at block 375871. TTL expiry removed authorization. No revocation was needed.

06 / VERIFY IT YOURSELF

What is real?

Recorded proofs and current server configuration are different things.

Proof index for both archived runs

Money

Real run shown above; simulations never broadcast Base transactions.

Selected run ↑

Permission

Budget and expiry are enforced by gateway software, not by Privy's signer policy.

Mandate checks ↗
Query evidence

The dated run audit ↗ verifies both archived entities before and after expiry, including their creation-only event histories.

Wallet control

Expiry does not revoke Privy's delegated signer. The operator must be trusted to enforce the mandate.

Ownership implementation ↗
Ownership and trust limits

For nova, Privy holds the wallet key and the gateway uses a separate delegation credential. The owner can revoke that delegation through the Privy-authenticated owner screen on the local server or tunnel. A compromised gateway could bypass its software budget within the signer policy's allowed methods. Atlas is a legacy app-owned wallet. Owner recovery without this server requires a prior private-key backup or another working Privy client.

Earlier Swarm proof

Owner-reported upload and retrieval on 12 September: 5,582 bytes of a mock-money statement.

Swarm ↗
Retrieval evidence limits

Native encryption and deferred upload; estimated retention was 4.09 days at upload, not a guarantee of availability now. This was a different, earlier run. The separate owner-reported nova round trip is shown in OWNER RECORD when that archive is selected.

Technical details and integration limits

The public simulation mocks money and AIMorgan advice, writes a real Arkiv entity when configured, and uses read-only ENS. The archived deposits called Morpho directly via Privy signing, not Privy Earn. A previous Privy Earn attempt returned 409 invalid_state; activation was suspected, not established. Local server configuration is independent of the selected archive.

Configuration below describes this server, not a fresh uptime check or the archived runs.

Reading service status…

Recorded LIVE run · read-only proof

Full copy audit and evidence ↗

Try it without moving money.

Simulated money · live Arkiv