[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-80509":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":9,"htmlUrl":10,"language":11,"languages":10,"totalLinesOfCode":10,"stars":12,"forks":13,"watchers":14,"openIssues":15,"contributorsCount":16,"subscribersCount":16,"size":16,"stars1d":17,"stars7d":18,"stars30d":19,"stars90d":16,"forks30d":16,"starsTrendScore":20,"compositeScore":21,"rankGlobal":10,"rankLanguage":10,"license":22,"archived":23,"fork":23,"defaultBranch":24,"hasWiki":23,"hasPages":23,"topics":25,"createdAt":10,"pushedAt":10,"updatedAt":35,"readmeContent":36,"aiSummary":37,"trendingCount":16,"starSnapshotCount":16,"syncStatus":38,"lastSyncTime":39,"discoverSource":40},80509,"pixtuoid","IvanWng97\u002Fpixtuoid","IvanWng97","Terminal pixel-art office for AI coding agents","https:\u002F\u002Fcrates.io\u002Fcrates\u002Fpixtuoid",null,"Rust",268,13,82,6,0,10,155,184,53,3.44,"MIT License",false,"main",[26,27,28,29,30,31,32,33,34],"ai-agents","claude-code","cli","pixel-art","ratatui","rust","terminal","tui","visualization","2026-06-12 02:04:03","\u003Cp align=\"center\">\n  \u003Cimg src=\"docs\u002Fimages\u002Fsprite-banner.png\" alt=\"pixtuoid sprites\" width=\"500\" \u002F>\n\u003C\u002Fp>\n\n\u003Ch1 align=\"center\">pixtuoid\u003C\u002Fh1>\n\n\u003Cp align=\"center\">\n  \u003Cem>Your AI coding agents, visualized as pixel-art coworkers in a terminal office.\u003C\u002Fem>\n\u003C\u002Fp>\n\n\u003Cp align=\"center\">\n  \u003Csub>\u003Cem>\u003Cb>pix\u003C\u002Fb>el + \u003Cb>tu\u003C\u002Fb>i + (agent-)\u003Cb>oid\u003C\u002Fb>\u003C\u002Fem>\u003C\u002Fsub>\n\u003C\u002Fp>\n\n\u003Cp align=\"center\">\n  \u003Ca href=\"https:\u002F\u002Fgithub.com\u002FIvanWng97\u002Fpixtuoid\u002Fstargazers\">\u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Fstars\u002FIvanWng97\u002Fpixtuoid?style=flat-square\" alt=\"Stars\" \u002F>\u003C\u002Fa>\n  \u003Ca href=\"https:\u002F\u002Fgithub.com\u002FIvanWng97\u002Fpixtuoid\u002Freleases\">\u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Fv\u002Frelease\u002FIvanWng97\u002Fpixtuoid?label=version&style=flat-square\" alt=\"Version\" \u002F>\u003C\u002Fa>\n  \u003Ca href=\"LICENSE\">\u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Flicense-MIT-blue.svg?style=flat-square\" alt=\"License\" \u002F>\u003C\u002Fa>\n  \u003Ca href=\"https:\u002F\u002Fgithub.com\u002FIvanWng97\u002Fpixtuoid\u002Factions\u002Fworkflows\u002Fci.yml\">\u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Factions\u002Fworkflow\u002Fstatus\u002FIvanWng97\u002Fpixtuoid\u002Fci.yml?style=flat-square&label=CI\" alt=\"CI\" \u002F>\u003C\u002Fa>\n  \u003Ca href=\"https:\u002F\u002Fcodecov.io\u002Fgh\u002FIvanWng97\u002Fpixtuoid\">\u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fcodecov\u002Fc\u002Fgithub\u002FIvanWng97\u002Fpixtuoid?style=flat-square\" alt=\"Coverage\" \u002F>\u003C\u002Fa>\n  \u003Ca href=\"https:\u002F\u002Fclaude.ai\u002Fcode\">\u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FBuilt%20with-Claude%20Code-blueviolet?style=flat-square&logo=anthropic\" alt=\"Built with Claude Code\" \u002F>\u003C\u002Fa>\n  \u003Ca href=\"https:\u002F\u002Fbuymeacoffee.com\u002FIvanWng97\">\u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FBuy%20Me%20a%20Coffee-ffdd00?style=flat-square&logo=buy-me-a-coffee&logoColor=black\" alt=\"Buy Me a Coffee\" \u002F>\u003C\u002Fa>\n\u003C\u002Fp>\n\n\u003Cp align=\"center\">\n  \u003Cimg src=\"docs\u002Fimages\u002Fdemo.gif\" alt=\"pixtuoid animated demo\" width=\"800\" \u002F>\n\u003C\u002Fp>\n\n\u003Cp align=\"center\">\n  \u003Ca href=\"#quick-start\">Quick Start\u003C\u002Fa> · \u003Ca href=\"#features\">Features\u003C\u002Fa> · \u003Ca href=\"#supported-tools\">Supported Tools\u003C\u002Fa> · \u003Ca href=\"#themes--configuration\">Themes & Configuration\u003C\u002Fa> · \u003Ca href=\"#how-it-works\">How It Works\u003C\u002Fa>\n\u003C\u002Fp>\n\n---\n\n## Why?\n\nRunning multiple AI agents in the terminal is like managing a sweatshop you can't see. They type, they wait, they finish — and you have no idea who's doing what unless you scroll through logs like a bureaucrat.\n\n**pixtuoid** puts them all in a tiny pixel-art office you can watch from above. A little bit *Black Mirror*, a little bit *The Sims* — and somehow the most intuitive multi-agent dashboard you'll ever use.\n\n## Who's it for?\n\n- You're running 3+ AI coding agents and losing track of who's stuck on what.\n- You want a glanceable activity signal without tailing logs.\n- You think coding agents should have a vibe.\n\n## Quick Start\n\n```bash\nbrew install IvanWng97\u002Fpixtuoid\u002Fpixtuoid\npixtuoid install-hooks\npixtuoid\n```\n\nIn another terminal, start a Claude Code session. A character walks in from the elevator within a second.\n\n**Keyboard shortcuts:** `q` quit · `p` pause · `t` themes · `↑↓\u002Fjk\u002FPgUp\u002FPgDn` floors · click to pin tooltip\n\n\u003Cdetails>\n\u003Csummary>\u003Cstrong>More install methods\u003C\u002Fstrong>\u003C\u002Fsummary>\n\n### Pre-built binaries\n\nDownload from [GitHub Releases](https:\u002F\u002Fgithub.com\u002FIvanWng97\u002Fpixtuoid\u002Freleases\u002Flatest):\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\n### Cargo\n\n```bash\ncargo install pixtuoid pixtuoid-hook\n```\n\n### From source\n\n```bash\ngit clone https:\u002F\u002Fgithub.com\u002FIvanWng97\u002Fpixtuoid && cd pixtuoid\ncargo build --release\n```\n\n\u003C\u002Fdetails>\n\n## Features\n\n| | Feature | Description |\n|---|---|---|\n| 🏢 | **Multi-agent office** | Each CC session gets a desk; overflow agents auto-fill new floors |\n| 🛗 | **Multi-floor office** | PageUp\u002FPageDown\u002F↑↓\u002Fjk to navigate floors with slide transition |\n| 🎭 | **Animated characters** | Typing, thinking (`···`), 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\u002Fhair\u002Fskin 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 cat** | 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| 🪴 | **Desk personalization** | Plant (30min), photo frame (1hr) appear over time |\n| 🛡️ | **Hook-safe** | The shim always exits 0 — a stuck visualizer can never block Claude Code |\n\n## Supported Tools\n\n| Tool | Status | Notes |\n|---|---|---|\n| [**Claude Code**](https:\u002F\u002Fcode.claude.com) | ✅ Supported | Hook shim + JSONL watcher |\n| [**Antigravity CLI**](https:\u002F\u002Fgithub.com\u002FantiGravity-AI\u002Fantigravity-cli) | ✅ Supported | JSONL watcher |\n| [**Codex CLI**](https:\u002F\u002Fgithub.com\u002Fopenai\u002Fcodex) | 🔜 Planned | Same hook pattern as CC |\n| [**Copilot CLI**](https:\u002F\u002Fgithub.com\u002Fgithub\u002Fcopilot-cli) | 🔜 Planned | Identical event names |\n| [**OpenCode**](https:\u002F\u002Fgithub.com\u002Fanomalyco\u002Fopencode) | 🔜 Planned | Any LLM (DeepSeek \u002F GPT \u002F Claude \u002F Gemini) |\n| [**Cursor CLI**](https:\u002F\u002Fcursor.com\u002Fcli) | 🔜 Planned | NDJSON stream |\n\n> Adding a new tool? Implement the [`Source` trait](#contributing) — one file, one channel, done.\n\n## Themes & Configuration\n\nPress `t` to switch themes with live preview. Your choice persists across sessions. 6 built-in:\n\n\u003Cp align=\"center\">\n  \u003Cimg src=\"docs\u002Fimages\u002Fthemes-composite.png\" alt=\"6 themes: Normal, Cyberpunk, Dracula, Tokyo Night, Catppuccin, Gruvbox\" width=\"800\" \u002F>\n\u003C\u002Fp>\n\nSettings are stored in `~\u002F.config\u002Fpixtuoid\u002Fconfig.toml` (respects `$XDG_CONFIG_HOME`).\nThe file is created on first launch. All user settings below are **optional** —\nomit any key to use its default.\n\n```toml\ntheme = \"cyberpunk\"\nmax-desks = 8\npack-dir = \"~\u002F.config\u002Fpixtuoid\u002Fpacks\u002Frobot\"\nenabled-pets = [\"cat\", \"dog\"]\n```\n\n**User settings** (safe to edit):\n\n| Key | Default | Description |\n|-----|---------|-------------|\n| `theme` | `\"normal\"` | Color theme — `normal`, `cyberpunk`, `dracula`, `tokyo-night`, `catppuccin`, `gruvbox` |\n| `max-desks` | auto | Cap desks per floor. If unset, auto-computed from terminal size. Excess agents overflow to additional floors. |\n| `pack-dir` | — | Custom sprite pack directory. Supports `~` expansion. |\n| `enabled-pets` | `[\"cat\", \"dog\"]` | Which pets appear in the office. Omit or list a subset (`[\"cat\"]`) to disable some. |\n\n**System-managed** (don't edit — pixtuoid writes these for you):\n\n| Key | Purpose |\n|-----|---------|\n| `last-seen-version` | Tracks the highest version you've launched, so the \"what's new\" popup only fires once per upgrade. Pixtuoid overwrites this on every launch. |\n\nCLI flags override config: `pixtuoid run --theme dracula`\n\n### Custom Sprite Packs\n\nCreate your own character sprites:\n\n```bash\npixtuoid init-pack .\u002Fmy-pack     # extract skeleton template\n# edit the .sprite files in .\u002Fmy-pack\npixtuoid validate-pack .\u002Fmy-pack # check for missing animations\npixtuoid run --pack-dir .\u002Fmy-pack\n```\n\nA **robot** pack ships as an example at `sprites\u002Frobot\u002F`. See the [sprite format docs](CLAUDE.md) for palette keys and animation requirements.\n\n## How It Works\n\n\u003Cdetails>\n\u003Csummary>\u003Cstrong>Architecture\u003C\u002Fstrong>\u003C\u002Fsummary>\n\n```\nCC tool call ──► CC fires hook ──► pixtuoid-hook (shim)\n                                         │ JSON over Unix socket\n                                         ▼\n                                  \u002Ftmp\u002Fpixtuoid-{uid}.sock\n                                         │\n                       HookSocketListener ─────► ┐\n                                                 │ (Transport, AgentEvent)\n                       JsonlWatcher       ─────► ┤ shared mpsc channel\n                                                 ▼\n                       Reducer ──► SceneState (watch channel)\n                                         │\n                       TuiRenderer ──► draw_scene @ ~30fps\n                       (pose → pixel_painter → RgbBuffer → half-block → ratatui)\n```\n\nThree Rust crates:\n\n| Crate | Role |\n|---|---|\n| **pixtuoid-core** | Headless library — no terminal deps. Source trait, reducer, pose, layout, sprites. |\n| **pixtuoid** | TUI binary — ratatui + crossterm + tokio. Half-block rendering + theme system. |\n| **pixtuoid-hook** | Tiny shim CC invokes from hooks. 200ms timeout, always exits 0. |\n\n\u003C\u002Fdetails>\n\n\u003Cdetails>\n\u003Csummary>\u003Cstrong>Migrating from \u003Ccode>ascii-agents\u003C\u002Fcode> (v0.3.x → v0.4.0)\u003C\u002Fstrong> — rename, hooks, config paths\u003C\u002Fsummary>\n\n**v0.4.0 renamed the project from `ascii-agents` to `pixtuoid`.**\n\n### What changed\n\n| Before (v0.3.x) | After (v0.4.0) |\n|---|---|\n| `ascii-agents` binary | `pixtuoid` |\n| `ascii-agents-hook` shim | `pixtuoid-hook` |\n| `~\u002F.config\u002Fascii-agents\u002F` | `~\u002F.config\u002Fpixtuoid\u002F` |\n| `~\u002F.cache\u002Fascii-agents\u002F` | `~\u002F.cache\u002Fpixtuoid\u002F` |\n| `\u002Ftmp\u002Fascii-agents-{uid}.sock` | `\u002Ftmp\u002Fpixtuoid-{uid}.sock` |\n| `_ascii_agents` hook key in `settings.json` | `_pixtuoid` |\n\n### Upgrade steps\n\n1. **Install the new version:**\n   ```bash\n   brew untap IvanWng97\u002Fascii-agents 2>\u002Fdev\u002Fnull\n   brew install IvanWng97\u002Fpixtuoid\u002Fpixtuoid\n   # or: cargo install pixtuoid pixtuoid-hook\n   ```\n\n2. **Re-register hooks** (replaces old `ascii-agents-hook` entries automatically):\n   ```bash\n   pixtuoid install-hooks\n   ```\n\n3. **Migrate config** (optional — only if you customized `config.toml`):\n   ```bash\n   mkdir -p ~\u002F.config\u002Fpixtuoid\n   mv ~\u002F.config\u002Fascii-agents\u002Fconfig.toml ~\u002F.config\u002Fpixtuoid\u002Fconfig.toml\n   ```\n\n> **GitHub links:** The old `IvanWng97\u002Fascii-agents` URL automatically redirects to `IvanWng97\u002Fpixtuoid`. Existing bookmarks and stars carry over.\n\n\u003C\u002Fdetails>\n\n## Contributing\n\nSee [`CLAUDE.md`](CLAUDE.md) for architecture and conventions. PRs welcome — especially new themes and `Source` adapters for other agent CLIs (Codex, Cursor, Gemini).\n\n\u003Cdetails>\n\u003Csummary>\u003Cstrong>Adding a new agent CLI\u003C\u002Fstrong>\u003C\u002Fsummary>\n\nImplement the `Source` trait and plug in via `SourceManager::with_source()`:\n\n```rust\n#[async_trait]\npub trait Source: Send + 'static {\n    fn name(&self) -> &str;\n    async fn run(self: Box\u003CSelf>, tx: TaggedSender) -> anyhow::Result\u003C()>;\n}\n```\n\n\u003C\u002Fdetails>\n\n## Acknowledgments\n\nInspired by [`pixel-agents`](https:\u002F\u002Fgithub.com\u002Fpablodelucca\u002Fpixel-agents) (VS Code), [`clawd-on-desk`](https:\u002F\u002Fgithub.com\u002Frullerzhou-afk\u002Fclawd-on-desk) (desktop pet), and Claude Code's [Buddy](https:\u002F\u002Fdev.to\u002Fpicklepixel\u002Fhow-i-reverse-engineered-claude-codes-hidden-pet-system-8l7).\n\n## Support\n\nIf you enjoy pixtuoid, consider [buying me a coffee](https:\u002F\u002Fbuymeacoffee.com\u002FIvanWng97) :)\n\n## License\n\n[MIT](LICENSE)\n","pixtuoid 是一个在终端中以像素艺术风格展现 AI 编码代理活动的工具。它利用 Rust 语言开发，结合了 Ratatui 等技术来创建一个直观且生动的工作环境视图，让用户能够轻松跟踪多个 AI 代理的状态和进度。项目支持多种 AI 工具，并提供了丰富的主题配置选项，使得开发者不仅能够高效管理代码生成任务，还能享受到一种独特的视觉体验。适合那些需要同时运行三个或以上 AI 编码助手，并希望简化监控过程、提升工作乐趣的程序员使用。",2,"2026-06-11 04:01:01","CREATED_QUERY"]