Terminal pixel-art office for AI coding agents
$ npx -y skills add IvanWng97/pixtuoid --agent claude-code
Run the curl in your terminal, the rest in Claude Code.
What's inside
Running several coding agents means alt-tabbing between terminals to find out who's stuck, who's waiting on a permission prompt, and who finished ten minutes ago. pixtuoid puts them all in one tiny pixel-art office you can watch from above โ every session is a character at a desk: typing while it works, raising a ? when it needs you, dozing off when it's done.
A little bit Black Mirror, a little bit The Sims โ and the most glanceable multi-agent dashboard you'll ever use.
Pick one:
Homebrew (Linux, macOS, or WSL2):
brew install pixtuoid
npm (any OS):
npm install -g pixtuoid
Then launch:
pixtuoid
Press s to open the Sources panel and connect your agent CLI (Claude Code, Codex, Antigravity, Reasonix, โฆ) โ pixtuoid wires up the integration for you, no separate install step. In another terminal, start that coding agent. A character walks in from the elevator within a second; disconnect in the same panel and it walks back out. The panel also flags a source whose hooks are connected but broken (run pixtuoid doctor for the full health report).
Keyboard shortcuts: q quit ยท p pause ยท s sources (connect / health) ยท t themes ยท m sound (+/- volume) ยท Tab agent dashboard ยท ? help ยท โโ/jk/PgUp/PgDn floors ยท click an agent to bring its terminal to the front (f in the dashboard)
More ways to install โ Cargo, prebuilt binaries, and Debian .debs โ are on the install guide โ.
| ย ย ย ย ย ย ย ย ย | Feature | Description |
|---|---|---|
| Multi-agent office | Every agent session gets its own desk โ when a floor fills up, a new floor opens automatically | |
| Multi-floor office | Hop between floors with PageUp/PageDown, โ/โ, or j/k โ each switch slides into view | |
| Office spaces | Cubicles, a meeting lounge, and a pantry โ the office is laid out in distinct furnished zones, not just a grid of identical desks | |
| Animated characters | Coworkers type, wait with a ?, sleep under little z's, and walk A*-routed paths between desks | |
| Team palette | Shirt and pants take their colors from the working directory โ same repo, same colors, so the room reads like an org chart. Hair and skin vary per agent; 16 curated outfits | |
| Per-tool monitor glow | Each desk's monitor glows with the tool in use โ Edit blue, Bash orange, Read cyan โ so you can read the whole room at a glance | |
| Token meter | Paper stacks up on a desk as its session burns tokens โ the pile climbs through 250K / 2M / 16M tiers, a big spend drops a fresh sheet, and hovering shows the exact total (ฮฃ) | |
| Hover tooltips | Hover an agent for session duration, tool-call count and active-time %; hover any furniture โ desks, sofas, plants, vending machine, printer โ for its name | |
| Agent tree dashboard | Tab opens a collapsible tree of every floor's agents โ each badged with the CLI it runs, color-tinted by what it's doing, with tool-call counts | |
| Office pets | A cat or dog (one per floor) roams desks, pantry, sofas; sleeps near idle agents. Click to pet โ pixel-art hearts float up | |
| OpenClaw gateway mascot | A live OpenClaw gateway shows up as a wandering lobster โ the way it moves shows the gateway's health | |
| Office vibes | The sun and moon cross the skyline as the day goes by, weather rolls past the windows โ rain, storm, snow, fog, overcast, windy, smog โ and six themes give the office a whole new look | |
| Lofi soundtrack | A lofi soundtrack synthesized entirely in code โ no audio files shipped. Day and night tracks follow the office's clock and weather, typing sounds swell with activity, and the door chime, printer and vending machine play as coworkers come and go. m mutes, +/- volume | |
| Floating desktop window | pixtuoid floating opens the office in a frameless, always-on-top window โ on your desktop, not just in your terminal | |
| Hook-safe | The tiny hook shim pixtuoid installs always exits 0 โ even a stuck office can never block your agent |
| Tool | Runs on |
|---|---|
| Claude Code | macOS ยท Linux ยท Windows* |
| Codex CLI | macOS ยท Linux ยท Windows* |
Also supported: Antigravity CLI, DeepSeek-Reasonix, CodeWhale, Copilot CLI, opencode, Cursor CLI, Hermes Agent, Oh My Pi, OpenClaw, Grok Build, Kimi Code CLI.
โ Full tool ร OS support matrix on the site
* experimental โ limited testing, unsigned binaries.
Adding a new tool? Implement the
Sourcetrait โ or, for a hook-only CLI, just a hook decoder + an installTargetโ then add a row tosite/src/sources.json(itssupportedset is pinned to the code by a test). One file, one channel, done.
Everything lives in ~/.config/pixtuoid/config.toml (created on first launch;
every key optional) โ theme, desk cap, custom pet names, and sprite packs. CLI
flags override the file (pixtuoid run --theme dracula).
The setting you'll reach for most is the theme โ press t in the TUI for a
live-preview picker across six built-in palettes; your pick persists across sessions.
See docs/CONFIGURATION.md for the full key reference
(defaults, system-managed keys), the custom sprite-pack workflow, and logging /
troubleshooting (diagnostics go to ~/.cache/pixtuoid/log) โ or browse it live
at /config.
Agent CLIs emit events two ways โ a hook shim (a 200ms fire-and-forget write to a Unix socket, or a named pipe on Windows, that can never block your agent) and JSONL transcript watching. Both feed one channel; a reducer folds events into office state; the renderer draws it as half-block pixel art. Five Rust crates, zero terminal deps in the core.
Full architecture with diagrams โ ยท single source: docs/ARCHITECTURE.md
pixtuoid is local-only and telemetry-free โ it makes no network connections,
ships no analytics or "phone home", and reads your agent transcripts read-only to
animate the office. Your session data never leaves your machine. The dependency
set is audited for advisories daily (cargo-deny). For the trust boundaries (the
hook shim, the owner-only socket, and how hook installation edits another tool's
config), see SECURITY.md.
PRs welcome โ especially new themes, sprite/decoration polish, and Source adapters for agent CLIs we don't support yet (the twelve agent CLIs plus the OpenClaw gateway already wired up are in Supported Tools). See CONTRIBUTING.md for the build/test workflow, conventions, the review process, and how to add a new agent CLI. Architecture and the load-bearing invariants live in CLAUDE.md.
Inspired by pixel-agents (VS Code), clawd-on-desk (desktop pet), and Claude Code's Buddy.
.agents/
skills/
add-source
add-theme
beautify-decoration
procedural-lofi
two-lens-review
.ast-grep/
rule-tests/
no-comment-slop-py-test.yml
no-comment-slop-test.yml
rules/
no-comment-slop-py.yml
no-comment-slop.yml
.cargo/
config.toml
mutants.toml
.claude/
settings.json
skills/
add-source/
SKILL.md
add-theme/
SKILL.md
beautify-decoration/
SKILL.md
procedural-lofi/
reference/
LOFI-BIBLE.md
scripts/
analyze_drops.py
analyze_rain.py
analyze_typing.py
export_score.py
phase2_audition.py
synth_audition.py
SKILL.md
two-lens-review/
SKILL.md
.codex/
config.toml
.config/
nextest.toml
.gitattributes
.githooks/
pre-commit
pre-push
.github/
actionlint.yaml
actions/
packaging-build/
action.yml
setup-cargo-just/
action.yml
upload-codecov/
action.yml
copilot-instructions.md
dependabot.yml
FUNDING.yml
instructions/
rust.instructions.md
ISSUE_TEMPLATE/
bug_report.yml
config.yml
feature_request.yml
prompts/
add-source.prompt.md
add-theme.prompt.md
impl-plan.prompt.md
pr_review_rules.md
pr-review.prompt.md
review-schema.json
security_review_rules.md
PULL_REQUEST_TEMPLATE.md
workflows/
audit.yml
cache-cleanup.yml
ci-builds.yml
ci-lint.yml
ci-supplemental.yml
ci-tests.yml
ci.yml
claude-readonly-review.yml
claude-review.yml
claude-security-review.yml
claude.yml
codeql.yml
mutants.yml
pages.yml
raycast.yml
release.yml
risk-radar.yml
site.yml
upstream-drift.yml
zizmor.yml
.gitignore
.regal/
config.yaml
AGENTS.md
api/
pixtuoid-core.txt
pixtuoid-scene.txt
Cargo.lock
Cargo.toml
CLAUDE.md
cliff.toml
codecov.yml
crates/
pixtuoid/
pixtuoid-core/
AGENTS.md
Cargo.toml
CLAUDE.md
examples/
decoder_fuzz.rs
LAYOUT.md
proptest-regressions/
source/
jsonl/
tests.txt
SHARP-EDGES.md
src/
grid.rs
harness.rs
id.rs
lib.rs
platform.rs
source/
acp.rs
antigravity/
antigravity.rs
native.rs
cc_probe.rs
claude_code/
claude_code.rs
native.rs
codewhale.rs
codex/
codex.rs
native.rs
copilot/
copilot.rs
native.rs
cursor.rs
daemon/
daemon.rs
native.rs
decoder.rs
drift.rs
exit_watch.rs
fd_probe.rs
grok/
grok.rs
native.rs
hermes.rs
hook/
mod.rs
pid_watch.rs
router.rs
unix.rs
windows.rs
jsonl/
health.rs
liveness.rs
mod.rs
tests.rs
unclaim.rs
walk.rs
kimi.rs
manager.rs
mod.rs
native.rs
omp/
omp.rs
native.rs
openclaw.rs
opencode.rs
proc_start.rs
reasonix.rs
registry.rs
sprite/
blit.rs
format.rs
mod.rs
state/
correlation.rs
fsm.rs
mod.rs
reducer/
mod.rs
tests.rs
scope.rs
test_capture.rs
walkable.rs
tests/
AGENTS.md
CLAUDE.md
e2e.rs
proof_fixture_disjointness.rs
reducer/
activity.rs
child_ledger.rs
display.rs
lifecycle.rs
liveness.rs
main.rs
snapshot.rs
snapshots/
reducer__snapshot__full_scene_serialization_is_stable.snap
tasks.rs
render/
blit.rs
fixtures/
mini_pack/
idle.sprite
pack.toml
mini.sprite
format.rs
main.rs
socket_path_parity.rs
sources/
claude/
fixtures/
hook-payloads.jsonl
mod.rs
codewhale/
fixtures/
hook-payloads.jsonl
mod.rs
codex/
fixtures/
hook-payloads.jsonl
mod.rs
conformance.rs
decode/
fixtures/
hooks/
notification.json
post_tool_use_write.json
pre_tool_use_write.json
session_end.json
session_start.json
jsonl/
assistant_tool_use.json
tool_result.json
user_message.json
mod.rs
fixtures/
antigravity/
tool-run/
transcript.jsonl
claude-code/
permission/
01000000-0000-7000-8000-0000000000cd.jsonl
hook-payloads.jsonl
proof-session/
01000000-0000-7000-8000-0000000000f4.jsonl
hook-payloads.jsonl
tool-call/
01000000-0000-7000-8000-0000000000cc.jsonl
hook-payloads.jsonl
codewhale/
tool-run/
hook-payloads.jsonl
codex/
permission-flow/
hook-payloads.jsonl
rollout-2026-01-01T00-00-00-01000000-0000-7000-8000-000000000001.jsonl
tool-run/
hook-payloads.jsonl
rollout-2026-01-01T00-00-00-01000000-0000-7000-8000-000000000002.jsonl
copilot/
permission/
events.jsonl
tool-run/
events.jsonl
cursor/
tool-failure/
hook-payloads.jsonl
tool-run/
hook-payloads.jsonl
grok/
clean-exit/
hook-payloads.jsonl
updates.jsonl
permission-flow/
hook-payloads.jsonl
updates.jsonl
tool-run/
hook-payloads.jsonl
updates.jsonl
hermes/
tool-run/
hook-payloads.jsonl
kimi/
tool-run/
hook-payloads.jsonl
omp/
2026-07-10T18-00-00-000Z_01990000-0000-7000-8000-000000000001/
FixtureCaptureChild.jsonl
ask-round/
2026-07-10T09-00-00-000Z_01990000-0000-7000-8000-000000000003.jsonl
tool-run/
2026-07-10T08-00-00-000Z_01990000-0000-7000-8000-000000000002.jsonl
openclaw/
gateway_lifecycle/
hook-payloads.jsonl
gateway_mid_attach_failed_run/
hook-payloads.jsonl
opencode/
session-run/
hook-payloads.jsonl
README.md
reasonix/
permission-flow/
hook-payloads.jsonl
tool-run/
hook-payloads.jsonl
main.rs
manager.rs
snapshots/
sources__conformance__antigravity__tool-run.snap
sources__conformance__claude-code__permission.snap
sources__conformance__claude-code__proof-session.snap
sources__conformance__claude-code__tool-call.snap
sources__conformance__codewhale__tool-run.snap
sources__conformance__codex__permission-flow.snap
sources__conformance__codex__tool-run.snap
sources__conformance__copilot__permission.snap
sources__conformance__copilot__tool-run.snap
sources__conformance__cursor__tool-failure.snap
sources__conformance__cursor__tool-run.snap
sources__conformance__grok__clean-exit.snap
sources__conformance__grok__permission-flow.snap
sources__conformance__grok__tool-run.snap
sources__conformance__hermes__tool-run.snap
sources__conformance__kimi__tool-run.snap
sources__conformance__omp__2026-07-10T18-00-00-000Z_01990000-0000-7000-8000-000000000001.snap
sources__conformance__omp__ask-round.snap
sources__conformance__omp__tool-run.snap
sources__conformance__openclaw__gateway_lifecycle.snap
sources__conformance__openclaw__gateway_mid_attach_failed_run.snap
sources__conformance__opencode__session-run.snap
sources__conformance__reasonix__permission-flow.snap
sources__conformance__reasonix__tool-run.snap
supported_sources_manifest.rs
transport/
main.rs
pipe.rs
socket.rs
watcher/
attach.rs
first_sight.rs
liveness.rs
main.rs
sources.rs
tailing.rs
unclaim.rs
UPSTREAM-DRIFT.md
WHERE-TO-LOOK.md
pixtuoid-hook/
Cargo.toml
src/
cli_pid.rs
main.rs
paths.rs
tests.rs
transport.rs
tests/
pipe_quota_parity.rs
shim_pipe.rs
shim.rs
pixtuoid-scene/
AGENTS.md
build.rs
Cargo.toml
CLAUDE.md
examples/
corpus_check.rs
lofi_audition.rs
LAYOUT.md
SHARP-EDGES.md
sprites/
default/
back_couch.sprite
bookshelf.sprite
bulletin_board.sprite
cat_sit.sprite
cat_sleep.sprite
cat_walk_0.sprite
cat_walk_1.sprite
desk.sprite
desk@4x.sprite
dog_sit.sprite
dog_sleep.sprite
dog_walk_0.sprite
dog_walk_1.sprite
door_half.sprite
door_open.sprite
door.sprite
... 589 moreFAQ
pixtuoid is a Claude Code plugin with 5 hand-picked skills for development work, indexed on Flowy. Install it with the command on its page. It includes add-source, add-theme, beautify-decoration. Its skills do not fire on their own yet. Request auto-invocation to have Flowy route them as you prompt. Free and open source.