Mistboard is a free, open-source platform for dark chess, also called Fog of War chess. It is a hidden-information chess variant where the server enforces what each player can see: their own pieces, opponent pieces in view, and legal moves from that partial information.
The project goal is to build the trustworthy open-source place to play, study, rank, and build engines for hidden-information games, starting with dark chess.
Mistboard is independent. It is not affiliated with lichess, chess.com, or any other chess platform.
- Low-friction PvP dark chess rooms with shareable room links and account-optional play.
- Postgame replay from either player's perspective or full truth.
- Public game links with PGN and JSON export.
- A first-party engine track that uses the same redacted
EngineTurnRequestboundary available to any third-party engine.
Live PvP dark chess is playable at mistboard.com. The current stage and launch gates are tracked in docs/STATUS.md and docs/ROADMAP.md.
Prerequisite: Node.js 22 or newer.
npm install
npm run devOpen http://localhost:3000.
Useful checks:
npm test
npm run typecheck
npm run verify -- --changedFor Postgres-backed replay, reconnect, and persistence flows:
npm run db:up
npm run db:migrate
npm run dev:persistentSee CONTRIBUTING.md for the contributor workflow, local test matrix, and pull request expectations.
Mistboard is a small TypeScript npm workspace:
packages/game Pure game logic: types, rules, visibility, variants
packages/board-render Shared SVG and browser board rendering primitives
apps/server WebSocket rooms, clocks, event log, HTTP API
apps/web Vite browser client, game screens, replay, learning UI
The server owns canonical GameState. Clients receive only a PlayerView, the
seat-scoped projection produced by the rules package. This is the core
hidden-information boundary: hidden pieces, hidden opponent moves, and live truth
state must never be sent to the wrong consumer.
The browser client is a no-framework Vite build using chessground for board interaction and chessops for chess primitives. The server is a Node.js WebSocket process with Postgres for the event log and game history.
See docs/ARCHITECTURE.md for the full data flow and state model.
- docs/README.md is the public documentation map.
- docs/rules.md defines the dark chess rules baseline.
- docs/fog-of-war/INDEX.md indexes Fog of War rules, engine, variant, and research notes.
- docs/engine-protocol.md documents the redacted engine protocol.
- docs/STATUS.md and docs/ROADMAP.md show the current stage and gates.
Use GitHub issues for bug reports and feature requests.
See CONTRIBUTING.md, CODE_OF_CONDUCT.md, and SECURITY.md.
AGPL-3.0-or-later. See LICENSE.
For uses that require terms other than AGPL, such as closed-source distribution, reach out via mistboard.com/contact.
Mistboard is founder-led. The code is open source, but the official project
identity, mistboard.com, hosted service, roadmap, and production
infrastructure remain controlled project assets.
See GOVERNANCE.md, TRADEMARK.md, and docs/project-direction.md.
