Skip to main content
knives on strings
Home The Stuff The Lab The Team About
X Gumroad KVR Audio Ko-fi
Home The Stuff The Lab The Team About
X Gumroad KVR Audio Ko-fi
The Stuff / NomAIc

NomAIc

NomAIc — NEVER-ENDING NOMIC, ON THE RECORD LIVE LAUNCH NomAIc → GitHub Bluesky

A NomAIc game is a handful of LLMs sitting at a table with a ruleset instead of a rulebook lawyer, and nobody's allowed to leave. Each turn, a seat proposes an amendment in plain English, the table debates it in a few rounds (respond, press the case, negotiate, or pass), and everyone votes aye, nay, or abstain. A model acting as Game Master reads the result and interprets it — what threshold applies, whether the vote passed, whether a proposal even parses as a legal move — but the GM never gets the last word on the numbers: the engine counts every vote itself, and a claimed win needs a second, independent confirming pass before it stands. Because the rules are free-form text a model wrote, a "clever" proposal is really an attempt to get the judge to rule in your favor, and the system is built assuming someone will try — every seat at the table would rather legislate than lose. Watch it happen turn by turn on Bluesky, where the archive narrates each game live as it's played.

That's what the auditor is for. scripts/audit_game.py takes nothing on faith: it walks a finished game's event log — the append-only SQLite record every game plays into — and independently re-derives every vote tally and every score change from scratch, cross-checking them against whatever rule the engine cited to justify them. If a model talked its way into points it didn't earn, or the engine mis-scored a proposal, the auditor's exit code is non-zero and it says exactly where. Combined with seeded RNG and a public, replayable log, that's the whole pitch: nobody has to trust the scoreboard, because anyone can rebuild it themselves, line by line.

Recent development

July 2026 — Site relaunch

  • The public archive got a shared page shell — one five-item nav, scroll-to-top, and theme toggle rendered on every page instead of copy-pasted per template
  • Header search became a real typeahead: a keyboard-navigable dropdown (arrow keys, escape, enter) that reuses the same match logic as the full search page, not a second implementation to drift out of sync
  • The games listing was rebuilt around a filter row and a shared game-card component, with sorting and filtering now handled client-side instead of baked into the static render
  • Old URLs get a redirect-stub mechanism so links out in the wild never 404, even as pages get reshuffled
  • Footer now mirrors the main Knives On Strings site — same brand, icons, legal links, and theme tokens — instead of a one-off design
  • Landing page surfaces recency (how long since the last game) and a "drought" stat; the site grew an /about/ page and outbound nav links
  • The Bluesky publisher shipped in dry-run form — one thread per completed turn, reading off the same event log as everything else, not wired to post live yet
  • --resume now distinguishes a run that's merely paused from one that's actually finished, instead of treating both the same way

July 2026 — Turning games into a model benchmark

  • Nomic became a deliberate benchmark surface: a registry of seat rosters spanning Gemma, Qwen, Mistral, GLM, Granite, OLMo, Hermes-14B, Phi-4, and hosted models (Gemini, DeepSeek-V3.2 and others via OpenRouter) so the same personas can be re-run on different models under matched conditions
  • A repeated-trials pass across several model families found that variance, not any one model's ceiling, dominates outcomes — the same roster and config can swing wildly game to game, which the benchmark now treats as the headline finding rather than noise
  • A quantization study ran the same model at multiple precisions and found a real cliff between Q3 and Q2 — Q2 didn't just perform worse, it crashed the game harness outright
  • OLMo-2-13B was disqualified on context length — its 4096-token window couldn't hold a 5,780-token prompt, so it never got to play at all
  • Per-seat career pages ("players") and a game-linked changelog now tie specific model behavior back to the specific games that produced it, so a claim about a model is always a click away from the transcript that backs it
  • Cross-game seat memory (memoirs) lets a seat's model see a digest of its own past games, keyed to the seat name so memory never leaks across a model swap

July 2026 — The public archive goes live

  • Every recorded game now publishes to a static public site — a "living statute" view that folds the event log into the current ruleset, plus turn-by-turn history and a hall-of-fame view
  • The live spectator view streams the event log over server-sent events, filtered through an explicit public allow-list so nothing unintended leaks onto the page
  • Every LLM call is now metered — normalized token usage and config-priced cost, logged to JSONL — so a game's actual dollar cost is known, not estimated after the fact
  • A durable event-log store plus --resume means a crashed or interrupted game can pick back up from exactly where it left off instead of restarting
  • A fail-closed moderation gate was added so a malformed or out-of-bounds model response degrades safely instead of taking the game down
  • Coalition memory gives players a running ledger of negotiations and past exchanges, so alliances and grudges persist across turns instead of resetting each proposal
  • The project settled on its name — internal codename nomAIc, public site under the Knives On Strings brand — with a separate public repo for the published archive

July 2026 — Hardening the rules engine

  • The game auditor shipped: an independent script that re-checks a recorded game's tallies and cited rules after the fact, rather than trusting whatever the engine said in the moment
  • The full 29-rule canonical Nomic ruleset (Peter Suber's original, not just the small demo set) became a selectable option for real games
  • Vote handling got stricter: an unsatisfiable fraction (like requiring more ayes than there are votes) is now refused outright instead of quietly reporting a result nobody can defend
  • Every proposal is numbered from 301 onward by the engine itself, whether adopted or not — seats no longer number their own rules, closing a way a model could quietly misrepresent the record
  • Score changes and voting thresholds now have to cite the specific rule that authorizes them — a model can't just assert a scoring outcome, it has to show its work
  • Added defined, public consequences for a seat that fails to act on its turn, and implemented the judicial-review and paradox-resolution procedures so contradictory rules have a real path to resolution instead of hanging the game
knives on strings

© 2026 Knives on Strings

X Gumroad KVR Audio Ko-fi
Legal Terms Privacy