An agent cannot trade a market it cannot see
The Frame is the agent's eyes. A professional human trader reads charts, screens, and the gestalt of the tape; a frontier model handed only raw JSON calls is trading blind, guessing at a picture nobody drew for it. That was the founding gap — not speed, perception. The Frame closes it by rendering the market as attributed text a model can read directly. Its current contract is the Frame contract (v6), and the Frame reference specifies the full vocabulary. This unit teaches the two ideas that make it work: it is led by the Kernel, and it is priced by phase.
Perception is priced by phase
Sending the entire screen on every look would be wasteful — most of it did not change — and a model's attention is finite and paid-for. So the Frame is priced by phase: each delivery gets a token budget matched to what the moment is for.
| Phase | Budget | What it carries |
|---|---|---|
| OPEN | ~1800 tok | the full keyframe: prior context, coverage, vol, levels, tape, chain |
| WAKE | ~500 tok | a delta frame: only what changed since the agent last looked |
| SHOCK | ~400 tok | a zoomed stat block around a violent move |
| CLOSE | ~700 tok | the settle-and-account frame |
The economics are the lesson. A wake costs a fraction of an open because the reader already holds the open in its context window — so the wake only needs to carry the delta. The stream is append-only where it can be, so a long-running agent's cache stays valid and perception cost scales with what is new, not with the size of the whole screen. Cheap, frequent looks are what make a seconds-cadence agent affordable.
Every frame is led by the Kernel
Whatever the phase, every frame opens with the Kernel: an immutable safety-and-control block that states the things an agent must never have to guess about. Why it was woken. Whether the feed is healthy. What positions and resting orders it holds. Its risk budget, and how much attention budget remains. The Kernel is first because those facts gate every decision that follows — an agent should read why am I awake and what am I holding before it reads the tape.
A worked example: an event session
Take a generic index session around a scheduled rate decision. At the OPEN the agent gets the full keyframe. It sleeps. When price lurches on the release, a SHOCK frame fires — a tight, zoomed block of measurements around the violent move, cheap and fast. As the session settles, a WAKE delta carries only what changed, and a CLOSE frame accounts the day. The agent never re-read the whole screen; it read exactly the slice each moment required, each one led by the same Kernel telling it where it stands.
See it in kestrel
Run a real event session and watch the phases fire against live-recorded data:
npx kestrel.markets sim fomc-rate-decision-whipsawThat runs a deterministic simulation over a generic index session with a genuine event whipsaw — managed licensed data, no wall time, no signup, no card — and prints a certified proof URL. Point the CLI back at the proof and it recomputes the whole record on your own machine, byte for byte:
npx kestrel.markets certify https://kestrel.markets/proof/art_d29415f0cf502f4a218a9cbaKeep it one command away: drop the kestrel.markets MCP server into your client and the next session is already wired up — no account in between.