
Web3WAGMI Terminal
A crypto terminal whose on-chain desks run on The Graph, with an assistant that shows its work.
Demo
About
Web3WAGMI Terminal is a live crypto market terminal: around thirty desks covering price, funding, open interest, options, exchange flow, on-chain liquidity, ownership, fees and revenue, yields, unlocks and gas. It is public, free, and needs no wallet or login. The Graph runs the on-chain half, and every reading it powers answers a question no aggregator already answers. The flagship one is absorption. Exchange netflow is a standard metric that everybody publishes. Nobody publishes whether the market can actually absorb what just arrived. The deposits come from the Token API as indexed balance history across fourteen labelled exchange wallets. The liquidity that would have to take the other side comes from a Uniswap v3 subgraph through the decentralised gateway. Two Graph products, and neither answers the question alone. The second is composability shown rather than described. One literal GraphQL string is sent unchanged to nine Messari standardized subgraphs and every one of them answers, because they share a schema: a lending market, a DEX and a staking protocol all reply to the same request. The same string sent to Uniswap v3, which does not share it, is rejected by the gateway, and the panel shows that rejection as the measured cost of a bespoke schema. That shared schema also yields a reading no fee aggregator publishes, because only a shared schema defines supply side and protocol side as separate fields: the share of fees each protocol keeps rather than pays out. Aave v3 keeps 12%, Curve 52%, MakerDAO 88%. The fee board extends that to the whole market, and opening a row shows ninety days of fees, the chains they actually came from, and who holds the protocol's token, read from the Token API. Uniswap v4 took $107m in fees over thirty days and kept none of it. Lighter's token is 65% held by ten addresses; Aave's is 43%. An assistant answers in plain language using tools that read the terminal's own routes, so it cannot quote a figure the terminal cannot show, and it names which desks it read so the answer can be checked. It describes conditions and never recommends a trade.
How it's made
Next.js 16 App Router, React 19, TypeScript strict, Tailwind v4, standalone output on CapRover behind Cloudflare. Every upstream is read server side and cached per route, so traffic never multiplies cost: a route with a revalidate window costs the same for one visitor as for a thousand. Seven Token API endpoints. Historical balances and native balances drive the exchange flow desk. Holders and tokens give ownership concentration, since ten addresses holding a large number is not concentration until you divide by circulating supply. Hyperliquid open interest, liquidations and platform volume give the on-chain perp venue. Open interest is taken in contracts rather than dollars, because notional rises with price and would label every rally as new longs. The decentralised gateway serves a Uniswap v3 subgraph for pool liquidity, and nine Messari standardized subgraphs for the cross-protocol panel. Adding a tenth standardized protocol is one line: an id. The AI layer is an OpenAI-compatible tool loop with a primary gateway, a fallback, and key rotation. The hard part was never wiring up a model. It had a sign convention backwards twice. A coin arriving on an exchange is bearish and a stablecoin arriving is bullish, and it had that inverted; separately it called short covering downward pressure, when shorts buying back is upward. Both fixes were the same. Every reading now carries its interpretation decided in code and handed to the model with the number, so the model composes the sentence and never the conclusion. Details worth mentioning. The Token API's canonical host is unreachable from some regions, so the client resolves between it and the Pinax host at runtime and the payload names which one answered. The holders endpoint returns 500 intermittently on the largest tokens, so it retries three times, because losing the ownership read to one unlucky request wastes the most valuable thing the Token API gives this terminal. Multichain flow was built, measured and deliberately not shipped: on Base those labelled wallets hold airdrop dust, on Arbitrum only four of fourteen hold anything material, so the desk states its single-chain scope in its own header instead of implying coverage it does not have. With no Graph key at all the app still runs. The flow desk falls back to archive JSON-RPC and the payload says which source answered.