It decides at the network boundary.
Responses and push messages are judged before your app sees them. Cheap facts are computed for everything; only salient situations reach the model, so normal traffic costs nothing.
Illustration of the failure GenClass targets, drawn for this page with the report line shortened; the real line format is on the docs. Without GenClass the app renders "pa" results under a search box that says "paris". In observe mode, the default, GenClass reports this and delivers the response unchanged; in guard mode, opt-in, it can discard the write when its gate clears.
From fetch to report in six steps.
Observe
Instruments fetch, XHR, WebSocket, EventSource, DOM events, errors, storage and timers, and links async work into causal chains.
Learn
Builds per-operation baselines for latency, failure and request rate, and relations that keep holding, like total == sum(price × qty).
Triage
Computes facts for every write and request. Only a response over newer data, a repeat, a failure streak or a broken relation goes to the model.
Decide
An 8.8M-parameter model (8.1M encoder, 0.7M heads) in a Web Worker reads the situation and returns a calibrated diagnosis and action.
Act, if you opt in
Only in guard or heal mode, and only when acting beats doing nothing by the margin of the profile you chose: cautious, balanced or eager. At the shipped setting that is rare: under 8% of the cases where acting would help.
Explain
Every call is logged in plain English. rt.explain(id) returns the exact text the model read, and reversible actions can be undone.
| Mode | What it does | Actions |
|---|---|---|
| observe · default | Reports likely problems with the evidence. Never holds, delays or changes anything. | none |
| guard · opt-in | Small, reversible actions at the network boundary when the model's gate says acting clearly wins. | discarddefercoalescedelay |
| heal · experimental | The full action set, with idempotency-aware retries and a breaker that downgrades it after undos. | retryserve_cachedhedgerollbackresync |
Trained in a simulated world, checked in real browsers.
Nobody has a dataset of what should have happened during a production race, so we built a world that generates one. Random apps run on the real runtime inside a deterministic simulator. For every decision, each candidate action is replayed and its cost measured, and the label is whatever turned out best. CPU nodes only, no GPUs.
| Source | Rows, log scale | Rows |
|---|---|---|
| Simulated, unlabeled: generated for teacher labelling, not used for training yet | 51,272,078 | |
| Simulated gold, format v2, 115 app domains | 10,423,855 | |
| On-policy rounds: the model acting in the simulator | 2,343,084 | |
| Simulated gold, v2.3 top-up | 2,107,824 | |
| Simulated, format v1 (superseded; trained earlier rounds only) | 2,000,000 | |
| Curriculum, exact labels | ~1,900,000 | |
| Real browsers, gold: 158 apps, 40+ stacks | 837,623 | |
| Real browsers, unlabeled: not used for training yet | ~523,000 | |
| Real-app certification set: fits the action gates, not the weights | 427,576 | |
| Real-app eval set, never trained on | 16,600 |
About 17.6 million labeled rows (simulated gold, on-policy rounds, curriculum and real-browser gold) are what the shipped model trained on. The 51.8 million unlabeled rows were generated for a teacher-labelling step that was skipped because the 150M teacher did not beat the student; they are not used for training yet. The eval set is never trained on.
One decision, every possible future. The label is the cheapest outcome given only what the runtime could have known at that moment.
- Day 1, 13:00Vocabulary pruned to 16k tokens; the model shrinks to about 10 MB
- Day 1, 18:00Curriculum stage on 10 nodes: 1.2M exact-label rows
- Day 1, 23:20Situation format frozen; 600k simulated rows in 41 minutes
- Day 2, 04:00Format v2: 10.4M gold rows on 20 nodes in about 31 minutes
- Day 2, 06:15Real-browser gold mixed in; a 150M-parameter teacher trains alongside
- Day 2, 08:34On-policy rounds: the model acts inside the simulator and learns from its mistakes
- Day 2, 16:35Gates certified on 427k real-app rows; model 0.2.0 ships