# Terminal

Every other page answers **what is out there**: which pools pay, which positions are open, what they are worth. The Terminal answers **what just changed**.

The difference is not a refresh rate. The rest of the app reads the chain on a schedule - pool accounts every thirty seconds, position accounts every five minutes - and a schedule can only ever tell you the state at the moment it looked. The Terminal is fed by a subscription that receives each event as the chain emits it, so a position that opens, is added to and is closed inside one five-minute gap is invisible to a scan and fully present here.

A pair is selected at the top. Three panes follow it - its chart, its book, its trades. The stream underneath stays the whole market, because the question it answers is not about one pool.

## The pair bar, and the screener behind it

The bar names the selected pool - pair, fee tier, venue and issuer - and then the figures that describe it: mark price, 24-hour change, 24-hour volume and fees, fee APR, TVL, how many of its indexed positions are in range, and the net flow over the window the screener is set to. It used to carry an LP count beside the in-range pair; two counts of positions that cannot agree, because one counts every indexed position and the other counts open ones. The screener still has the column.

Click it, or press `/`, and the screener opens over the page: every tracked pool, with search, category tabs, and the same columns the pool strip used to carry. Arrow keys move, Enter picks, Esc closes.

| Column | What it is |
|---|---|
| Pool | Pair, fee tier, venue mark and issuer mark |
| TVL | Value deposited in the pool |
| Active | The share of the window's minutes in which the pool traded at all |
| Swaps | Trades in the window |
| Volume | Swap volume in the window, sized on the USDC leg alone |
| Fees | LP fees in the window |
| Net flow | Deposits less withdrawals |
| Add / Remove | Position events, in and out |
| LPs | Indexed positions |

Two of these exist nowhere else in rangebound, because neither can be computed from a snapshot:

- **Net flow** says whether liquidity is **arriving or leaving** a pool, which TVL cannot: TVL falling could be the price moving, and TVL flat could be an LP leaving as the price rises.
- **Active** is why a pool with volume and a pool that trades are different things. Two thirds of Raydium pool-minutes and three quarters of Orca's carry no swap even on a weekday. A pool showing 95% is working continuously; one showing 6% had a busy minute and then nothing.

The window runs from **one minute to seven days** - a minute answers "what is happening right now", a week answers "which pool has been worth holding".

## Price and fees

The selected pool's price, with the volume traded at its foot and the fees LPs were paid in a pane of their own underneath. Price, volume and fees are each tagged at their latest bar on the scale to the right, and the dotted line is the price at the chart's first bar, so a glance says which side of it the price is on now. Scroll to zoom, drag to pan, and move the cursor across it to read the fees in any bar.

The buttons along the top of the chart set how much time one bar covers:

| Button | One bar | From |
|---|---|---|
| **1m** | a minute | the capture's own swaps over the last 24 hours, refreshed every twenty seconds |
| **5m**, **15m** | five or fifteen minutes | the same minutes, added together |
| **1h** | an hour | the area: the hourly history, up to thirty days where the swap tape recorded the pool. The candles: the capture's own swaps grouped by the hour, refreshed every minute |

**Area or candles.** The two icons at the right of the same row switch how the bars are drawn, and the area is the default. A candle shows a bar's open, high, low and close. The hourly history keeps one close an hour, so the **1h** candles are built from the live capture instead, and reach back only as far as the capture does - it began on 19 September 2026, so they start there and cover more of the thirty days every day. The area at **1h** still reads the full history.

**A quiet minute is still a minute.** Two thirds of Raydium pool-minutes and three quarters of Orca's have no swap even on a weekday. A pool's price moves only when someone swaps, so a minute with no swap is drawn at the last close with no volume: a flat stretch of the line, or a flat candle. Every bar is the same width, so the time axis is even and a burst after a quiet hour is drawn an hour after the trade before it, not next to it.

## Liquidity

The pool's book, by price. Each bar is a slice of the price axis valued at what the liquidity there actually holds: **USDC below the current price, the stock above it**. The white rule is the price - the same mark a position's range bar uses.

The dollar axis along the bottom is the point of the pane: a bar is only depth if the dollars can be read off it.

**The zoom is a slider, not a set of steps**, because the width worth looking at differs by two orders of magnitude between a 2bp ETF pool and a 65bp small cap. The pane opens at the tightest span that still holds most of the book, which is the window the distribution is legible in - so a pool whose liquidity is piled at the price opens tight, and one spread over ±25% opens wide.

Three figures under it:

| | |
|---|---|
| At the price | What a swap meets before the price moves to the next tick |
| In view | Everything inside the current zoom |
| Whole book | Every bar, which should match the pool's TVL to within a few percent |

## Trades

Every swap in the selected pool, newest first. Seeded from the capture when the pair changes and then kept live off the same stream the action stream is reading - so switching pairs costs one request and nothing after it.

## Action stream

Every trade, and every open, add, remove, close and fee claim, **across all tracked pools**. Selecting a pair does not narrow it: the stream is the whole market and stays that way.

The tape does not reload. Four times a second - once per Solana slot - it asks for what has arrived since it last asked and folds that in, so a new line appears on its own without the rows under it being redrawn, and scrolling back through it is not interrupted.

> [!NOTE]
> **Trades outnumber LP actions about sixty to one.** Measured over a day of the capture's own counters: 75,092 swaps against 1,183 position events. A position opens or closes a handful of times a minute across every pool we track, because it is a deliberate act; a trade happens several times a second.
>
> That is why the tape carries both. **LP** narrows it to the rare, deliberate acts - which is the right filter when the question is who is arriving and leaving. **Trades** is the flow those acts happen inside.

| Column | What it is |
|---|---|
| Age | How long ago, in seconds up to a minute, then minutes, hours and days |
| Action | Buy or Sell for a trade; Open, Add, Remove, Close or Collect for an LP. Green for money going in, red for money coming out |
| Pool | The asset, its fee tier and its venue |
| LP | The wallet, linking to its page. Blank on a trade - a swap is a transaction against the pool, not an act by an LP |
| Size | What moved, in dollars |
| Fees | What was claimed, where the event claimed anything |
| Tx | The transaction on Solscan |

A trade's size is its **USDC leg alone**. A swap's two amounts are the two sides of one trade, so adding them would count every trade twice.

**Size and Fees are different answers.** A collect moves no liquidity: it shows a fee and no size. A withdrawal on Raydium often carries both, because a Raydium collect *is* a withdrawal of nothing that takes the fees with it. An open or a close shows neither, because those events state no amount at all - the money arrives as a separate add.

Filter by size, by action, or by searching for a ticker, wallet or position. The window in the top right corner sets how far back the stream reaches.

## Watched LPs

Paste a wallet address into the field on the pane's header, press Save, and its positions stay on screen - one row per position across every saved wallet, with the totals on the same header: what it is worth, what it has made, what is claimable.

The pane sits under the action stream and opens short, a header and a row or two, so the stream keeps the height. Drag the divider above it for more.

| Column | What it is |
|---|---|
| Position | The pool, its fee tier and venue |
| Pooled assets | What the position is worth now |
| Range | Where the position's band sits, and where the price sits in it |
| Fees | Claimable now |
| APR | What it has returned since it opened, annualised. In a position's first hour that is mostly the price's own move |
| P&L | Fees plus divergence |

**Range rather than an entry price.** Nothing on chain records the price a position opened at in a form we store, and a range midpoint dressed up as an entry would be a believable wrong number. The range is what decides whether the position is earning.

`Cards` shows the same figures as one card per position, side by side - four to a row at the usual width - rounded to fit, with the position's age added. Fewer positions than a row holds share its width, so a single card fills it. The pane grows just enough to show a whole row of them.

This is a monitor rather than a filter. Picking a saved LP narrows this pane and nothing else.

> [!NOTE]
> Saved addresses live in your browser, not in an account. They follow you between sessions on the same machine and not between machines.

Positions under $500 are not indexed, so a wallet holding only small positions shows nothing. That floor is the same one [Top positions](top-positions.md) uses.

## Alert log

The same alerts as the [Alerts](alerts.md) page, newest first, with severity as a coloured rule down the left. Fee spikes, LPs opening together, meme graduations and suspect mints all land here as they fire.

The gear picks which kinds appear here, and carries the sound control from the Alerts page. Both are remembered in your browser.

A meme alert names the tracked asset the meme trades against, and links to that pool. The meme's own pool is not one rangebound tracks, so the asset is the part that tells you where to look - "INURANUS crossed $100k mcap" on its own says nothing about any pool you hold.

## The dividers

Every boundary between panes is draggable: chart against stream, stream against the watched LPs, the left column against the book, the book against the trades, and the book and trades against the trending pools and alert log below them. Drag one, or focus it and use the arrow keys - shift moves further. Double-click resets that one.

The sizes are remembered in your browser. Dragging moves nothing but the grid: no table is rebuilt and no row of the tape is redrawn, which is why it stays smooth with two hundred rows on screen.

Below about 1400px the trades pane moves under the book, and below about 1100px everything stacks into one column and the dividers go away.
