Documentation

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.

Overview

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.

Overview

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.

Overview

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.

Overview

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.

Using Avalon

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.

Using Avalon

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.

Using Avalon

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.

Using Avalon

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.

Using Avalon

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.

Gateway settles asynchronously: it folds many signed authorizations into periodic on-chain batches (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.