Beat the model running on this page.

A small multi-head convolutional model — trained with self-play and MCTS, compiled to WebAssembly, running entirely in your tab. Close regions to claim territory; whoever owns more cells when the board fills up wins.

Share:

An ML model is on this page — follow to see what's next.

I write about how it's built — C++, ML, and the performance rabbit holes around it. Get the next one. Irregular by design.

Double opt-in — I'll send a confirmation email first. Unsubscribe in one click.

What you're facing

Same framework, same model, on-device.

  • Architecture

    Convolutional trunk with split policy and value heads — same multi-head composition shown on the Technical page.

  • Training

    Self-play with MCTS, gradient descent across multiple generations. Driven from a Bazel rule, cached like any other build action.

  • Runtime

    C++20 inference path compiled to WebAssembly via the same toolchain that targets native binaries. No Python, no GPU.

  • Privacy

    All inference runs on this page. No moves, no board state, no telemetry leaves your tab.