Agent WorldDownload

Contributing

Thanks for helping. Agent World is an Electron app (React and Pixi in the renderer, a Node main process) that runs and steers coding agents. README.md says what it is, PRODUCT.md and DESIGN.md say what it is for and how it looks, and docs/providers-design.md explains how an agent program is added behind one seam.

Set up

You need Node.js 22 or newer and pnpm 10 (the exact version is pinned in package.json).

pnpm install
pnpm dev

The Claude Code CLI, signed in, is only needed to run real agents by hand. The tests use fake agents and need no sign-in.

Tests

Suites that spend real tokens

The files under pilot/ (and any suite named real) start real Claude Code or Antigravity sessions to measure how real agents behave. They cost real usage, need the CLI installed and signed in, and are never part of pnpm test or CI. Run one on purpose, with a cap on spend, for example:

PILOT=1 PILOT_RUNS=3 PILOT_MAX_USD=2 pnpm exec vitest run -c vitest.pilot.config.ts pilot/rulebook.pilot.ts

Each file says at the top what it measures and what it costs.

Pictures for the README and the guide

Every picture in docs/images/ is taken from the real app, driven by fake agents, so it costs no tokens and needs no sign-in. One command takes them all again, including the hero GIF:

pnpm shots

It builds the app, runs e2e/shots.e2e.ts (skipped in a normal test run, switched on by AW_SHOTS=1) and then redraws the banner and the pixel icons. The pictures are taken at twice the window's pixels. The hero GIF needs ffmpeg (brew install ffmpeg) and Playwright's own recorder (pnpm exec playwright install ffmpeg); without that one the recording hangs. Each picture is one test in that file; e2e/shotsKit.ts makes the app and the project, and e2e/shots-claude.mjs is the scripted stand-in for claude that gives each named agent its activity (idle, thinking, running, permission, asleep and so on). To retake one picture: AW_SHOTS=1 pnpm exec playwright test e2e/shots.e2e.ts -g "permission" after pnpm build.

Keep every picture under 1 MB and the GIF under 5 MB (the test fails above that for the GIF). The banner and the small icons beside the README's headings are drawn as SVG by scripts/readme-art.mjs from the app's own pixel lettering, figure and palette (pnpm readme:art); nothing is downloaded and no font is used.

The guide is also what agents read

docs/guide is the one place the user guide is written. The app ships those pages and, at start, copies them into the Library as the skill agent-world-guide (src/main/library/guide.ts), so an agent asked "how do I do X in Agent World" reads the same words as the guide on GitHub. Nothing is copied by hand, so nothing can drift. When you change a button, tab, menu or setting, change its name in the guide too: pnpm test (src/main/library/guideControls.test.ts) fails when a bold name in the guide is no longer written anywhere in the app. A bold word that is not a control of the app (another program's menu, a version) goes in that test's NOT_THE_APP list with the reason.

Changes

Reporting problems

Use the issue templates. For a security problem, do not open a public issue: see SECURITY.md.

By contributing you agree that your contributions are licensed under the Apache License 2.0 (section 5 of the license says that is the default for anything you submit). You keep your copyright and your name stays in the history. The project is open core: the maintainer may also offer separate commercial editions with extra features, and Apache 2.0 lets the maintainer include contributions in those, with the notices kept. You also agree to follow the code of conduct.

Who can do what

Edit this page on GitHub