Hosted workspace where Cursor agents write Unity games, gpt-image-2 + Tripo3D
generate art, and GLBs hot-swap into a live WebGL preview via postMessage.
Unity runs on URP — glTFast cannot generate materials for hot-swapped GLBs on the built-in pipeline.
Default engine is Unity. Set
JAM_ENGINE=godotonly to roll back to the legacy Godot template.
apps/web Next.js UI + API (SSE agent relay)
apps/worker pg-boss jobs (Tripo / build ingest)
apps/mcp HTTP MCP server for asset search/placement
apps/buildworker Docker image (Godot legacy; Unity Pro CI later)
apps/desktop Tauri shell + local @cursor/sdk bridge
packages/core Cursor / Tripo / OpenAI / GitHub / R2 clients
packages/db Drizzle schema
templates/unity-game Forked per project (JamBridge + WebGL template)
templates/godot-game Legacy template (opt-in via JAM_ENGINE=godot)
npm install
npm run dev
# → http://localhost:3100Preview stays empty until you export WebGL once (Personal):
- Install Unity Hub + Unity 6000.0.47f1 with WebGL Build Support
- Open
templates/unity-gamein the Hub - Follow templates/unity-game/README.md
- Set
JAM_UNITY_EDITORinapps/web/.env.localto your Editor binary - Restart
npm run devand send a prompt (or re-run the batchmode build)
docker compose up -d postgres
cp .env.example .env
# fill CURSOR_API_KEY, JAM_UNITY_EDITOR, …
export DATABASE_URL=postgres://jam:jam@localhost:5432/jam
npm run db:generate
npm run dev # web :3100
npm run dev:worker # background jobs
npm run dev:mcp # asset MCP :3200