{"id":50448110,"url":"https://github.com/IvanWng97/pixtuoid","last_synced_at":"2026-06-08T09:00:38.843Z","repository":{"id":359291652,"uuid":"1245333424","full_name":"IvanWng97/pixtuoid","owner":"IvanWng97","description":"Terminal pixel-art office for AI coding agents — your Claude Code sessions, live.","archived":false,"fork":false,"pushed_at":"2026-06-04T01:15:40.000Z","size":30584,"stargazers_count":107,"open_issues_count":13,"forks_count":6,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-06-04T02:13:08.983Z","etag":null,"topics":["ai-agents","claude-code","cli","codex","pixel-art","ratatui","rust","terminal","tui","visualization"],"latest_commit_sha":null,"homepage":"https://crates.io/crates/pixtuoid","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/IvanWng97.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null},"funding":{"github":"IvanWng97","buy_me_a_coffee":"IvanWng97"}},"created_at":"2026-05-21T06:05:19.000Z","updated_at":"2026-06-03T23:50:33.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/IvanWng97/pixtuoid","commit_stats":null,"previous_names":["ivanwng97/ascii-agents","ivanwng97/pixtuoid"],"tags_count":6,"template":false,"template_full_name":null,"purl":"pkg:github/IvanWng97/pixtuoid","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/IvanWng97%2Fpixtuoid","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/IvanWng97%2Fpixtuoid/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/IvanWng97%2Fpixtuoid/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/IvanWng97%2Fpixtuoid/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/IvanWng97","download_url":"https://codeload.github.com/IvanWng97/pixtuoid/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/IvanWng97%2Fpixtuoid/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34055249,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-08T02:00:07.615Z","response_time":111,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["ai-agents","claude-code","cli","codex","pixel-art","ratatui","rust","terminal","tui","visualization"],"created_at":"2026-05-31T23:00:29.982Z","updated_at":"2026-06-08T09:00:38.836Z","avatar_url":"https://github.com/IvanWng97.png","language":"Rust","funding_links":["https://github.com/sponsors/IvanWng97","https://buymeacoffee.com/IvanWng97"],"categories":["Applications","💻 Apps"],"sub_categories":["Utilities","⌨️ Development Tools"],"readme":"\u003cp align=\"center\"\u003e\n  \u003cimg src=\"docs/images/sprite-banner.png\" alt=\"pixtuoid sprites\" width=\"500\" /\u003e\n\u003c/p\u003e\n\n\u003ch1 align=\"center\"\u003epixtuoid\u003c/h1\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003cem\u003eYour AI coding agents, visualized as pixel-art coworkers in a terminal office.\u003c/em\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003csub\u003e\u003cem\u003e\u003cb\u003epix\u003c/b\u003eel + \u003cb\u003etu\u003c/b\u003ei + (agent-)\u003cb\u003eoid\u003c/b\u003e\u003c/em\u003e\u003c/sub\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://github.com/IvanWng97/pixtuoid/stargazers\"\u003e\u003cimg src=\"https://img.shields.io/github/stars/IvanWng97/pixtuoid?style=flat-square\" alt=\"Stars\" /\u003e\u003c/a\u003e\n  \u003ca href=\"https://github.com/IvanWng97/pixtuoid/releases\"\u003e\u003cimg src=\"https://img.shields.io/github/v/release/IvanWng97/pixtuoid?label=version\u0026style=flat-square\" alt=\"Version\" /\u003e\u003c/a\u003e\n  \u003ca href=\"LICENSE\"\u003e\u003cimg src=\"https://img.shields.io/badge/license-MIT-blue.svg?style=flat-square\" alt=\"License\" /\u003e\u003c/a\u003e\n  \u003ca href=\"https://github.com/IvanWng97/pixtuoid/actions/workflows/ci.yml\"\u003e\u003cimg src=\"https://img.shields.io/github/actions/workflow/status/IvanWng97/pixtuoid/ci.yml?style=flat-square\u0026label=CI\" alt=\"CI\" /\u003e\u003c/a\u003e\n  \u003ca href=\"https://codecov.io/gh/IvanWng97/pixtuoid\"\u003e\u003cimg src=\"https://img.shields.io/codecov/c/github/IvanWng97/pixtuoid?style=flat-square\" alt=\"Coverage\" /\u003e\u003c/a\u003e\n  \u003ca href=\"https://claude.ai/code\"\u003e\u003cimg src=\"https://img.shields.io/badge/Built%20with-Claude%20Code-blueviolet?style=flat-square\u0026logo=anthropic\" alt=\"Built with Claude Code\" /\u003e\u003c/a\u003e\n  \u003ca href=\"https://buymeacoffee.com/IvanWng97\"\u003e\u003cimg src=\"https://img.shields.io/badge/Buy%20Me%20a%20Coffee-ffdd00?style=flat-square\u0026logo=buy-me-a-coffee\u0026logoColor=black\" alt=\"Buy Me a Coffee\" /\u003e\u003c/a\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"docs/images/demo.gif\" alt=\"pixtuoid animated demo\" width=\"800\" /\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://ivanwng97.github.io/pixtuoid/\"\u003e\u003cstrong\u003e🖥\u0026#xFE0E; Live demo ↗\u003c/strong\u003e\u003c/a\u003e\n  \u0026nbsp;·\u0026nbsp; \u003ca href=\"https://ivanwng97.github.io/pixtuoid/architecture\"\u003eArchitecture\u003c/a\u003e\n  \u0026nbsp;·\u0026nbsp; \u003ca href=\"https://ivanwng97.github.io/pixtuoid/config\"\u003eConfiguration\u003c/a\u003e\n  \u0026nbsp;·\u0026nbsp; \u003ca href=\"https://ivanwng97.github.io/pixtuoid/contributing\"\u003eContributing\u003c/a\u003e\n\u003c/p\u003e\n\n---\n\n## Why?\n\nRunning 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.\n\nA little bit *Black Mirror*, a little bit *The Sims* — and the most glanceable multi-agent dashboard you'll ever use.\n\n## Quick Start\n\n```bash\nbrew install IvanWng97/pixtuoid/pixtuoid\npixtuoid install-hooks\npixtuoid\n```\n\nIn another terminal, start a supported coding agent (Claude Code, Codex, Antigravity, Reasonix, …). A character walks in from the elevator within a second.\n\n**Keyboard shortcuts:** `q` quit · `p` pause · `t` themes · `?` help · `↑↓/jk/PgUp/PgDn` floors · click to pin tooltip\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cstrong\u003eMore install methods\u003c/strong\u003e\u003c/summary\u003e\n\n**Both packages are required** — `pixtuoid` (the visualizer) and `pixtuoid-hook` (the shim your agent invokes).\n\n### Pre-built binaries\n\nDownload from [GitHub Releases](https://github.com/IvanWng97/pixtuoid/releases/latest):\n\n| Platform | Tarball |\n|---|---|\n| macOS (Apple Silicon) | `pixtuoid-v*-aarch64-apple-darwin.tar.gz` |\n| macOS (Intel) | `pixtuoid-v*-x86_64-apple-darwin.tar.gz` |\n| Linux (x86_64, static) | `pixtuoid-v*-x86_64-unknown-linux-musl.tar.gz` |\n| Linux (ARM64) | `pixtuoid-v*-aarch64-unknown-linux-gnu.tar.gz` |\n\nDebian/Ubuntu `.deb`s (amd64/arm64) are on the same page — install the binary\n**and** the hook shim:\n\n```bash\nsudo dpkg -i pixtuoid_*.deb pixtuoid-hook_*.deb\n```\n\n### Cargo\n\n```bash\ncargo install pixtuoid pixtuoid-hook\n```\n\n### Windows (experimental)\n\nRequires [Windows Terminal](https://aka.ms/terminal) (the Windows 11 default).\nClaude Code only for now — Codex support is coming.\n\n1. Download `pixtuoid-\u003cversion\u003e-x86_64-pc-windows-msvc.zip` from the\n   [latest release](https://github.com/IvanWng97/pixtuoid/releases)\n2. Unblock before extracting (the exes are unsigned — SmartScreen marks\n   downloads): right-click the zip → Properties → Unblock, or\n   `Unblock-File .\\pixtuoid-*.zip` in PowerShell\n3. Extract anywhere and add the folder to your PATH\n4. `pixtuoid install-hooks` then `pixtuoid run`\n\nARM64 Windows: use the `aarch64-pc-windows-msvc` zip.\n\n### From source\n\n```bash\ngit clone https://github.com/IvanWng97/pixtuoid \u0026\u0026 cd pixtuoid\njust build --release\n```\n\nUpgrading from `ascii-agents` v0.3.x? See [docs/MIGRATION.md](docs/MIGRATION.md).\n\n\u003c/details\u003e\n\n## Features\n\n\u003c!-- features:start · generated from site/src/features.json by `just gen-readme` — edit the JSON, not this table --\u003e\n| | Feature | Description |\n|---|---|---|\n| 🏢 | **Multi-agent office** | Each agent session gets a desk; overflow agents auto-fill new floors |\n| 🛗 | **Multi-floor office** | PageUp/PageDown/↑↓/jk to navigate floors with slide transition |\n| 🎭 | **Animated characters** | Typing, waiting (`?`), sleeping (z's), walking with A\\*-routed pathfinding |\n| 💡 | **Per-tool monitor glow** | Edit = blue, Bash = orange, Read = cyan — scannable at a glance |\n| 🎨 | **Per-agent identity** | Deterministic shirt/hair/skin palette from session hash, 16 curated outfits |\n| 🌧️ | **Weather effects** | Rain, storm, snow, fog, overcast, windy — cycles every 10 min + sunset golden hour |\n| 📊 | **Tooltip stats** | Hover any agent to see session duration, tool call count, and active time % |\n| 🏷️ | **Furniture tooltips** | Hover any item — desks, sofas, plants, vending machine, printer — to see its name |\n| 🐾 | **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 |\n| ☕ | **Coffee run** | Idle agents visit the pantry, carry a cup back to their desk. Cup stays while you work; taken on exit |\n| 💬 | **Pantry chitchat** | 2+ idle agents at the same waypoint trigger speech bubbles with dev-humor snippets |\n| 🛡️ | **Hook-safe** | The shim always exits 0 — a stuck visualizer can never block your agent |\n\u003c!-- features:end --\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://ivanwng97.github.io/pixtuoid/#showcase\"\u003e\u003cstrong\u003e▶ See every feature live — floors, themes, weather, pets, the office tour →\u003c/strong\u003e\u003c/a\u003e\n\u003c/p\u003e\n\n## Supported Tools\n\n\u003c!-- tools:start · generated from site/src/sources.json by `just gen-readme` — edit the JSON, not this table --\u003e\n| Tool | Runs on |\n|---|---|\n| [Claude Code](https://code.claude.com) | macOS · Linux · Windows |\n| [Codex CLI](https://github.com/openai/codex) | macOS · Linux |\n\n_Also supported: [Antigravity CLI](https://github.com/antiGravity-AI/antigravity-cli), [DeepSeek-Reasonix](https://github.com/esengine/DeepSeek-Reasonix). Planned: Copilot CLI, OpenCode, Cursor CLI._\n\n**→ [Full tool × OS support matrix on the site](https://ivanwng97.github.io/pixtuoid/#tools)**\n\u003c!-- tools:end --\u003e\n\n\u003e Adding a new tool? Implement the [`Source` trait](#contributing) — or, for a hook-only CLI, just a hook decoder + an `install-hooks` target — then add a row to [`site/src/sources.json`](site/src/sources.json) (its `supported` set is pinned to the code by a test). One file, one channel, done.\n\n## Themes \u0026 Configuration\n\nPress `t` to cycle the built-in themes with live preview. Your choice persists across sessions:\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"docs/images/themes-composite.png\" alt=\"built-in themes side by side\" width=\"800\" /\u003e\n\u003c/p\u003e\n\nSettings live in `~/.config/pixtuoid/config.toml` — theme, desk cap, custom pet\nnames, and sprite packs. CLI flags override the file (`pixtuoid run --theme dracula`).\nSee **[docs/CONFIGURATION.md](docs/CONFIGURATION.md)** for the full key reference\n(defaults, system-managed keys), the custom sprite-pack workflow, and **logging /\ntroubleshooting** (the TUI writes warnings to `~/.cache/pixtuoid/log`) — or browse it\nlive at **[/config](https://ivanwng97.github.io/pixtuoid/config)**.\n\n## How It Works\n\nAgent CLIs emit events two ways — a hook shim (a 200ms fire-and-forget Unix-socket write 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. Three Rust crates, zero terminal deps in the core.\n\n**[Full architecture with diagrams →](https://ivanwng97.github.io/pixtuoid/architecture)** · single source: [`docs/ARCHITECTURE.md`](docs/ARCHITECTURE.md)\n\n## Contributing\n\nPRs welcome — especially new themes and `Source` adapters for other agent CLIs (Copilot, Cursor, OpenCode). See **[CONTRIBUTING.md](docs/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`](CLAUDE.md).\n\n## Acknowledgments\n\nInspired by [`pixel-agents`](https://github.com/pablodelucca/pixel-agents) (VS Code), [`clawd-on-desk`](https://github.com/rullerzhou-afk/clawd-on-desk) (desktop pet), and Claude Code's [Buddy](https://dev.to/picklepixel/how-i-reverse-engineered-claude-codes-hidden-pet-system-8l7).\n\n## License\n\n[MIT](LICENSE)\n\n## Star History\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://www.star-history.com/?repos=IvanWng97%2Fpixtuoid\u0026type=date\u0026legend=top-left\"\u003e\n    \u003cpicture\u003e\n      \u003csource media=\"(prefers-color-scheme: dark)\" srcset=\"https://api.star-history.com/svg?repos=IvanWng97/pixtuoid\u0026type=Date\u0026theme=dark\" /\u003e\n      \u003csource media=\"(prefers-color-scheme: light)\" srcset=\"https://api.star-history.com/svg?repos=IvanWng97/pixtuoid\u0026type=Date\" /\u003e\n      \u003cimg alt=\"star history chart for IvanWng97/pixtuoid\" src=\"https://api.star-history.com/svg?repos=IvanWng97/pixtuoid\u0026type=Date\" width=\"640\" /\u003e\n    \u003c/picture\u003e\n  \u003c/a\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003csub\u003eEnjoying the little office? \u003ca href=\"https://buymeacoffee.com/IvanWng97\"\u003e☕ Buy me a coffee\u003c/a\u003e · \u003ca href=\"https://github.com/IvanWng97/pixtuoid\"\u003e⭐ Star the repo\u003c/a\u003e\u003c/sub\u003e\n\u003c/p\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FIvanWng97%2Fpixtuoid","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FIvanWng97%2Fpixtuoid","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FIvanWng97%2Fpixtuoid/lists"}