Sno Station
Sno Station is your agents' workstation: open-source software that turns the AI agents you already run into one squad on your own machine. Two heads are better than one, and they get better with every
Real-time visualization of Claude Code agents working as an animated office.
Translation pending
PluginsJavaScript · HTMLGitHub @howardguouiOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
No updates detected yet. GitHub releases will appear here.
Owners of public repositories under a personal GitHub account can sign in to verify ownership and manage the introduction themselves. No administrator approval is needed.
Sign in, generate a verification file, and commit it to this repository’s default branch within 30 minutes. Files on other branches or forks do not count. Then check the file below to manage the project without administrator approval. Keep the file to retain your access.
If needed, you will go to sign-in. After signing in, return here and press your chosen verification button again.
Run /nomorevibe verify in your project folder to verify ownership and manage the introduction yourself.
Verify in one minuteAsk about other verification options
Real-time visualization of Claude Code agents
Translation pending
Taken from the repository README
Loading the full README. The saved excerpt is shown below.
Real-time visualization of Claude Code agents — watch your AI work like a living office.
Every time Claude Code spawns a subagent, calls a tool, or passes work between agents — Agent Office shows it as an animated office. Agents appear at their desks, acquire skills, pass data packets to each other, and complete tasks in real time.
The demo runs a simulation. Install the plugin to see your actual Claude Code sessions.
2. Install into your Claude Code project
This copies the hook script and registers all events in .claude/settings.json.Read the full README ↗Real-time visualization of Claude Code agents — watch your AI work like a living office.
Every time Claude Code spawns a subagent, calls a tool, or passes work between agents — Agent Office shows it as an animated office. Agents appear at their desks, acquire skills, pass data packets to each other, and complete tasks in real time.
The demo runs a simulation. Install the plugin to see your actual Claude Code sessions.
Claude Code runs a task
│
├─ SubagentStart ──► .claude/hooks/send_event.py ──► HTTP POST
├─ PreToolUse ──► .claude/hooks/send_event.py ──► HTTP POST
├─ PostToolUse ──► .claude/hooks/send_event.py ──► HTTP POST
└─ SubagentStop ──► .claude/hooks/send_event.py ──► HTTP POST
│
Node.js Server
(localhost:4242)
│
WebSocket broadcast
│
┌────────────────────────┐
│ Agent Office UI │
│ Agent spawns → desk │
│ Tool use → progress │
│ Skill gained → badge │
│ Task done → pulse ✓ │
└────────────────────────┘
git clone https://github.com/howardguoui/agent-office.git
cd agent-office
./install.sh /path/to/your/project
This copies the hook script and registers all events in .claude/settings.json.
cd server
npm install
node index.js
http://localhost:4242
cd your-project
claude "build me a REST API with auth and tests"
Agents appear immediately as Claude Code spawns them. Watch them work.
| Visual | What's Happening in Claude Code |
|---|---|
| 🟣 New desk spawns | SubagentStart — new subagent created |
| ⚡ Progress bar fills | PreToolUse — tool being called |
| ★ Skill badge appears | Agent used a new tool type |
| → Packet flies | Work being passed between agents |
| 🟢 Green pulse | SubagentStop — task complete |
| Desk fades out | Subagent finished and exited |
| Hook Event | Trigger |
|---|---|
SubagentStart | New subagent spawned |
SubagentStop | Subagent finished |
PreToolUse | Tool about to run (Read, Write, Bash, Task…) |
PostToolUse | Tool completed |
PostToolUseFailure | Tool failed |
UserPromptSubmit | New prompt submitted |
SessionStart / End | Session lifecycle |
Stop | Claude Code finished |
plugin/)plugin/ is a second, newer way to run Agent Office. Instead of the office page it has a local broker and a Live2D
character on your desktop who reacts to your agents. Details are in plugin/README.md.
plugin/broker/): HTTP + WebSocket on 127.0.0.1:4242 (loopback only). It takes the same
POST /event hook events, normalizes Claude Code, Codex and Gemini CLI events into one shape, tracks
simultaneous sessions separately, and logs names-only metadata (never prompts, arguments or outputs).plugin/companion/): an Electron window with a Live2D character. She chats through a
local Ollama model, can pass what you type to Claude Code or Codex, and shows Allow / Deny approvals in her
speech bubble. COMPANION=off runs the broker without her.plugin/mcp-server/): two tools over stdio, agent_office_status and agent_office_open.cd plugin
npm ci
npm start # broker on 127.0.0.1:4242; opens the companion
npm test # node --test, no Electron or display needed
The broker and server/ both default to port 4242, so run one or the other.
agent-office/
├── .claude/
│ ├── hooks/
│ │ └── send_event.py # Forwards Claude Code events → server
│ └── settings.json # Registers hooks with Claude Code
├── server/
│ ├── index.js # WebSocket + HTTP server
│ ├── package.json
│ └── ui/
│ └── index.html # Live-connected visualization UI
├── plugin/ # Broker, desktop companion, MCP server (see plugin/README.md)
├── demo/
│ └── index.html # Standalone demo (GitHub Pages)
├── .github/
│ └── workflows/
│ ├── deploy-demo.yml # Auto-deploys demo to GitHub Pages
│ └── plugin-tests.yml # Runs the plugin's tests on push and pull request
├── install.sh # One-command installer
└── README.md
The hook sends to http://localhost:4242/event by default.
Override with an environment variable:
AGENT_OFFICE_URL=http://localhost:9999/event claude "do something"
plugin/)plugin/ broker tracks simultaneous Claude Code and Codex sessions)MIT — use it, fork it, ship it.
Built with Claude Code. Visualized by Agent Office.