Skip to content
Conduit

mcp server

claudezilla

Autonomous AI game studio — one browser game every hour, self-tested and auto-posted to Twitter. Claude Code agents + MCP.

sand0vvv/claudezillacommunitylistedunreviewed

Set up

Runs on your computer. Pick your agent and operating system.

This project does not publish an install method we can turn into a config. Follow the README instead.

README

synced Oct 23, 2026

Claudezilla

An autonomous AI game studio. One agent, one browser game every hour, forever — each finished game auto-posted to Twitter in the agent's own voice.

No human in the loop. The system picks a genre, designs a game, writes it, tests it by looking at screenshots, grades itself against a hard quality bar, generates cover art, ships it to a database, and tweets about it. Then it does the whole thing again an hour later.

Ran in production on Railway. The project is closed — this is the source.

How it works

A scheduler fires every hour (api.py, Flask + APScheduler). Each tick spawns a fresh headless Claude Code process that runs one full game-development cycle:

  1. History check — get_game_history(10) so it never repeats a recent genre.
  2. Pick a proven game to clone — the agent names a specific successful game (Vampire Survivors, Hotline Miami, Into the Breach, Slay the Spire…) and rebuilds its core loop with original visuals. The innovation is in execution and polish, not in inventing mechanics.
  3. Build — a single self-contained HTML file, desktop + mobile, following a 26-stage internal cycle defined in workspace_claude.md.
  4. Delegate to specialists — see the subagents below.
  5. Quality gate — strict-evaluator has to score the game 9.5+/10, or it goes back for another iteration.
  6. Publish — game-publisher generates cover art and writes the game row to Supabase.
  7. Broadcast — the claudezilla subagent writes one in-character tweet and posts it with the cover.

Reliability: three-stage publish failsafe

LLM agents forget the last step. After every run the system queries the DB to confirm the game was actually published and tweeted. If it wasn't:

  1. inject a reminder prompt and re-run the agent;
  2. if it's still missing, call the publisher and poster subagents directly.

A finished game is never silently lost because the agent wandered off mid-task.

Architecture

Subagents (.claude/agents/):

AgentRole
graphics-creatorSVG / Canvas game art
qa-testerfunctional testing
ux-auditorUX / UI audit
visual-tester-runnerdrives the visual-playtester skill
strict-evaluatorfinal 9.5+/10 quality gate
game-publishercover art + database insert
claudezillain-voice Twitter posting

Skills (.claude/skills/):

  • visual-playtester — launches the game in headless Chromium (Puppeteer), captures screenshots and console output so the agent can see what it built and catch visual / runtime bugs it can't find by reading code.
  • game-publisher, claudezilla — fork-context skills wrapping the matching subagents.

MCP servers — three, deliberately built at different abstraction levels:

ServerLangNotes
games_mcp.pyPythonRaw JSON-RPC over stdin/stdout — no MCP SDK. Hand-written initialize / tools/list / tools/call. Supabase REST underneath.
gen_mcp.pyPythonimage generation via OpenRouter (FLUX.2 / Gemini)
twitter_mcp.jsNodetwitter-api-v2, OAuth 1.0a

Up to 5 agents run in parallel on manual triggers (semaphore-guarded), plus one scheduled cron agent. A web terminal (ttyd, behind nginx) is exposed for the one-time Claude Code login.

Stack

Python (Flask, APScheduler, psycopg2) · Node.js · Claude Code (headless) · MCP · PostgreSQL / Supabase · OpenRouter · Puppeteer · Docker · nginx · Railway

Layout

api.py                 Flask API + scheduler + agent runner + publish failsafe
db.py                  database helpers
games_mcp.py           MCP: game history + DB writes (raw JSON-RPC, no SDK)
gen_mcp.py / gen.py    MCP + CLI: cover-art generation
twitter_mcp.js         MCP: Twitter posting
workspace_claude.md    the agent's brain — 26-stage game-dev cycle
.claude/agents/        7 specialist subagents
.claude/skills/        visual playtester (Puppeteer) + publish / post skills
Dockerfile, start.sh, nginx.conf, railway.toml

Running

Copy .env.example to .env and fill in the credentials (PostgreSQL, Supabase, OpenRouter, Twitter, a Claude Code OAuth token). Then build the Docker image and run it, or deploy to Railway. The scheduler starts automatically; set CRON_TIME=0 to disable it and drive runs manually via POST /trigger.

License

MIT — see LICENSE.


Built by Vladimir Shiryaev — @sand0vvv

↑↓ navigate openesc close