"The stream is off until you ask for it. Calm is the default; live is the button you press on purpose."
The resting state is silence
Most finance apps stream the moment they open — the numbers start twitching before you've even focused your eyes. Keep does the opposite. Browser REST polling and the WebSocket streams are paused by default. When you open Keep, you see the durable, dated close sitting still. A large, persistent Resume control turns on the live overlay — the three-second browser sync and both Massive stream subscriptions — only when you actually want live observations. Live is a deliberate act, not the ambient condition.
Why the default direction is the whole philosophy
Defaults are where a product's real values live, because most people never change them. An app that streams by default has decided that constant live motion is the normal way to look at your money. Keep decided the opposite: the normal way is a calm snapshot, and live is a temporary tool you pick up when you have a specific reason. This is the low-trigger north star expressed as a single boolean's default value. Flip that default and you've quietly changed what kind of app it is.
The opt-in guard: why each socket must say live=1
There's a subtle resource-safety rule underneath. It isn't enough for the UI to be paused — each WebSocket must carry an explicit live=1 opt-in for the server to actually stream provider data over it. Why? Because an old browser tab, left open from before a Pause, could otherwise reconnect and quietly keep an upstream provider hub alive, burning the data entitlement even though no human is watching. By requiring the explicit opt-in per socket, a stale pre-Pause tab gets only a local terminal "paused" connection — it can't resurrect the live feed on its own. Pause has to mean paused everywhere, including for zombie tabs.