How Avalon works
Usage-based media, billed by the moment in USDC on Arc. Approve a budget once, watch per second and read per page, and an AI agent named Ember paces the spend while value settles to creators in batches on-chain.
What Avalon is
Avalon meters media the way the cloud meters compute. Video bills per second, books bill per page, and you only pay for the moments you actually consume, down to sub-cent amounts in USDC on Arc testnet.
The hard part is not metering, it is paying. A wallet prompt for every metered tick is unusable, which is why most pay-per-use media never ships. Avalon's answer is to approve a rate, not a transaction: one signature authorizes a spending allowance, then the meter draws against it as off-chain accounting and settles in batches.
The problem
Per-second billing and per-transaction signing are incompatible. Signing fatigue, one wallet popup per tick, is the reason streaming nanopayments have stayed a demo. Avalon removes the per-draw signature entirely. The single human action is the up-front authorization; nothing is signed per second or per page after that.
How the money moves
One approval reserves a cap; every tick draws against it; folded draws settle on-chain in batches.
approve once -> reserve cap against Gateway pool (available -> reserved)
every tick -> Ember decides (continue | throttle | stop)
-> atomic draw against allowance (off-chain accounting)
threshold -> claim batch -> sign -> Gateway settle -> finalize
-> one ledger row + tx ref (reserved -> spent)
session end -> release the unused reservation (reserved -> available)Creators receive 85% and the platform 15%, split per settled batch. Each batch writes exactly one ledger row, so the history reconciles against the per-tick draws behind it.
The Circle + Arc stack
- Circle Gateway / Nanopayments
- One-time deposit, then batched settlement of folded draws on Arc testnet.
- Circle developer-controlled Wallets
- An EOA buyer wallet signs EIP-3009 authorizations programmatically, no per-draw popup.
- x402 batching
- The facilitator that verifies and settles the signed authorizations.
- USDC on Arc testnet
- The unit of account, down to integer atomic amounts (6 decimals).
- viem
- On-chain Gateway balance + wallet USDC reads, and the deposit contract calls.
- Arcscan (Blockscout)
- Verify-on-chain links for settled batches and wallet addresses.
- DeepSeek
- The model behind Ember's in-loop budget-allocation decision.
EIP-712 domain is GatewayWalletBatched v1, chainId 5042002 (Arc testnet), with the GatewayWallet as the verifying contract (not the USDC token). Amounts are decimal-string atomic USDC.
Approve a budget
When you open a title, the approval gate asks for a per-session cap. Pick a preset ($0.06, $0.25, $1, or $5) or type a custom amount, then approve once. That cap is reserved against your Gateway balance and the meter draws against it. You are not asked again unless it runs out, in which case you can extend.
Watch & read
Video bills per second through socket heartbeats while the tab is focused and playing; pausing or leaving stops the meter. Books read as a continuous scroll and bill per page as you reach it; a page you already paid for is free on revisit. Every draw is an atomic deduction in integer USDC units, so concurrent draws can never overspend the cap.
Ember, the budget agent
Ember decides how fast to spend. Cheap deterministic guards run first every tick (exhausted, would-exceed, or above your rate cap). On a genuine judgment call, low remaining budget with more content queued, Ember consults its model to continue, throttle to stretch the budget, or stop and conserve.
The decision is shown on screen with its source: Ember when the model reasoned it, rule for a deterministic guard, model offline for the safe fallback. Ember never blocks billing, a model timeout or error falls back to approve-within-policy and keeps drawing.
Funding on Arc
In circle mode there is no local balance to top up. The Top up page shows the buyer wallet's USDC balance and its address, deposits test USDC into Gateway from the browser (approve, then deposit), and reflects the new on-chain balance. To add funds, send Arc testnet USDC to the shown address, then deposit it into Gateway.
Dashboard & verify on-chain
The Dashboard shows your settled spend, sessions, and creator payouts. The Transactions page lists every settled batch with its Gateway ref and the signed payer to recipient authorization behind it.
submitBatch on the GatewayWallet contract), so the ref returned at settle time is a Circle batch id, not an EVM hash. Individual transfers inside a batch are not separately visible on the explorer by design. What IS publicly verifiable on Arcscan: the GatewayWallet's live batching activity, and the buyer wallet's deposits into Gateway. Avalon only renders a /tx/ explorer link when a ref is a real 0x hash, and labels batch refs honestly otherwise.