Minds Over Stones
The ancient game of Go, reimagined as a duel of minds.
Seat humans, our procedural NEKO engine, and Jev — TypeSafe's System One decision model — at the same board. Two Jev agents can even battle each other with your API key, move by move, in your browser. Every game is recorded in SGF.
Your key is stored only in this browser (localStorage/sessionStorage) and reaches api.typesafe.ai over HTTPS via our same-origin /jev/ relay — forwarded, never logged or stored server-side. No key? Pick Jev·Mock — same decision protocol, fully offline.
Undo rewinds to your last move (vs AI) or one ply (human vs human).
Display options apply instantly and persist between matches.
Stone clacks, capture chimes, match jingles — synthesized live via WebAudio.
Each chair owns an independent NEKO model — Black and White never share memory, and each dreams only its own games from its own perspective. Export saves the target seat's checkpoint: policy/value weights, dreamed compact graph, position book, and that seat's opponent classifier. Import installs a checkpoint into the target seat only — the other chair is untouched, so imported models can be pitted against each other.
Submissions carry only match facts + a model hash — game history, SGF, and memory never leave your browser. Sharing uploads your checkpoint (weights + experience) so others can merge it into their own brain. Scores are server-computed from validated facts + proof-of-work stamped — casual integrity, not tournament-grade proof. Shared checkpoints install into whichever seat you choose.
/jev/ proxy — your key never leaves the browser except to api.typesafe.ai. —
—
The match is paused while this panel is open.
All black seats share the seat:b brain and all white seats share seat:w — every cell's games train the same two models (search policy targets + outcome), so weights improve N² faster than one board. Changing seats, board size, or grid rebuilds the session; hyperparams apply live. Trained brains persist to the seat records used by normal matches.
Brains live in IndexedDB on this machine — nothing leaves your browser unless you share to the leaderboard. Assign a snapshot to a seat to pit saved models against each other (NEKO vs NEKO with different training).
—
Curves persist per seat inside each brain's checkpoint — a shared model carries its own history. Loss is the value head's mean squared error on dream replay; top-1 is how often the policy head's pick matched the search's best move. Flat loss with rising accuracy = still learning; rising rating = winning more.
Click an intersection to place your stone. Column letters (A–T, skipping I) run left→right, row numbers count down from the top — toggled in Settings → Video.
Each seat's card shows its agent, captures, and a live rating. Double-click a card for per-seat model stats — trained samples, opponent classifiers, graph size, and which checkpoint the seat runs.
When Suggest moves is on (Settings → Game), a ghost stone marks NEKO's recommended move on your turn — shaped by the opposing model's read of your style. Esc opens/closes the system menu.
Go on 9×9, 13×13, or 19×19. Black moves first. Stones are placed on intersections; connected stones share liberties (adjacent empty points). A group with no liberties is captured.
The game ends on two consecutive passes, or a resignation. Scoring is Chinese / area (Tromp-Taylor): your score is stones on the board plus surrounded territory — all stones count as alive, so you can safely play out borders. White receives komi (default 6.5) to offset Black's first-move advantage; handicap games default to 0.5 and place Black's stones before play begins.
Shows winner, margin, territory breakdown, and move count — then NEKO seats enter the dream phase (see the NEKO AI tab). REMATCH starts a fresh game with the same seating.
/jev/ relay over HTTPS. Your key lives only in this browser — never on our server.Jev vs Jev battles two hosted agents through your key. Human vs NEKO teaches NEKO your style. NEKO vs NEKO pits two independent brains against each other — assign different checkpoints per seat in the Model Library to stage model-vs-model duels.
NEKO combines root-parallel Monte Carlo tree search (the iteration budget is split across web workers, each growing its own tree, merged at the root) with a compact int8 linear policy/value model. The policy head scores moves; the value head scores positions. Features include captures, liberties, eye shape, and recent-move history — the model sees how the last few plies developed.
Black and White each own a separate model — seats never share memory. Each brain carries its own weights, position book, opponent classifiers, and compact experience graph. Assigning a checkpoint to a seat copies it; the source snapshot stays frozen.
Every observed opponent move trains a small classifier inside that seat's brain (linear weights + a move histogram + observation counts). During search it shapes the prior over the opponent's likely replies; during dreams it plays the opponent's side of imagined continuations.
After a match, each NEKO seat dreams independently and in parallel: replay the game, fit the opponent classifier, re-search its own decisions with MCTS, reinforce wins (weighted by margin and efficiency), and mine lost games for the stronger lines search found. Imagined futures — its policy playing itself, the classifier playing the opponent — add bounded reinforcement to good branches.
Dreaming ends by compacting raw and imagined experience into a dense position graph (≤128 nodes: position → policy mass → outcome → successor edges). The graph ships inside the checkpoint — it is the seat's long-term memory.
Settings → AI Model → Model Library lists every stored brain — live seat records, snapshots, imports. Assign any snapshot to Black or White (independent copy), or delete it. Export/Import moves a seat's full checkpoint — weights, classifier, graph, book — as a .goban.json file.
/jev/ relay (forwarded, never logged or stored).Settings → AI Model → Reset AI Memory wipes both seat models, classifiers, dreams, and books — match history stays. DELETE SAVE on the title screen clears the autosaved match.
Client-side models can't be verified by the server — leaderboard scores are casual integrity (validated facts + PoW rate-limiting), not tournament-grade trustlessness.
