npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

agent-move

v1.0.3

Published

Watch your AI coding agents come alive as pixel-art characters in a 2D world

Downloads

1,066

Readme

AgentMove

Watch your AI coding agents come alive.

A real-time pixel-art visualizer that turns AI coding sessions into a living 2D world. Agents walk between rooms, use tools, chat, and rest — all rendered at 60fps in your browser.

npx agent-move@latest

npm version license


What You're Looking At

AgentMove reads AI coding agent session files and maps every tool call to one of 9 activity zones. Each agent gets a unique pixel-art character that physically walks between zones as it works.

It uses a hybrid data pipeline — JSONL file watching for rich data (tokens, costs, full text) combined with Claude Code hooks for precise lifecycle events (session start/end, tool success/failure, permissions).

| Zone | What Happens There | Tools | |------|--------------------|-------| | Files | Reading, writing, editing code | Read, Write, Edit, Glob | | Terminal | Running shell commands | Bash | | Search | Searching code and the web | Grep, WebSearch | | Web | Browsing, fetching, MCP tools | WebFetch, Playwright, MCP * | | Thinking | Planning and asking questions | EnterPlanMode, AskUserQuestion | | Messaging | Talking to other agents | SendMessage | | Tasks | Managing work items | TaskCreate, TaskUpdate | | Spawn | Agents arriving and departing | Agent, TeamCreate | | Idle | Resting after inactivity | — |

Getting Started

Prerequisites

  • Node.js 18+
  • Claude Code installed and used at least once (so ~/.claude/ exists)
  • Works on Windows, macOS, and Linux

One Command

npx agent-move@latest

That's it. The server starts, hooks are auto-installed, your browser opens, and any active coding session is visualized immediately.

On first run, AgentMove automatically:

  1. Installs Claude Code hooks into ~/.claude/settings.json (17 event types)
  2. Creates a hook script at ~/.agent-move/hooks/hook-sender.js
  3. Starts the server and opens your browser

Options

npx agent-move@latest --port 4000    # custom port (default: 3333)
npx agent-move@latest --no-open      # don't auto-open the browser
npx agent-move@latest --help         # show all options

Hooks Management

Hooks are auto-installed on first run. You can also manage them manually:

npx agent-move@latest hooks status      # check if hooks are installed
npx agent-move@latest hooks install     # (re)install hooks
npx agent-move@latest hooks uninstall   # remove hooks

AgentMove works without hooks too — it falls back to JSONL file watching. Hooks add precise session lifecycle, tool success/failure tracking, and permission management.

From Source (for development)

git clone https://github.com/AbdullahSAhmad/agent-move.git
cd agent-move
npm install
npm run dev

This starts the server on :3333 and the Vite dev server on :5173 with hot reload.

Features

Hooks Integration

  • Auto-install — hooks are set up on first run, no manual config needed
  • 17 event types — SessionStart, SessionEnd, PreToolUse, PostToolUse, PermissionRequest, SubagentStart, and more
  • Precise lifecycle — exact session start/end instead of timeout guessing
  • Tool outcomes — see green (success) vs red (failure) on completed tool calls
  • Permission management — approve/deny tool permissions from the visualization UI
  • Notification dashboard — priority-based feed of permissions, failures, idle alerts
  • Graceful fallback — everything works without hooks via JSONL watching

Visualization

  • Programmatic pixel-art sprites — 16x16 characters rendered at 3x scale, no external image assets
  • 12 color palettes — each agent gets a distinct look
  • 6 sprite variants — Human, Robot, Wizard, Ninja, Skeleton, Slime
  • Animations — idle breathing, walking between zones, working effects
  • Role badges — MAIN, SUB, LEAD, MEMBER based on session type
  • Speech bubbles — show the current tool or text output above each agent
  • Relationship lines — dashed connections between parent/child and team agents
  • Zone glow — rooms light up when agents are inside
  • Particle effects — sparkles on tool use
  • Agent trails — toggle fading trail dots behind moving agents (T)
  • Day/night cycle — ambient lighting based on your local time (N)
  • 4 themes — Office, Space, Castle, Cyberpunk — selectable from the top bar
  • Glassmorphism UI — modern bento-grid layout with flow lines

Dashboard

  • Sidebar navigation — collapsible sidebar with section navigation
  • Top bar — live stats (active agents, idle count, total cost, token velocity), and quick actions
  • Agent list — live sidebar with zone, current tool, token counts, and status indicators
  • Agent detail panel — click any agent to see model, role, tokens, uptime, git branch, recent files with diff viewer, and scrolling activity feed
  • Agent customization — rename agents and change their color palette (persisted in localStorage)
  • Minimap — clickable overview showing zone layout, agent positions, and viewport (`)
  • Activity feed — scrollable event log with timestamps and filtering
  • Waterfall view — Chrome DevTools-style timeline showing tool durations per agent
  • Relationship graph — interactive force-directed graph of agent parent/child/teammate connections

Analytics

  • Total cost tracking — real-time cost estimation including cache read/creation token pricing
  • Cache efficiency — cache hit rate percentage and estimated savings
  • Token velocity — tokens/min with sparkline chart and trend indicator
  • Cost by agent — per-agent cost breakdown with bar charts
  • Time by zone — cumulative time distribution across zones (including idle)
  • Tool usage — frequency breakdown of the most-used tools
  • Session duration — per-agent uptime with active/idle status
  • Cost threshold alerts — configurable budget alert with visual notification

Leaderboard

  • Agent rankings — sortable by tokens, cost, duration, or tool count
  • Medal badges — top 3 agents highlighted
  • Visual bars — proportional token usage comparison

Navigation & Controls

  • Pan & zoom — scroll wheel to zoom, click and drag to pan the world
  • Command palette — fuzzy search for any action (Ctrl+K)
  • Focus mode — follow an agent with smooth camera tracking (F to cycle, Esc to exit)
  • Timeline — scrubber with live/replay modes, speed control (0.5x–8x), event filters, and per-agent swim lanes
  • Session export — generate a markdown report of the session (E)
  • Sound effects — synthesized audio for spawn, zone changes, tool use, idle, and shutdown (M to mute)
  • Toast notifications — popup alerts for agent lifecycle events (spawn, idle, shutdown)
  • Keyboard shortcuts — press ? to see all available shortcuts
  • Auto-reconnect — WebSocket reconnects with exponential backoff if the connection drops

How It Works

                    ┌─────────────────┐
Hook events ──────→ │                 │
  (17 types,        │  AgentState     │
   push-based)      │  Manager        │──→ Broadcaster ──→ WebSocket ──→ Client
                    │                 │
JSONL watching ───→ │  (merged state) │
  (byte-offset,     └─────────────────┘
   pull-based)

Hook events provide lifecycle accuracy (exact session start/end, tool success/failure). JSONL parsing provides rich data (token counts, costs, full response text).

Architecture

Three-package monorepo (npm workspaces):

agent-move/
├── bin/cli.js              # npx entry point (auto-installs hooks)
├── packages/
│   ├── shared/             # Types & constants (zero dependencies)
│   │   └── src/
│   │       ├── types/          AgentState, HookEvent, ServerMessage, ZoneConfig
│   │       └── constants/      tool→zone map, zone configs, color palettes
│   ├── server/             # Fastify backend
│   │   └── src/
│   │       ├── hooks/          hook event manager, hook installer
│   │       ├── watcher/        chokidar file watcher, JSONL parser
│   │       ├── state/          agent state machine, anomaly detector, tool chains
│   │       ├── ws/             WebSocket broadcaster
│   │       └── routes/         REST API
│   └── client/             # Pixi.js frontend
│       └── src/
│           ├── sprites/        pixel-art data, palette resolver, sprite variants
│           ├── world/          zone renderer, grid, camera, themes, layout engine
│           ├── agents/         sprite logic, movement, relationships
│           ├── effects/        particles, zone glow, agent trails, flow lines
│           ├── connection/     WebSocket client, state store
│           ├── audio/          sound effects, notifications
│           └── ui/             sidebar, panels, overlays, waterfall, activity feed

Keyboard Shortcuts

| Key | Action | |-----|--------| | Ctrl+K | Command palette | | ? | Shortcuts help | | F | Cycle focus between agents | | Esc | Exit focus mode | | A | Toggle analytics | | L | Toggle leaderboard | | T | Toggle agent trails | | N | Toggle day/night cycle | | M | Toggle sound | | E | Export session | | ` | Toggle minimap | | P | Cycle theme | | H | Toggle heatmap |

API

| Endpoint | Description | |----------|-------------| | GET /api/health | Health check | | GET /api/state | All agent states as JSON | | POST /hook | Claude Code hook event receiver | | WS /ws | Real-time agent event stream |

The WebSocket sends a full_state snapshot on connect, then incremental events: agent:spawn, agent:update, agent:idle, agent:shutdown, permission:request, hooks:status.

Troubleshooting

| Problem | Solution | |---------|----------| | Port already in use | npx agent-move@latest --port 4444 | | Hooks not working | npx agent-move@latest hooks status to check, then hooks install to fix | | No agents showing up | Make sure Claude Code is running — agents appear when sessions are active | | Build artifacts missing (from source) | Run npm run build | | Permission denied on port | Use a port above 1024: --port 3333 | | Browser didn't open | Visit http://localhost:3333 manually, or check --no-open flag |

Need more help? Open an issue

Tech Stack

| Layer | Technology | |-------|------------| | Renderer | Pixi.js v8 (WebGL) | | Server | Fastify + @fastify/websocket | | File watching | chokidar v3 | | Client build | Vite | | Language | TypeScript (strict, ES modules) |

License

MIT