34 LAN games you can play with friends without internet: board, card, mahjong, party, puzzle, and real-time. One phone or PC hosts (a hotspot is enough), everyone else scans a QR code and plays in the browser. No data plan, no app install.
🚀 Live Demo — try it without installing.
简体中文 | English
GameNest is a lightweight open-source tabletop game room for family nights, dorm rooms, classrooms, offices, and small parties. One laptop or Android phone hosts the room, everyone else joins from a browser on the same local network, and the stack stays intentionally simple: Express 4, ws, and plain HTML/CSS/JavaScript.
It started on a long flight with friends: hours with no internet and nothing to do, and every game on our phones either needed a connection or was single-player. So we built GameNest. One phone runs a hotspot and hosts the room, everyone else joins from a browser, and nobody needs mobile data or an app install.
Since then it has become our go-to for dorm nights, parties, family evenings, and classrooms.
- Works offline: planes, trains, campsites, basements. One phone hotspot or one shared WiFi is enough; no internet is needed at any point.
- Only the host installs anything: an Android phone, a Windows PC (standalone exe), or any machine with Node.js can host. Everyone else scans a QR code or types a room code and plays in the browser.
- 34 games: board games, poker, mahjong, party games, deduction, social deduction, puzzle races, and real-time battles, for 2 players up to a whole group.
- Bots fill empty seats: most turn-based games have AI players, so you can also practise alone.
- Reconnect and resume: drop out or leave by accident and the lobby's resume card puts you back in your seat.
- Hidden info stays hidden: hands and roles are only sent to their owner, so nobody can peek at the network traffic.
- Chinese and English UI and rules tutorials.
- No accounts, no ads, no tracking: Apache-2.0, with a simple stack (Express 4 +
ws+ plain JS, no build step) that makes adding a game easy. - AI agents can play too: the optional MCP server (
mcp/) lets Claude, Cursor, Codex and other agents join a room as a normal seat. See mcp/README.md.
If GameNest saved your game night, please ⭐ it so others can find it.
GameNest runs as a shared LAN lobby, a QR-code waiting room, and browser-based game boards:
Mobile and join-flow previews:
Requires Node.js 18 or later.
npm install
npm startOpen the lobby on the host machine:
http://localhost:3000
Other phones, tablets, or laptops on the same WiFi can join with:
http://<host-ip>:3000
If port 3000 is busy, the server automatically tries the next free port and prints the address it ended up on. Set PORT=xxxx to choose one yourself.
- Start GameNest on one computer or Android device.
- Open the lobby and choose a game.
- Create a room, then share the room code, host IP, or QR code.
- In the waiting room, adjust seats, add bots, change avatars, and mark players ready.
- Start the match and keep playing in the browser while state syncs over WebSocket.
- If someone briefly leaves, they can return to the room from the lobby resume card.
| Category | Games |
|---|---|
| Board Games | Tic-Tac-Toe, Gomoku, Chinese Chess, Chess, Checkers, Connect Four, Reversi, Go 9x9, Battleship |
| Cards & Tiles | Texas Hold'em, Dou Dizhu, Davinci Code, Rummikub, Liar's Bar, Big Two, Mahjong (Sichuan & Cantonese), Hearts, Three Kingdoms Showdown |
| Party | Monopoly, Flight Chess, Draw & Guess, UNO, Number Bomb, Old Maid, Exploding Kittens, Truth or Dare, Werewolf |
| Puzzle | Sheep Tile, 24 Game, Sudoku, 2048, Minesweeper Race |
| Real-time | Suika Battle, Snake Battle |
npm start # start the LAN server
npm test # run regression tests
npm run check # syntax-check project JavaScript
npm run test:monopoly # run focused Monopoly tests
npm run build:desktop # build Windows standalone exeCI currently runs npm run check and npm test (including the MCP server tests) on GitHub Actions.
- Requires Node.js
18+ - HTTP and WebSocket share port
3000 - Best fit for laptops, desktops, classrooms, and home LAN play
The Android project wraps the same Node.js server with nodejs-mobile and a WebView.
cd android
.\copy-nodejs-project.ps1Then open android/ in Android Studio and run the app. Full setup details live in android/SETUP.md.
.
|-- server.js # Express + WebSocket server, rooms, routing, bots
|-- desktop-entry.js # desktop launcher (pkg entry; sits beside server.js)
|-- startup-port.js # port-retry helper required by server.js
|-- games/ # game rules and state transitions
|-- bots/ # AI move generators
|-- lang/ # server-side text
|-- public/ # browser lobby, game shell, renderers, styles, assets
|-- scripts/ # smoke simulations and maintenance helpers
|-- tests/ # node:test regression suites
|-- android/ # Android Studio wrapper project (incl. nodejs-mobile main.js)
|-- mcp/ # optional MCP server: let an AI agent join a room as a player
|-- docs/ # architecture and release notes
`-- archive/ # local archive (not tracked by git)
More details:
lang/— server-side text packspublic/js/lang/— browser language packspublic/js/game-catalog.js— built-in game metadatascripts/generate-cover-art.js— cover art generator- docs/ARCHITECTURE.md explains the server, WebSocket, and renderer flow.
- .github/CONTRIBUTING.md has the new-game checklist.
- mcp/README.md explains how to let any MCP client (Claude, Cursor, Codex, Gemini CLI, ...) play in a room over stdio or HTTP.
- docs/releases/ holds the release notes.
Bug reports, rules fixes, AI improvements, renderer polish, and new games are welcome. Start with CONTRIBUTING.md.




