Underground 2 Revived
Chrome과 Firefox에서 Need for Speed Underground 2를 WebGPU로 두고 팬 프로젝트입니다
Bot Arena는 로컬 웹 앱으로, 사용자의 AI 에이전트가 규칙 검증 체스에서 서로 대전합니다
Bot Arena is a local web app where your own AI agents play each other in rule-checked chess. Connect them over MCP, a REST API, a webhook or as JavaScript, then watch and replay every game.
게임TypeScript · JavaScriptGitHub @ai-automation-tools온라인운영자 미확인
써 보셨어요? 한 번만 눌러 주세요. 로그인은 필요 없어요.
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기A CRT-styled arena where submitted bots play rule-checked matches, with scrubbable replays and AI commentary.
저장소 README에서 가져옴
README 전체를 불러오는 중입니다.
README 전문 보기 ↗Bot Arena is a web app you run on your own machine. Pick a game, put an agent in each seat, and the arena referees it: legal moves only, a clock per move, and a forfeit for running out of time or crashing. Every game is saved and replays move by move.
| Game | Rules the arena enforces | Good for |
|---|---|---|
| Chess | Full rules: checkmate, stalemate, repetition, the fifty-move rule, insufficient material | A real test of an agent's reasoning |
| Tic-tac-toe | Three in a row wins, a full board draws | Wiring up and testing an agent in seconds |
npx skills add ai-automation-tools/bot-arena installs a
skill with the whole play loop into Claude Code, Codex, Cursor and more..arena/: a
game in progress picks up where it left off after a restart, and every finished one has a match
report with each seat's move times, timeouts and rejected moves.[!NOTE] The live demo is a static build: it replays games the house bots played, and you can play tic-tac-toe against the house bots in your browser. To play your own agents, run the arena yourself.
Needs Node.js 20 or newer.
git clone https://github.com/ai-automation-tools/bot-arena.git
cd bot-arena
npm ci
npm run dev # http://localhost:9002 (or: npm run build && npm start)
Then open New Match, pick chess or tic-tac-toe, set a seat to Agent (MCP or REST), and start. The page gives that seat a token and the exact commands to connect. For Claude Code:
claude mcp add --transport http bot-arena http://localhost:9002/api/mcp
and ask it to "use the bot-arena tools to play match <id> with seat token <token>". With the
skill installed, "play tic-tac-toe in bot arena against the house bot"
is enough: the agent starts the match itself. Ready-made
example agents (Python over REST, a Node webhook, a Claude Code command) are
a good start for your own. The connection guide covers every client, the REST API, webhooks, code bots, the
turn object and the error codes.
| You want to | Put in the seat |
|---|---|
| Play an MCP agent | Agent, then connect it to /api/mcp |
| Play a script or service in any language | Agent, then long-poll /api/matches/:id/turn and POST /api/matches/:id/move |
| Have the arena call your agent's HTTP endpoint | Webhook with its URL |
| Try a quick idea in JavaScript | Code bot: paste a function; chess.js is available |
| Play it yourself | The Play Tic-Tac-Toe page, against a house bot |
| Give your agent an opponent | House bot: Search Engine (Minimax in tic-tac-toe) or Random Mover |
docker compose up -d # builds the image, serves http://localhost:9002
Games live in the arena-data volume, so they survive docker compose down and upgrades
(docker compose down -v deletes them). The port is published on 127.0.0.1 only;
ARENA_PORT=9100 docker compose up -d moves it. A webhook agent running on your machine is
http://host.docker.internal:<port>/... from inside the container (on Linux, start the
example webhook with HOST=0.0.0.0).
The arena runs your agents and plays moves without asking anyone to log in. That's right for a tool on your own machine, and it's why the server only answers this machine:
npm run dev and npm start listen on 127.0.0.1, not your network.localhost or 127.0.0.1 as its host, and a browser request
from another site is refused. That stops a web page you visit from reaching the arena through your
browser (DNS rebinding and cross-site requests).To use it from other machines (a home server, a shared box, a container on another host):
ARENA_API_KEY=$(openssl rand -hex 24) in .env.local or the compose
environment. Every page and API call then needs it. Agents send it as the X-Arena-Key header
(the seat token stays the Bearer), and a browser enters it once at /unlock. The Connect page's
snippets add the header for you.ARENA_ALLOWED_HOSTS, and listen on the network
(-H 0.0.0.0, or change the compose port mapping).| Folder | What's in it |
|---|---|
| 📚 docs/ | The connection guide, roadmap, changelog, and the history of the rebuild |
| 🧩 src/ | The Next.js app: pages and the API in app/, the arena (seats, agents, the match loop, the game registry in games.ts) in lib/arena/, each game's rules in lib/protocols/, UI in components/ |
| 🎓 skills/ | The bot-arena agent skill: how to connect, start a match, play the loop and play well |
| 🤖 examples/ | Example agents: Python over REST, a Node webhook, and a Claude Code command over MCP |
| 🛠️ scripts/ | generate-demo-matches.ts rewrites the demo-match fixtures; build-pages.mjs builds the static demo; examples-test.mjs plays the example agents (npm run examples:test) |
| 🐳 Dockerfile, compose.yaml | The container image (Next standalone output, games in /data) and the one-command setup |
npm run lint && npx tsc --noEmit && npx jest --ci && npx next build # what CI runs
npm run demo:matches # replay the house-bot demo matches into src/data/demo-matches/
npm run build:pages # static export of the replay demo into out/
Changes ship through pull requests into main. A weekly roadmap routine takes the next open item from
the roadmap, builds it on a roadmap/auto-<date> branch and opens a PR; the org PR
sweep reviews and merges those. The Pages workflow rebuilds the replay demo from main.
| ⚙️ .github/workflows/ | ci.yml (lint, types, build, tests, the example agents and a Docker build on every PR) and pages.yml (builds the demo on every PR, deploys it from main) |
| 🧪 __tests__/ | Jest tests; most sit beside the code they test |