- Measured
The prompt does not grow with the task.
Every request fits a fixed prompt budget (33,344 tokens by default), however many turns came before; that holds whatever budget size is chosen. Measured: across a 300-request run the largest prompt was 32,159 tokens.
- Tested to 300 requests
No history compaction.
There is no chat history to summarize, so nothing is lost to repeated summaries. The engine never summarizes away its authoritative state; to stay in budget it only trims lower-priority detail, and it always keeps a ledger of what was read. Tested so far to 300 requests replayed and about 100 live; it is designed to hold beyond that, and the evidence points that way.
- By design
Bigger models on the same hardware.
A 65,536-token server slot is enough, so memory a long-context cache would take can go to model weights. By design.
- By design
More agents per GPU.
Each agent's cache is capped by its fixed slot, so its memory stays flat however long the task runs. By design; 4 at once is measured below, and how many fit at most is not benchmarked yet.
- By design
Steady prompt size every turn.
The model reads about the same amount at turn 300 as at turn 3, so prefill does not creep up. By design. Engine time per turn now holds steady too: on the final build it stayed about flat across a long run, where the previous build slowed down as the run went on.
- By design
Behavior is enforced by the engine, not left to the model.
The engine owns the tool menu, the guards, the completion checks, the test gates and exactly what the model sees each turn, so the model cannot step outside those rails. Engine settings live in a versioned profile file you can supply with --profile. By design.
- Early evidence
Weak spots get fixed in the frame, not by buying a bigger model.
The engine keeps the bookkeeping (facts, receipts, what was read and tested) in typed state instead of the model's memory, so when a model stumbles you give the frame the missing fact or guard. Early evidence: in our tests one such fix took a recurring finishing failure from 21 of 24 runs correct to 24 of 24.
- Early evidence
Work that isn't code.
Early evidence: tasks that produce a report, a data file, or a plan document, each checked by an automatic test, passed 11 of 11 live runs (5/5, 3/3, 3/3) on the build just before this release. These were short tasks (3-4 model requests each); longer non-coding work hasn't been measured yet.
- Measured
Several agents on one GPU.
Measured: with the default settings, 4 sessions ran at once on one 48 GB GPU (an RTX 4090 48 GB variant) serving Qwen3.6-35B-A3B (a mixture-of-experts model, 35B total, about 3B active, 4-bit): 4 of 4 passed and GPU memory held at about 26.4 GB the whole time, because the model and its shared 262,144-token cache are allocated up front. Sharing has a cost: each session ran about 2 times longer than alone, while total throughput was about 1.9 times one-at-a-time. Measured on short tasks; a stock 24 GB card was not tested.
- By design
Any model can take any step.
Each request is self-contained (task, typed state, newest exchange), so nothing ties a run to one model's history. By design.
- Measured
Identical inputs, identical requests.
Request ids are not random and volatile test output is normalized. Measured on the build just before this release: two runs on the same input sent byte-identical requests on 40 of 40 requests, apart from three clock fields; in live runs an edit-receipt ID can also differ between otherwise identical runs.
- Measured
Crash-proof resume.
stateframe resume continues after Ctrl-C, kill -9, a crash or a lost server: it replays the recorded run without calling the model and checks the next request byte for byte before going live. Measured on this release: a killed long run resumed with its next request byte-identical.
- Measured
Steady memory on long runs.
Run history lives in the run directory on disk, not in memory. Measured (short runs, release-candidate build): the engine's memory footprint held at about 1.7 GB from request 10 to request 60, growing about 1 MB per request; the engine before this fix grew about 10.5 MB per request. The 1.7 GB is a fixed base for repository analysis and grows with repository size. Longer runs are being measured.
- By design
You can see exactly what was sent.
Every request is recorded, with typed state, receipts and ledgers, and stateframe inspect shows the frame, the messages or the exact bytes of any request. By design.
- By design
Local first.
It talks to any OpenAI-compatible server on your machine, such as llama.cpp, uses the server's prompt cache, and only allows loopback endpoints unless you opt in. By design.
Every measured and early-evidence result above was run with Qwen3.6-35B-A3B (a 35B MoE, about 3B active per token, in UD-Q4_K_XL, a 4-bit quantization, served by llama.cpp on a single 48 GB GPU (RTX A6000 class)).