Atrium is cross-venue portfolio margin for the EVM — one deposit backs positions across venues because risk nets instead of being re-posted. Below, every user flow we ship is driven end-to-end with a real wallet against the live Arbitrum Sepolia contracts. Each screen is a real screenshot; each money move is a real transaction. And right now, in your browser, this page is reading those transactions back off-chain to confirm they're real — watch the badges turn green.
A real Rabby wallet connects and signs in (SIWE). The portfolio reads live: buying power from Plinth's cross-product margin, collateral from Coffer — all labelled LIVE · ARB-SEPOLIA. Disconnected, it shows honest empty states, never mock data.

0x6821…4a76 · Margin Lens + buying power read live from Plinth + Coffer.Enter an amount, approve USDC, deposit into the Coffer (ERC-4626) vault — two real Rabby confirmations. The balance moves for real: vault value $2.88 → $7.88 (+$5), and ERC-4626 shares mint accordingly.


The trade form defaults to the openable venue (Aave Horizon), computes margin impact, and routes the open through AtriumRouter → Plinth → Coffer → adapter in one signed tx. On-chain, getUserPositions(0x6821…) returns [6, 7, 8, 10, 11, 12] and the account stays healthy.

The round-trip closes: withdraw from the vault, one Rabby confirmation, balance moves back — vault value $7.57 → $6.57 (-$1), shares burned via convertToSharesCeil.

Atrium never custodies funds and proves it: Lantern publishes a signed Merkle attestation of every balance on-chain, and anyone generates an inclusion proof for their own balance in the browser — no trust required. Redeemable is a live read of Coffer.convertToAssets(balanceOf(you)).

Codex is an x402-payable read API: margin, risk, positions, venue health, agent performance, attestations. The docs ship a live try-it console; public endpoints answer in the browser, per-user endpoints honestly require a signed wallet.

A user signs one EIP-712 Intent Sigil; a separate agent session key signs each trade within the signed scope — per-action cap, total cap, actions/day, expiry, venue allowlist. The SPAN engine (Plinth, in Stylus) checks every action against the mandate before any funds move. Four real transactions prove it: in-scope is ALLOWED, over-cap reverts NotionalExceeded (BLOCKED), a one-tap kill switch revokes, and a post-revocation action reverts MandateRevoked (BLOCKED) — each clickable on Arbiscan.

Move collateral across chains via Aqueduct (Chainlink CCIP). Enter an amount and the estimate (fee, destination, receive) renders live.

Nine Portico adapters deployed and verified; seven venues in margin scope. Each is honestly badged — only Aave is openable today; the rest are deployed-but-scaffolded and say so. A "two venues, one margin account" worked example shows the netting.

A new user: passkey, faucet (5 USDC + a gas grant so they're never stranded), first cross-margin position. Honest callouts throughout — "gas sponsorship is coming", "funds are testnet only".

A keyboard-first command palette jumps to any surface. Opens on click and ⌘K, filters, navigates — the small touches of a real product.

With the entire backend API aborted, the app degrades gracefully — no white screen, no $NaN, no crash. Honest empty/error states, real on-chain values where it can still read them.

/api/* aborted → still renders, honest, no crash.Letters, symbols, negatives, scientific notation, huge values — every amount input sanitizes them, no NaN, no layout overflow, over-balance gated at submit.

At 320px (smaller than an iPhone SE), zero horizontal overflow, modals fit, nav works, focus rings visible on every tab. Many products break below 360px; Atrium holds.

Every money move this session, on Arbitrum Sepolia. The badge on the right is filled by JavaScript on this page calling eth_getTransactionReceipt against the public Arbitrum RPC — so you're not trusting our screenshots, you're reading the chain.