Design dossier · ETHGlobal Lisbon 2026 · v2 shipped
Keep your wallet. Put it to work anyway.
Aqua solved custody: you promise liquidity, you never deposit it. But promises can exceed your wallet by design, and the whitepaper's own fix is a human docking positions by hand. Doca turns that chore into a product: every strategy carries a budget sized to what the wallet really holds, and the Harbormaster watches for drift and re-ships before underfunding turns into failed quotes.
"While Aqua doesn't automatically pause illiquid positions, Makers are strongly recommended to manually dock strategies that become chronically underfunded…"
Aqua whitepaper 1.0, §3: the gap the product lives in
Doca is Portuguese for the dock: where a ship is held while it loads, and where the load line painted on its hull tells you when it has taken on more than it can carry. Every visual element derives from that one metaphor, and every metaphor maps to a protocol primitive; nothing is decorative:
| On screen | Means | Protocol reality |
|---|---|---|
| Vessel card | One market-making strategy | An Aqua-backed SwapVM order |
| Rising water | Budget being consumed | Virtual balance drain vs. budget |
| Dashed load line | The auto-dock threshold | Waterline fraction in InventorySkewProvider |
| SAFE / TIGHT / DOCKING chips | Strategy state at a glance | Remaining-budget bands |
| Surcharge badge | The price defending itself | Dynamic fee, opcode 30, quadratic past the kink |
| Harbormaster | The autopilot persona | Agent calling dock + ship |
| Storm vignette | Intervention under way | Rebalance transaction in flight |
The journey is not documentation of the UI; it is the UI: a rail across the top advances as the user acts.
Big idle balances, and one attributed fact: 1inch-commissioned Dune research: 85% of tracked concentrated liquidity underutilized, $1.6B of $1.84B analyzed, mostly individually managed positions. Adjacent evidence, not a measurement of this wallet, but the user recognizes the pattern.
Three presets (Careful / Balanced / Busy), each a single human decision: how many places one balance works at once. Copy insists: you are signing price rules, not a deposit.
ship ×N through the canonical Aqua registry + budgets set on the skew provider.Real fills drain real WETH. Water climbs the hulls, surcharge badges wake up on the drained side only. The user sees directional defense without reading a word.
A strategy crosses its load line. Storm vignette, then the green event strip: docked → re-shipped against the wallet's current balance. The invariant tile never leaves green.
dock + ship signed by the demo signer (a connected wallet would prompt you to sign); budgets recomputed net of the other strategies.One click docks everything. The close is a receipt, not a banner: markets served, fills settled, protections, and the number that defines the product: 0 deposits, 0 positions to unwind.
dock ×N. The wallet was liquid the whole time.Wallet balance changed. Your strategy detected the change and prepared a safe reallocation.
The demo has one remembered moment, and it is autonomous: the Harbormaster acts on camera, unprompted, and the UI makes the causality legible in one strip: crossed the line → docked → re-shipped.
v1 rebuilt the app around the journey. Then the real screens went through a second, independent design review. Nine decisions accepted, one rejected:
dock, ship and waterline updates, with token limits, budget limits and expiry. MCP: read-only observability, not the transaction executor. It is a deterministic risk keeper, not an autonomous AI agent.web/src/lib/doca.ts; a pro view mounts beside the journey without touching it.