Pixel Agents turns the AI coding agents running in your terminals into animated pixel-art characters working in a tiny office. They walk to their desks, sit down, type when they're editing files, read when they're searching, and flag you visually when they're stuck waiting for input.
It ships in two forms from the same codebase:
npx pixel-agents starts a local server and serves the same office as a browser app, useful for tmux, remote, and non-VS Code workflows.The architecture is fully agent-agnostic and editor-agnostic: a typed HookProvider interface defines the integration boundary so adding a new AI tool is a single subdirectory of code. Claude Code is the reference implementation today; Codex, Gemini, Cursor, and others are on the roadmap.
![]()
The vision is: play a game, build a product. Two goals follow from it: to build a familiar, intuitive interface for running and orchestrating a lot of agents; and to make the hours you spend doing it feel less like administration and more like play.
Roughly three stages get there:
Most of this is still ahead. See Issues and Discussions for what's open, and CONTRIBUTING.md to jump in.
To use Claude with --dangerously-skip-permissions, hover over + Agent to find the Skip permissions mode button. Only use this when you accept the security implications.
Pixel Agents also detects Claude sessions started outside the extension. Turn on Settings β Watch All Sessions to include sessions from other workspaces.
Run Pixel Agents from the workspace whose Claude sessions you want to see:
cd /path/to/your/project
npx pixel-agents
The CLI chooses a free local port and prints the URL. Standalone does not launch Claude for you; start Claude Code in a terminal for the same workspace. To install the command globally instead:
npm install --global pixel-agents
pixel-agents
Use a fixed address or port when needed:
pixel-agents --port 3100
pixel-agents --host 127.0.0.1 --port 3100
pixel-agents --help
The default bind address is 127.0.0.1. Binding to 0.0.0.0 exposes the UI and WebSocket to the local network; do this only on a trusted network.
Open the URL the CLI prints - it carries a ?token= for this session. Any browser can watch the office without it, but installing or removing hooks (which edits your agent tool's own settings file, like the ~/.claude/settings.json) is only offered to a session that has the token, so an untokened client on the network cannot approve it. Open the bare address instead and the hooks toggle in Settings is refused, and reports the actual install state rather than appearing to work.
Treat that URL as a secret: the token is a bearer capability, not proof of being local. Whoever holds it can approve the hook install from anywhere the server is reachable β so don't paste the URL into a shared channel, and note that it also lands in your browser history and (unredacted) in the server's own request log.
Pass --no-terminal to disable the embedded terminal β watch agents without launching or attaching to them from the browser.
The extension and standalone CLI can run at the same time. Each server registers under ~/.pixel-agents/servers/; the hook script sends events to all active registrations. VS Code and standalone keep separate agents, seats, and settings while using the shared office layout.
Stop a standalone server with Ctrl+C. It removes only its own registration.
Click Layout to edit the office:
Layouts can grow to 64Γ64 tiles by clicking the ghost border outside the current grid.
Bundled furniture, floors, walls, carpets, characters, and pets live under webview-ui/public/assets/. Furniture manifests describe sprites, rotation groups, state groups, and animation frames.
Use Settings β Add Asset Directory to load external characters, pets, and furniture. See docs/external-assets.md for furniture directory structure and manifest details. The visual asset manager at scripts/asset-manager.html helps create furniture manifests.
Pixel Agents uses two Claude Code detection paths:
SessionStart, PreToolUse, PermissionRequest, and Stop. It discovers active Pixel Agents servers and sends authenticated events to each one.~/.claude/projects/. Transcripts are also read in hooks mode for details not present in an event.The Claude provider normalizes both sources into a shared AgentEvent model. AgentRuntime updates the central state store, and the active transport sends typed messages to the React webview. The office renders through Canvas 2D with pathfinding and character state machines.
Pixel Agents does not modify Claude Code. Its hook configuration and persistent data live under ~/.claude/ and ~/.pixel-agents/ respectively.
core/ β provider, adapter, transport, schema, and AsyncAPI message contracts with no runtime side effects.server/ β shared Fastify server, agent runtime, persistence, Claude provider, transcript scanning, and standalone CLI.adapters/vscode/ β the VS Code adapter: terminal, persistence, and webview bridge.webview-ui/ β React 19, Vite, Canvas 2D, and adapter-specific transports for VS Code and browser WebSocket clients.The extension and CLI are bundled with esbuild; the webview is built with Vite. Unit tests use Vitest and Node's test runner, and end-to-end coverage uses Playwright against VS Code and standalone.
git clone https://github.com/pixel-agents-hq/pixel-agents.git
cd pixel-agents
npm install
npm run build
Press F5 in VS Code to launch the Extension Development Host. To run the standalone bundle built from source:
node dist/cli.js
Common checks:
npm run check-types
npm run lint
npm test
npm run e2e
See CONTRIBUTING.md for the development workflow and e2e/README.md for the end-to-end suite.
Build the combined Allure report locally and stage it for Vercel:
npm run test
npm run e2e
npm run e2e -- --attach-videos-on-success
npm run vercel:prepare
Use npm run test:report to build the combined report without preparing the Vercel output, then npm run test:report:open to serve it locally.
The staged output serves the combined e2e, server, and webview Allure report at /reports/allure/; it does not include a standalone webview preview. GitHub Actions creates a Vercel Preview deployment only for same-repository pull requests targeting main. The deploy job expects VERCEL_TOKEN, VERCEL_ORG_ID, and VERCEL_PROJECT_ID secrets and skips fork pull requests.
--port to choose a free port, or select another fixed port.~/.pixel-agents/servers/; stopping one does not remove the other.Join the Discord to chat with other users and follow development. Use Issues to report bugs or request features, and Discussions for questions and ideas.
See CONTRIBUTING.md before opening a pull request and read our Code of Conduct before participating.
Pixel Agents is available under the MIT License.
(top 24 of 51)
1,099 followers Β· starred Mar 2026
1,249 followers Β· starred Feb 2026
208 followers Β· starred Feb 2026
4,848 followers Β· starred Mar 2026
Pixel Agents turns the AI coding agents running in your terminals into animated pixel-art characters working in a tiny office. They walk to their desks, sit down, type when they're editing files, read when they're searching, and flag you visually when they're stuck waiting for input.
It ships in two forms from the same codebase:
npx pixel-agents starts a local server and serves the same office as a browser app, useful for tmux, remote, and non-VS Code workflows.The architecture is fully agent-agnostic and editor-agnostic: a typed HookProvider interface defines the integration boundary so adding a new AI tool is a single subdirectory of code. Claude Code is the reference implementation today; Codex, Gemini, Cursor, and others are on the roadmap.
![]()
The vision is: play a game, build a product. Two goals follow from it: to build a familiar, intuitive interface for running and orchestrating a lot of agents; and to make the hours you spend doing it feel less like administration and more like play.
Roughly three stages get there:
Most of this is still ahead. See Issues and Discussions for what's open, and CONTRIBUTING.md to jump in.
To use Claude with --dangerously-skip-permissions, hover over + Agent to find the Skip permissions mode button. Only use this when you accept the security implications.
Pixel Agents also detects Claude sessions started outside the extension. Turn on Settings β Watch All Sessions to include sessions from other workspaces.
Run Pixel Agents from the workspace whose Claude sessions you want to see:
cd /path/to/your/project
npx pixel-agents
The CLI chooses a free local port and prints the URL. Standalone does not launch Claude for you; start Claude Code in a terminal for the same workspace. To install the command globally instead:
npm install --global pixel-agents
pixel-agents
Use a fixed address or port when needed:
pixel-agents --port 3100
pixel-agents --host 127.0.0.1 --port 3100
pixel-agents --help
The default bind address is 127.0.0.1. Binding to 0.0.0.0 exposes the UI and WebSocket to the local network; do this only on a trusted network.
Open the URL the CLI prints - it carries a ?token= for this session. Any browser can watch the office without it, but installing or removing hooks (which edits your agent tool's own settings file, like the ~/.claude/settings.json) is only offered to a session that has the token, so an untokened client on the network cannot approve it. Open the bare address instead and the hooks toggle in Settings is refused, and reports the actual install state rather than appearing to work.
Treat that URL as a secret: the token is a bearer capability, not proof of being local. Whoever holds it can approve the hook install from anywhere the server is reachable β so don't paste the URL into a shared channel, and note that it also lands in your browser history and (unredacted) in the server's own request log.
Pass --no-terminal to disable the embedded terminal β watch agents without launching or attaching to them from the browser.
The extension and standalone CLI can run at the same time. Each server registers under ~/.pixel-agents/servers/; the hook script sends events to all active registrations. VS Code and standalone keep separate agents, seats, and settings while using the shared office layout.
Stop a standalone server with Ctrl+C. It removes only its own registration.
Click Layout to edit the office:
Layouts can grow to 64Γ64 tiles by clicking the ghost border outside the current grid.
Bundled furniture, floors, walls, carpets, characters, and pets live under webview-ui/public/assets/. Furniture manifests describe sprites, rotation groups, state groups, and animation frames.
Use Settings β Add Asset Directory to load external characters, pets, and furniture. See docs/external-assets.md for furniture directory structure and manifest details. The visual asset manager at scripts/asset-manager.html helps create furniture manifests.
Pixel Agents uses two Claude Code detection paths:
SessionStart, PreToolUse, PermissionRequest, and Stop. It discovers active Pixel Agents servers and sends authenticated events to each one.~/.claude/projects/. Transcripts are also read in hooks mode for details not present in an event.The Claude provider normalizes both sources into a shared AgentEvent model. AgentRuntime updates the central state store, and the active transport sends typed messages to the React webview. The office renders through Canvas 2D with pathfinding and character state machines.
Pixel Agents does not modify Claude Code. Its hook configuration and persistent data live under ~/.claude/ and ~/.pixel-agents/ respectively.
core/ β provider, adapter, transport, schema, and AsyncAPI message contracts with no runtime side effects.server/ β shared Fastify server, agent runtime, persistence, Claude provider, transcript scanning, and standalone CLI.adapters/vscode/ β the VS Code adapter: terminal, persistence, and webview bridge.webview-ui/ β React 19, Vite, Canvas 2D, and adapter-specific transports for VS Code and browser WebSocket clients.The extension and CLI are bundled with esbuild; the webview is built with Vite. Unit tests use Vitest and Node's test runner, and end-to-end coverage uses Playwright against VS Code and standalone.
git clone https://github.com/pixel-agents-hq/pixel-agents.git
cd pixel-agents
npm install
npm run build
Press F5 in VS Code to launch the Extension Development Host. To run the standalone bundle built from source:
node dist/cli.js
Common checks:
npm run check-types
npm run lint
npm test
npm run e2e
See CONTRIBUTING.md for the development workflow and e2e/README.md for the end-to-end suite.
Build the combined Allure report locally and stage it for Vercel:
npm run test
npm run e2e
npm run e2e -- --attach-videos-on-success
npm run vercel:prepare
Use npm run test:report to build the combined report without preparing the Vercel output, then npm run test:report:open to serve it locally.
The staged output serves the combined e2e, server, and webview Allure report at /reports/allure/; it does not include a standalone webview preview. GitHub Actions creates a Vercel Preview deployment only for same-repository pull requests targeting main. The deploy job expects VERCEL_TOKEN, VERCEL_ORG_ID, and VERCEL_PROJECT_ID secrets and skips fork pull requests.
--port to choose a free port, or select another fixed port.~/.pixel-agents/servers/; stopping one does not remove the other.Join the Discord to chat with other users and follow development. Use Issues to report bugs or request features, and Discussions for questions and ideas.
See CONTRIBUTING.md before opening a pull request and read our Code of Conduct before participating.
Pixel Agents is available under the MIT License.
(top 24 of 51)
1,099 followers Β· starred Mar 2026
1,249 followers Β· starred Feb 2026
208 followers Β· starred Feb 2026
4,848 followers Β· starred Mar 2026