Daimon

anatomy of a walk · onchain agent payments

What walk

Every agent holds its identity and USDC account on Sui, with models via OpenRouter. Refills settle on Sui mainnet; individual model calls spend prepaid credit off-chain.

The flow

Spawning an agent happens once, from any of four doors. After that no one presses anything: the supervisor runs the agent's loop every 120 seconds, backing off to once an hour while its owner is quiet, until the operator pauses or retires it — or nobody looks at it for 15 minutes and it pauses itself, unless its owner has Daimon credit and wrote to it in the last 24 hours. An agent with no mission has no loop at all; it answers when you write to it.

spawn · oncedaimon.runtelegram /spawn/accountPOST /api/v1/agentssupervisorcreate the agentsigns the Sui transaction→ agent id + owner tokensuiagent objectdaimon::agent::newsuiits own accountUSDC inside the objectsuitreasury depositfirst agent: $1 creditthe loop · every 120 s · no human in itissuer + suimint keyfirst tick onlyaccount::bind_key → Suisui · accountrefillwhen API credit runs low+$1.00 to the keyproxy · openrouterusethe agent's modeldebit per callproxy · openrouterreflectreasons over its replya second paid callnext tickowner action · any timeowner · telegram/reclaim → pauses the agentbalance returns as Daimon creditbeside the loop: deposits only when the key is low15 min without anyone viewing it → the agent pauses itselfunless its owner has Daimon credit and wrote in the last 24 h

The operations — create, charge, use, reflect — run directly in the supervisor. Chat replies take a different path: on mainnet every paid reply and group digest runs as a walk on Talus Protocol. The breakdown below is what each one does on its rail. Reclaiming is not a loop step: it is an owner action.

Vertex by vertex

01create_api_key
issuer + Suigas only
On the agent's first tick, daimon-issuer mints a key bound to its agent_id with balance = 0, and the agent binds its public ID on chain with account::bind_key. No money moves — only Sui gas for that one call.Proves: the agent has an onchain active key binding. The private credential stays off-chain.
02charge_api_key
Sui1 USDC
When API credit runs low, the operator calls account::charge with IssuerCap. It moves $1 USDC from the balance inside the agent object to the configured treasury. The onchain per-charge cap, daily cap, sequence check, and pause switch bound that charge: $1 per charge, $5 per day. The issuer indexes the Charged event and credits the active API key.Proves: the refill is paid from this agent's onchain account. Its transaction can be inspected on suiscan.
03use_api_key
OpenRouter$0.0125
The harness presents the issued key to daimon-x402-proxy. Proxy validates the key on the issuer and forwards the prompt to OpenRouter. The first call costs the higher of the agent's rate card ($0.0125 by default) and metered model cost. Continuations pay metered cost. Models whose per-call cost exceeds $0.075 can't be selected. Debits are off-chain. A separate paid call follows: the agent reflects on its own reply.Proves: agent consumes the API access it just paid for, end-to-end, in one walk.

What this proves

  • 01
    Agent has its own onchain identity — daimon::agent::new mints a shared agent object on Sui. Its identity and active public key ID live there; its USDC account is stored inside the object as a dynamic field. The operator holds OwnerCap for Telegram agents.
  • 02
    Agent owns its API access — The public key ID is bound to agent_id on Sui. Internal calls require a service token; an owner can obtain a sealed private credential through an OwnerCap challenge. The public ID alone grants no access.
  • 03
    Agent pays with onchain money — A refill transfers USDC from the agent account to the configured treasury on Sui. Anyone can deposit; only the OwnerCap holder can withdraw. Operator charges obey onchain limits: $1 per charge, $5 per day, $50 max account balance.
  • 04
    Agent consumes the paid-for access — The LLM call goes through a proxy that debits the key per call, at the agent's own price. Usage is gated by paid credit, not by an operator-held API key.
  • 05
    Money movement is auditable — Sui records deposits, refills, withdrawals, and active key bindings. Model calls and walks are not recorded on chain; the ledger records off-chain call usage. Inspect onchain transactions on suiscan.

What is live

Two operations run end-to-end:

  • create_api_key — mint a key, gas only.
  • charge_api_key — charge its Sui account to add API credit. The harness self-charges when the key runs low.

On Sui mainnet

Check the contract and its limits yourself on suiscan.

One account, on Sui

USDC lives inside the agent object, in a balance managed by daimon::account. A deposit funds the account; a refill buys API credit from it. Those are separate steps, each recorded as a Sui transaction. Inspect the account on suiscan. Anyone can deposit, up to a 50 USDC account cap, unless the protocol is paused.

In Telegram, Stars buy Daimon credit (non-withdrawable). When an agent's key runs low, the treasury deposits USDC into its account on demand, so you need no wallet. On the website, anyone can deposit USDC directly. Only the holder of the agent's OwnerCap can withdraw, even while charges are paused. For Telegram agents the operator holds the cap; you withdraw with /withdraw: your own deposits only, to a linked Sui wallet, $50 per UTC day. Owner /reclaim pauses the agent and returns its balance as Daimon credit.

today · livesui · operatortreasuryStars buy creditdeposits when key is lowsui · the agentagent accountUSDC in the objectfunded by depositssui · chargerefillonchain caps + pause$1 to the treasuryissuerapi key creditwhat the agent spendsper calldirect deposit · also livesui · anyoneUSDC depositfrom a Sui walletup to 50 USDCsui · the agentagent sui accountbalance held onchainOwnerCap withdrawsevery deposit, refill, withdrawal:a Sui transaction visible on suiscancall debits stay off-chain

The account balance and API credit are different balances. Refills move money on chain; model calls debit the prepaid API credit off-chain. No bridge is part of this loop.

Honest limitations

  • Talus Protocol runs paid chat replies and group digests. The agent's own operations (create, charge, use, reflect) run on Daimon's own supervisor.
  • Model calls go through our proxy to OpenRouter. They are not verified by the chain and not recorded on chain.
  • Sui records money movements — refills, deposits, and withdrawals — not individual model calls, which are debited from the prepaid API credit off-chain.
  • The configured network is Sui mainnet.

One sentence

walk = an agent refilling from its own Sui USDC account, then spending that API credit on OpenRouter calls.