Aqueduct
Liquidity that gets more careful when you're over-committed.

Fails closed
a wrong, stale or malicious oracle reading can only shrink a fill, never enlarge it
- Monotonic: can only shrink a fill
- Every failure mode ends in a smaller fill or none
- Live on Base Sepolia
The problem
A maker can pass three separate, honest risk checks and still be over-committed, because nothing looks at all three at once.
What I did
I built most of the Next.js risk dashboard: about 17 panels including the exposure gauge, Uniswap and SwapVM panels, keeper status, emergency pause and the activity log.
How it works
Aggregate the exposure
A Graph subgraph adds up a maker's committed balances across every Aqua strategy they've shipped, and a keeper pushes it to an on-chain oracle.
Gate the fill
A new SwapVM instruction derates or halts a fill based on that live exposure. It can only make the maker more conservative.
Same rule on Uniswap
A Uniswap v4 hook sources swaps from the same gated strategy, so the risk rule travels with the liquidity, not the venue.
Next project