Terminal
One screen, one selection, and every panel following it.
The terminal is a single fixed screen that never scrolls as a page. Panels scroll inside themselves. It is dense on purpose, because the point of it is that everything you need to judge one thing is visible at the same time.
Open it at /terminal.
The idea
One selection drives everything.
The board in the centre ranks wallets or NFT collections. Click a row and every panel to the right of that column retargets to whatever you picked. That single wire is the reason this screen replaced ten separate pages, and it is why the density is worth paying for.
Read left to right and the screen has three jobs.
| Column | Answers |
|---|---|
| Left rail | Is the chain alive, and is our reading of it healthy |
| Centre board | Who is winning right now |
| Right columns | Everything about whatever you just clicked |
The left rail is the pulse
Sequence number, confirmation lag, tokens tracked, feed state. All of it is real, none of it is a fixture, and it moves once a second whether or not the market is doing anything.
That matters more than it sounds. A dense panel of frozen numbers looks broken. The same panel next to a live rail looks alive even during a quiet minute, and you can tell the difference between a quiet market and a dead connection without having to guess.
When the engine is unreachable the screen does not hide it. Every panel renders
its honest empty state and the header names the condition, reconnecting while
there is hope and SERVER DOWN when there is nothing left to show.
The stream
The screen updates over one SSE subscription per tab. Nothing polls.
The first paint is server rendered from a real snapshot, so the market is already in the HTML before any JavaScript runs. There is no spinner and no layout shift. Then the browser takes over the same shape and keeps it current.
const stream = new EventSource("/api/ingest/stream");
stream.onmessage = (event) => {
const snapshot = JSON.parse(event.data);
render(snapshot.tokens, snapshot.collections, snapshot.wallets);
};That path is the app's proxy, not the engine
/api/ingest/stream is this application's own route. It exists because
EventSource cannot attach an Authorization header, so the engine's token
has to stay on a server rather than travel to a browser. If you are building
against the engine directly, the endpoint is /stream and it is covered in
The Engine.
Budget from trade to screen is roughly half a second to a second. Against a screener that only moves when you reload, that gap is the entire product.
Reading the screen honestly
Three habits that will save you from misreading it.
Check for the chain top marker before you believe a token panel belongs
to the wallet you clicked. When a wallet has nothing drawable, the screen falls
back to the chain's busiest token and labels it. The label is small and it is
load bearing.
A panel names its own window. The activity feed says how far back it
reaches, the bottom bar carries DATA SINCE and UPDATED, and the wallet
board dates itself. Numbers on this screen describe a window, not all of
history, and each one tells you which window it means.
Empty is a state, not a failure. Panels here draw a dash rather than a zero when they do not know something. Zero is a claim that the answer is none.