MCPcopy Index your code
hub / github.com/IvanWng97/pixtuoid

github.com/IvanWng97/pixtuoid @v0.13.0

Chat with this repo
repository ↗ · DeepWiki ↗ · release v0.13.0 ↗ · + Follow
4,209 symbols 17,026 edges 259 files 1,050 documented · 25%
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

pixtuoid sprites

pixtuoid

Your AI coding agents, visualized as pixel-art coworkers in a terminal office.

pixel + tui + (agent-)oid

Stars Version License CI Coverage Built with Claude Code Buy Me a Coffee

pixtuoid animated demo

🖥︎ Live demo ↗  ·  Architecture  ·  Configuration  ·  Contributing


Why?

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.

Quick Start

Pick one — Homebrew on macOS, or npm on any OS:

Homebrew (macOS):

brew install IvanWng97/pixtuoid/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 · Tab agent dashboard · ? help · ↑↓/jk/PgUp/PgDn floors · click to pin tooltip

More ways to install — Cargo, prebuilt binaries, and Debian .debs — are on the install guide ↗.

Features

Feature Description
🏢 Multi-agent office Each agent session gets a desk; overflow agents auto-fill new floors
🛗 Multi-floor office PageUp/PageDown/↑↓/jk to navigate floors with slide transition
🪟 Floating desktop window pixtuoid floating opens a frameless, always-on-top desktop window of the office — not just a terminal TUI
🦞 OpenClaw gateway mascot A live OpenClaw gateway shows up as a wandering lobster whose motion tracks gateway health
🎛️ Vibing A sun and moon arc the skyline as the day turns, weather rolls past the windows (rain, storm, snow, fog, overcast, windy, smog), and six themes reskin the office
🐾 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
🎭 Animated characters Typing, waiting (?), sleeping (z's), walking with A*-routed pathfinding
🎨 Team palette Shirt + pants colored by working directory (same repo → same color, a glanceable org-chart); hair/skin per agent. 16 curated outfits
💡 Per-tool monitor glow Edit = blue, Bash = orange, Read = cyan — scannable at a glance
🔎 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
🛡️ Hook-safe The shim always exits 0 — a stuck visualizer can never block your agent

▶ See every feature live — floors, themes, weather, pets, the office tour →

Supported Tools

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, OpenClaw.

Full tool × OS support matrix on the site

* experimental — limited testing, unsigned binaries.

Adding a new tool? Implement the Source trait — or, for a hook-only CLI, just a hook decoder + an install Target — then add a row to site/src/sources.json (its supported set is pinned to the code by a test). One file, one channel, done.

Configuration

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.

the six built-in themes side by side

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.

How It Works

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

Privacy & Security

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.

Contributing

PRs welcome — especially new themes, sprite/decoration polish, and Source adapters for agent CLIs we don't support yet (the ten 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.

Acknowledgments

Inspired by pixel-agents (VS Code), clawd-on-desk (desktop pet), and Claude Code's Buddy.

License

MIT

Star History

  <img alt="star history chart for IvanWng97/pixtuoid" src="https://api.star-history.com/svg?repos=IvanWng97/pixtuoid&type=Date" width="640" />

Enjoying the little office? ☕ Buy me a coffee · ⭐ Star the repo

Extension points exported contracts — how you extend this code

Source (Interface)
A `Source` produces `AgentEvent`s from one agent CLI flavor (Claude Code, Codex, Cursor, Gemini, Copilot, etc.) and send [9 …
crates/pixtuoid-core/src/source/native.rs
Router (Interface)
Abstract pathfinder — implementations route from `from` to `to` over the supplied mask + overlay, returning a polyline ( [8 …
crates/pixtuoid-scene/src/pathfind.rs
Preferences (Interface)
(no doc)
integrations/raycast/src/pixtuoid.ts
InitOutput (Interface)
(no doc)
site/public/wasm/pixtuoid_web.d.ts
Window (Interface)
(no doc)
site/src/env.d.ts
DynSource (Interface)
Object-safety twin of [`Source`] — the type `SourceManager` actually boxes (`Box `). It exists ONLY becaus [1 implementers]
crates/pixtuoid-core/src/source/native.rs
OutcomeRow (Interface)
(no doc)
integrations/raycast/src/contract-outcome.ts
Floor (Interface)
(no doc)
site/src/consts.ts

Core symbols most depended-on inside this repo

map
called by 427
crates/pixtuoid-scene/src/floor.rs
apply
called by 392
crates/pixtuoid-core/src/state/reducer.rs
iter
called by 332
crates/pixtuoid-core/src/sprite/mod.rs
path
called by 322
crates/pixtuoid-core/src/source/hook/mod.rs
push
called by 322
crates/pixtuoid-core/src/source/jsonl/unclaim.rs
get
called by 222
crates/pixtuoid-core/src/grid.rs
now
called by 187
crates/pixtuoid-scene/src/overlay.rs
t0
called by 181
crates/pixtuoid/src/tui/tui_renderer/harness/mod.rs

Shape

Function 3,459
Method 447
Class 222
Enum 64
Interface 17

Languages

Rust96%
TypeScript2%
Python1%

Modules by API surface

crates/pixtuoid/src/config.rs84 symbols
crates/pixtuoid-core/src/source/jsonl/tests.rs84 symbols
crates/pixtuoid/src/tui/widgets/mod.rs82 symbols
crates/pixtuoid-scene/src/floor.rs73 symbols
crates/pixtuoid-scene/src/pixel_painter/tests.rs68 symbols
crates/pixtuoid-core/src/state/mod.rs65 symbols
crates/pixtuoid-scene/src/pose/tests.rs63 symbols
crates/pixtuoid/src/doctor.rs62 symbols
crates/pixtuoid-scene/src/pathfind.rs59 symbols
crates/pixtuoid-core/tests/sources/decode/mod.rs59 symbols
crates/pixtuoid/src/install/mod.rs55 symbols
crates/pixtuoid/src/sources.rs54 symbols

For agents

$ claude mcp add pixtuoid \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact