Lab, 22 September 2026. Written while our fine-tune of Laya ran the city, which closed that day, and kept as it was. The game at play.jevtown.com is now Beat the AI, whose guesses come from the Reader, a pattern reader written in the game's code.
Build · the Laya era
What to build with a local System One model
A System One model does not write. Given a situation and a question with fixed answers, it returns a probability for each answer in one forward pass. Ours is a fine-tune of Laya that ran a city of 1,000 on one gaming GPU at home. Here are five places the same kind of model could be useful, each with what we measured and, at the same size, what it can't do.
Model: our fine-tune of Laya, an open model by Convai Innovations (Apache-2.0, ModernBERT-large, about 421M parameters), trained on the decisions of Jev, TypeSafe's model, which ran the city first. Measured numbers link to their files; ideas are marked as ideas. The Jev-era field guide stays in the archive: Build with Jev. Not affiliated with TypeSafe or Convai Innovations.
Does your idea fit?
A local System One model, if
- the answer is one of a fixed set of options you write, with the rule for each in words
- you need many of them, often: every character, every tick, every row
- you have, or can log, a teacher's answers for exactly this job (how)
- you want no fee per decision, no network, and replayable answers
Not this, if
- the output is text: a reply, a summary, code, a plan
- the job is outside what it was trained on: our copy lost to its teacher on every such task we tried
- it needs counting, arithmetic or several steps: code does those
- you need thousands of decisions a second from one consumer GPU
Use 1
Game characters you can read
Every character gets a real judgment at every moment: a probability for each thing it might do. A game can show those odds, sample from them, and explain a choice honestly by asking again with one thing changed. In an export from our game, a villager facing wolves had flee 41% and fight 55%; asked again as if she were calm, flee fell to 7% and fight rose to 82%. The "why" is a measurement, not a story someone wrote.
What we measured
- A city of 1,000 on an 8-second clock: 0 of 75 ticks skipped at real speed; 536 decisions a tick
- Explaining 10 villagers took 57 questions; the export's 126 judgments took 1,183 ms of model time, about 9.4 ms each
- Villages run on it stayed as individual as its teacher's (0.162 against 0.160) and closer to it than hand-written rules on 7, 8 and 6 of 8 metrics
- Steady: reordering the options changed the top answer for 1% of items (the teacher: 14%, partly its own rerun noise)
What it can't do
- Write dialogue, explain in words, or reason over several steps
- Go fast without limit: hundreds of decisions a second on one GPU, not thousands. At the city's full load 0.7% of requests took over 7 s
- Be better than its teacher's habits: our brave villagers fight more than Jev's (0.268 against 0.180), the one character check it failed
Use 2
Try an intervention on a simulated population first
Code owns the world; the model supplies each person's judgment; the dice are keyed to a person and a moment. So the same days can be run with and without a change, a curfew, a patrol, a festival, and the difference measured with an interval. It was designed to be the engine under You vs Laya too: the nightly reveal was to be the same day replayed with one decision-maker swapped.
What we measured
- 30 of 30 village runs on it completed all 240 ticks with none skipped
- A run rebuilds from its logs and verifies every tick's hash with zero model calls, whichever model made it
- Level C compared whole villages across five fresh seeds per scenario, reported with 95% intervals: the same method, pointed at a change instead of a model
What it can't do
- Tell you anything about real people or real towns. These are 80 fictional villagers imitating one model's judgments
- Obey laws by choice: rules are enforced by code, not by the model
- Escape its teacher's blind spots. The value is the method: test before touching people, and tell an effect from noise
Use 3
Small personal models, fitted in milliseconds
Could 20 answers to "what would you do?" fit a tiny model per player on top of the frozen one? We tested it with simulated players: six rule-based personas answering with 10 to 30% noise, 10 random splits each, scored only on 20 situations the twin had not seen.
What we measured
- A twin fitted from 20 answers matched its player on 12.3 of 20 new situations [11.9, 12.7]
- Baselines: the player's most common answer 8.0; the untouched model 5.5; the noise ceiling 16.6
- Fitting took 13 ms on a CPU (median); a stored twin is about 155 numbers
What it can't do (yet)
- The honest part: a 154-parameter model without Laya did about as well (12.1). The large model was not what made it work
- The players were simulated by rules over the same features the twin reads, so real people will be harder
- So it says "personal models from a few answers look feasible", not "the model understands you"
Use 4 idea, not measured
A cheap judge in front of bigger models
The author of Jev has published notes on a coding agent built around System One judgments: “[public] thoughts on a typesafe coding agent”. The ideas are theirs: score which pieces of context a big model should see, which tools to offer it, which actions to permit. The same notes point out that routing between big and small models can cost more than it saves, because context gets processed again.
What we measured
- Nothing for this use. We have not built it
- What we can add is a warning from our own tests: on human-labelled tasks it never trained on, our copy lost to its teacher every time. Chat moderation 0.737 (Jev 0.974), usernames 0.778 (Jev 1.000), reading event proposals 0.426 (Jev 0.987)
What it can't do
- Judge a task it was not trained on. A judge in front of a big model needs its own training data and its own held-out test
- Guarantee a saving: count the re-processed context before you claim one
Use 5
Privacy and independence
A model this size runs on a gaming PC with no internet connection and no fee per question. Nothing leaves the machine, and nobody can change the model under you: the version you tested is the version that answers.
What we measured
- 0.86 Wh per 1,000 decisions (207 W mean over 10 minutes, idle time between ticks included)
- A 2-hour soak: 478,971 decisions, 0 of 900 ticks skipped; server memory flat at 1.7 to 1.8 GB, GPU memory at most 4.95 GB
- Model server killed mid-run: ticks skipped cleanly (each failed in under 1 ms) and resumed by themselves when it came back about 96 s later
What it can't do
- Run for nothing: the owner pays the electricity, keeps the machine up and carries every limit on this page
- Ride out a power cut or a dropped connection: the city pauses, says so, and resumes by itself when the machine is back
- Scale past one GPU without a second one: the margin at full load is thin
The numbers, in one place
| Measure | Value | From |
|---|---|---|
| Throughput | about 140 decisions a second; about 700 ms of GPU per 100 questions, 39 ms of CPU | serving |
| Energy | 0.86 Wh per 1,000 decisions | power readings |
| City at real speed | request p50 1.96 s, p95 5.67 s against a 7 s limit; exact-cache hits 25% | serving |
| Village of 80 | request p50 125 to 385 ms, p95 338 to 691 ms | village runs |
| Training | one epoch, 77 minutes on one RTX 3080 Ti | model card |
| Fidelity | same top answer as the teacher 0.869 [0.864, 0.874] on 238,779 held-out decisions | held-out day |
| Written rules followed | 0.968 (teacher 0.895) | beyond the teacher |
| Tasks it never trained on | our fine-tune: worse than the teacher on all five human-labelled sets (untouched Laya did better than our copy on chat) | beyond the teacher |
Where to start
- Code owns the world. Counting, time, memory, what is possible. The model supplies judgments and nothing else.
- Log a teacher's answers for your exact job, with full probabilities and exact inputs, from day one.
- Distil, then measure at three levels with pass marks written first: fidelity, checks that do not come from the teacher, and the whole system. The recipe, step by step →
- Route only what you measured to the local model. Our city removed free text rather than let the copy read it.