Turn one game idea into a reviewed, playable Web or Godot game.
A local-first desktop production agent powered by Codex App Server and Godot 4.
Run from source · Fork & customize · Architecture · 简体中文
Noobi.ai gives Codex a bounded game-production loop instead of asking one agent to improvise everything in a single pass. A read-only Planner scopes the work, an Implementer builds inside an isolated project directory, an independent Reviewer checks the result, and the host builds and plays the production output before completion. Failed review, build or playtest checks return to the same Implementer for up to three repair rounds.
Current status: developer preview for macOS. No signed or notarized binary is published yet; run it from source. The output is a standalone Web or Godot 4 project in your own workspace.
| What you get | |
|---|---|
| From prompt to playable | Start with a natural-language brief, let the Agent choose Web or Godot 4, and preview a real standalone game workspace locally. |
| Review-gated production loop | Planner → Implementer → Reviewer → formal build → automated playtest. Failed checks trigger up to three bounded repair rounds. |
| Automatic experience evaluation | A sandboxed hidden browser exercises core controls, captures evidence, and checks visible gameplay, animation continuity and runtime errors. |
| Real media pipeline | Route images, music, speech, sound effects and 3D through configured providers, Codex ImageGen, imported assets or procedural fallbacks. Failed assets remain visible as retryable placeholders. |
| A workspace you own | Every game is a normal local project. Inspect the files, continue with Codex, commit it to Git, or take it outside Noobi.ai. |
| Built to extend | Add media providers, Codex Skills, MCP servers, agent prompts, project templates, Godot export targets, or an entirely different workbench UI. |
- macOS (the current tested and packaged target)
- Node.js 22 LTS and npm
- a ChatGPT/Codex account
- an available image route: a configured image provider or Codex ImageGen
- Godot 4 with exactly matching Web export templates, only when the Agent selects Godot
git clone https://github.com/Innate-Labs/Noobi.ai.git
cd Noobi.ai
npm ci
npm run devOn first launch, open Settings → Codex account and sign in. Noobi.ai uses an app-private userData/codex-home; it does not overwrite your global ~/.codex configuration.
If Codex cannot be located automatically, point Noobi.ai at a binary explicitly:
NOOBI_CODEX_BIN=/absolute/path/to/codex npm run devflowchart LR
Idea["Idea + reference files"] --> Preflight["Capability and engine preflight"]
Preflight --> Plan["Planner<br/>read-only"]
Plan --> Build["Implementer<br/>workspace-write"]
Build --> Review["Reviewer<br/>read-only"]
Review --> Pass{"Pass?"}
Pass -- "No" --> Repair["Repair<br/>up to 3 rounds"]
Repair --> Review
Pass -- "Yes" --> EngineBuild["Web build or<br/>Godot import + export"]
EngineBuild --> Playtest["Hidden-browser playtest<br/>inputs + screenshots + errors"]
Playtest --> Gate["Host proof gate"]
Gate -. "Repairable finding" .-> Repair
Gate --> Done["Playable local project"]
Gate -. "External blocker" .-> Blocked["Blocked"]
The workbench visualizes Brief → Scaffold → GDD → Assets → World → Code → Verify → Complete. Those stages explain progress; the Reviewer and host proof gate decide whether a run is actually complete.
Noobi.ai is intentionally organized around replaceable boundaries. A useful fork can start small:
| Goal | Start here |
|---|---|
| Add or change a media provider | mediaProviderStore.ts and mediaGenerationService.ts |
| Connect a tool or internal service through MCP | mcpConfigManager.ts |
| Change Planner, Implementer, Reviewer or Repair behavior | promptTemplateStore.ts and the prompt contracts in gameHarness.ts |
| Change the generated game scaffold and project rules | workspaceTemplate.ts |
| Build a new production experience | src/renderer/components |
| Add a new host-side dynamic tool | mediaToolBroker.ts |
Good first directions include a new provider adapter, Windows/Linux packaging, sample-game galleries, accessibility improvements, and additional deterministic game templates. See the roadmap and contribution guide.
- eight visible production stages and a live Agent event stream
- command and file-change approvals
- playable loopback preview, project files, and a unified asset library
- Agent-selected Web or Godot 4 workspace with environment and export-template checks
- host-managed timing and animation contracts without a user-facing FPS strategy selector
- Noobi crew characters, role-based motion, selectable studio scenes and an animated fishing background
- persistent projects and resumable Codex Implementer threads
- configurable image, audio and 3D REST providers
- Codex ImageGen fallback for required image generation
- music, speech, vocal effects, procedural WAV and Web Audio paths
- API-first self-contained GLB generation with a procedural Three.js fallback
- image and file attachments that influence planning, visual direction and asset reuse
- retryable asset work orders that preserve placeholders after generation failures
- native Codex Skills, stdio/HTTP MCP servers, and role-specific prompt customization
- sandboxed Electron Renderer with typed IPC only
- API keys sealed by Electron
safeStorageand never returned to the Renderer after saving - localhost-only preview server bound to
127.0.0.1 - path, symlink, MIME, size, SHA-256 and production-reference validation for generated assets
Read the full product capability map and architecture guide.
flowchart LR
User["Creator<br/>prompt + assets"] --> Renderer["React Renderer<br/>workbench · approvals · preview"]
subgraph Desktop["Electron desktop"]
Renderer <-->|"typed IPC"| Main["Electron Main<br/>trusted host"]
Main --> Harness["Game Harness"]
Main --> Preview["Loopback preview"]
Main --> Playtest["Experience evaluator"]
Main --> Environment["Godot environment manager"]
Main --> Broker["Media tool broker"]
Main --> Gate["Asset store + host attestation"]
end
Harness <-->|"JSONL · stdio"| Codex["Codex App Server"]
Codex --> Agents["Planner · Implementer · Reviewer"]
Agents --> Workspace["Web or Godot 4 workspace"]
Broker --> Providers["Image · audio · 3D providers"]
Providers --> Gate
Gate --> Workspace
Preview --> Workspace
Playtest --> Preview
Environment --> Godot["Godot 4<br/>headless import · validate · export"]
Godot --> Workspace
npm run typecheck # renderer + main process
npm test # unit and integration tests
npm run build # production renderer and main bundles
npm run verify # typecheck + tests + production build
npm run smoke:ui # isolated Electron UI screenshotThe following smoke tests use a signed-in Codex account and may consume a small amount of Codex or media-provider quota:
npm run smoke:codex
npm run smoke:harness
npm run smoke:media
npm run smoke:image
npm run smoke:model3d
npm run smoke:godot
npm run smoke:playtestTo produce an unsigned macOS DMG locally:
npm run package:macPublic distribution still requires Developer ID signing, Apple notarization and stapling.
- Web and Godot 4/GDScript workspaces are supported. Godot delivery currently targets a Compatibility-renderer Web export; automatic native macOS, Windows and Linux exports are not connected yet.
- macOS is the current release target. Windows and Linux desktop workflows are on the roadmap.
- Meshy, Tripo and Rodin currently use a synchronous REST gateway contract rather than native asynchronous job orchestration for every vendor.
- The built-in Three.js fallback produces functional low-poly, self-contained GLB assets; it does not claim provider-level high-fidelity organic topology or texturing.
- Quality and completion depend on the selected model, prompt, dependencies and available media routes. A run that cannot satisfy the proof gate remains
blockedinstead of being presented as complete.
Contributions that make the pipeline safer, more portable or easier to extend are welcome. Please read CONTRIBUTING.md, run npm run verify, and open a focused pull request. Security reports should follow SECURITY.md.
No project license has been published yet. Until the repository owners select and add one, the code remains under the default copyright rules. If you plan to distribute a derivative, watch the repository issues or contact the maintainers first.

