{"id":44956890,"url":"https://github.com/coding-by-feng/ai-agent-session-center","last_synced_at":"2026-05-06T06:05:44.773Z","repository":{"id":337915574,"uuid":"1155793470","full_name":"coding-by-feng/ai-agent-session-center","owner":"coding-by-feng","description":"Real-time dashboard that turns AI coding agent sessions (Claude Code, Gemini CLI, Codex) into animated 3D robots — with live terminals, prompt history, tool logs, and queuing. Runs on any device.","archived":false,"fork":false,"pushed_at":"2026-03-08T11:14:02.000Z","size":35162,"stargazers_count":38,"open_issues_count":0,"forks_count":4,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-03-08T14:44:07.372Z","etag":null,"topics":["ai","ai-agents","claude","claude-code","codex","gemini","vibe-coding","vibecoding"],"latest_commit_sha":null,"homepage":"https://aasc.work","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/coding-by-feng.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"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}},"created_at":"2026-02-11T22:58:58.000Z","updated_at":"2026-03-08T13:06:31.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/coding-by-feng/ai-agent-session-center","commit_stats":null,"previous_names":["coding-by-feng/ai-agent-session-center"],"tags_count":2,"template":false,"template_full_name":null,"purl":"pkg:github/coding-by-feng/ai-agent-session-center","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/coding-by-feng%2Fai-agent-session-center","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/coding-by-feng%2Fai-agent-session-center/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/coding-by-feng%2Fai-agent-session-center/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/coding-by-feng%2Fai-agent-session-center/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/coding-by-feng","download_url":"https://codeload.github.com/coding-by-feng/ai-agent-session-center/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/coding-by-feng%2Fai-agent-session-center/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30448551,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-12T21:31:01.033Z","status":"ssl_error","status_checked_at":"2026-03-12T21:30:43.161Z","response_time":114,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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","ai-agents","claude","claude-code","codex","gemini","vibe-coding","vibecoding"],"created_at":"2026-02-18T12:06:37.786Z","updated_at":"2026-03-13T00:06:23.989Z","avatar_url":"https://github.com/coding-by-feng.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# AI Agent Session Center\n\nA lightweight, real-time dashboard that replaces heavy IDEs like VS Code and JetBrains for AI agent workflows. Monitor and control all your Claude Code, Gemini CLI, and Codex sessions from one place — with live SSH terminals, prompt history, tool logs, and queuing. Every session spawns an animated 3D robot in an interactive cyberdrome that visually reflects what the agent is doing. Runs on any device, anywhere.\n\n[![npm version](https://img.shields.io/npm/v/ai-agent-session-center.svg)](https://www.npmjs.com/package/ai-agent-session-center)\n[![npm downloads](https://img.shields.io/npm/dm/ai-agent-session-center.svg)](https://www.npmjs.com/package/ai-agent-session-center)\n[![Node.js](https://img.shields.io/badge/Node.js-18+-green)](https://nodejs.org)\n[![License](https://img.shields.io/badge/License-MIT-yellow)](./LICENSE)\n\n## Demo\n\n**[Live demo → aasc.work/demo](https://aasc.work/demo)**\n\n### Desktop\n\n\u003ctable\u003e\n  \u003ctr\u003e\n    \u003ctd\u003e\u003cimg src=\"static/screenshot-dashboard.png\" alt=\"3D cyberdrome with active agent sessions across project rooms\" width=\"400\"\u003e\u003c/td\u003e\n    \u003ctd\u003e\u003cimg src=\"static/screenshot-terminal.png\" alt=\"SSH terminal session — control agents from the dashboard\" width=\"400\"\u003e\u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd\u003e\u003cimg src=\"static/screenshot-project-tab-detailed.png\" alt=\"Split view with detailed session switcher cards — terminal and project file browser side by side\" width=\"400\"\u003e\u003c/td\u003e\n    \u003ctd\u003e\u003cimg src=\"static/screenshot-project-tab-compact.png\" alt=\"Split view with compact session switcher — terminal and project file browser side by side\" width=\"400\"\u003e\u003c/td\u003e\n  \u003c/tr\u003e\n\u003c/table\u003e\n\n### Mobile\n\n\u003ctable\u003e\n  \u003ctr\u003e\n    \u003ctd\u003e\u003cimg src=\"static/screenshot-mobile-home.png\" alt=\"Mobile — 3D cyberdrome with session list\" width=\"160\"\u003e\u003c/td\u003e\n    \u003ctd\u003e\u003cimg src=\"static/screenshot-mobile-terminal.png\" alt=\"Mobile — terminal tab with live conversation\" width=\"160\"\u003e\u003c/td\u003e\n    \u003ctd\u003e\u003cimg src=\"static/screenshot-mobile-project.png\" alt=\"Mobile — project file browser\" width=\"160\"\u003e\u003c/td\u003e\n    \u003ctd\u003e\u003cimg src=\"static/screenshot-mobile-history.png\" alt=\"Mobile — session history with filters\" width=\"160\"\u003e\u003c/td\u003e\n  \u003c/tr\u003e\n\u003c/table\u003e\n\n### Video\n\nhttps://github.com/user-attachments/assets/004ee6f9-942c-44c2-a4c5-d971fa0e824b\n\n## Why?\n\nWhen you're running multiple AI coding agents across different terminals — Claude Code in one, Gemini in another, Codex in a third — it's impossible to keep track of what each one is doing. Which agent is stuck waiting for approval? Which one finished and needs your next prompt? Which one is burning tokens on a runaway loop? Agent Session Center gives you a single view across all your AI coding sessions so you can stay in control without constantly switching terminals.\n\n## Features\n\n### 3D Cyberdrome Scene\n\n- **One agent, one robot** — every AI coding session gets its own animated 3D character in an interactive cyberdrome\n- **8 animation states** — robots idle, walk, run, wait, dance, wave, or go offline based on real-time session status\n- **6 procedural robot models** — robot, mech, drone, spider, orb, and tank variants with auto-assigned neon colors\n- **Dynamic room system** — four-quadrant office layout with desks, coffee lounge, gym, corridor rooms, and spatial navigation AI\n- **Subagent connections** — parent-child agent teams render as connected robots with animated laser-line beams\n- **Speech bubbles \u0026 particles** — floating dialogue shows current tool/prompt, burst particles on state transitions\n- **Camera fly-to** — smooth animated camera focuses on the selected robot; OrbitControls for manual pan/zoom/rotate\n- **Flat list fallback** — 2D sidebar list auto-activates if 3D crashes or for low-resource environments\n\n### Session Detail Panel\n\n- **Resizable detail panel** — slides in from the right (320px–95vw) with 7 tabs: Terminal, Prompts, Project, Queue, Notes, Activity, Summary\n- **Session switcher** — horizontal tab strip shows all active sessions with sequence numbers, pin/unpin, compact/detailed display modes\n- **Editable metadata** — inline-edit title, label, accent color (customizes robot glow), and pin state; all persisted to SQLite + IndexedDB\n- **Session controls** — Resume, Kill, Archive, Delete, Summarize, Alert, room assignment, and label chips (ONEOFF, HEAVY, IMPORTANT)\n- **Split view** — Terminal and Project side-by-side with a draggable divider (ratio persisted per session)\n- **Approval alerts** — yellow card, visor flash, and 3-burst alarm when tools need user approval\n\n### Terminal \u0026 SSH\n\n- **Full terminal emulation** — xterm.js 5 with 256 colors, Unicode 11, WebLinks, and FitAddon\n- **Local \u0026 SSH sessions** — create terminals with working directory, command, SSH host/key/password, tmux wrap/attach\n- **Session resume** — reconnect to disconnected Claude sessions via `claude --resume` with one click\n- **Terminal bookmarks** — save scroll positions with notes, jump back to any bookmarked line\n- **Terminal toolbar** — fullscreen, clear, copy, paste, theme selector (auto, light, dark, Solarized, Dracula, custom)\n- **Bidirectional WebSocket relay** — real-time I/O, 50ms debounced resize, Escape forwards `\\x1b` to SSH\n\n### Project File Browser\n\n- **Browse \u0026 search** — navigate project directories, full-text file search with cached results\n- **Syntax highlighting** — code viewer with line numbers, word wrap toggle, and markdown outline panel\n- **Sub-tab system** — open multiple directories/files in tabs within the Project panel\n- **File bookmarks** — save line references with notes; bookmarked lines highlighted in the code viewer; cross-file navigation\n- **Sort \u0026 filter** — sort by name or date, toggle date/time display, file size shown per entry\n- **File editing** — inline editor with save support for quick edits\n\n### Multi-CLI Monitoring\n\n- **Three AI CLIs** — Claude Code (up to 14 events), Gemini CLI (4 events), and Codex (1 event)\n- **3 hook density levels** — High (full monitoring), Medium (default, 12 events), Low (5 events, minimal overhead)\n- **File-based message queue** — hooks append to JSONL queue file via atomic POSIX append (~0.1ms); HTTP POST fallback\n- **3–17ms end-to-end latency** — from hook fired to browser updated\n- **5-priority session matching** — pending resume, terminal ID, working directory, path scan, PID parent check\n- **Approval detection** — tool-category timeouts with child-process check; `PermissionRequest` event for reliable signal\n- **CLI badge detection** — auto-detects CLAUDE, GEMINI, CODEX, or AIDER from launch command\n\n### Prompt Queue\n\n- **Global queue view** — see all pending prompts across every session in one place\n- **Per-session queue** — compose, reorder (drag-and-drop), send, and move prompts between sessions\n- **Auto-send mode** — queued prompts auto-dispatch when the target session becomes idle\n\n### Analytics \u0026 History\n\n- **History search** — full-text search across titles, projects, and labels with date range, status, and sort filters\n- **Analytics dashboard** — summary cards, 7-day activity heatmap, tool usage breakdown, active projects ranking\n- **Timeline view** — time-series visualization (hourly, daily, weekly) of sessions, prompts, and tool calls\n\n### Theming \u0026 Sound\n\n- **9 scene themes** — Command Center, Cyberpunk, Dracula, Nord, Monokai, Solarized, Light, Warm, Blonde\n- **16 synthesized sounds** — per-CLI profiles with per-event sound mapping (chime, ping, alarm, fanfare, etc.)\n- **6 ambient presets** — rain, lo-fi, server room, deep space, coffee shop, or off\n- **Visual effects** — glowing card borders, pulsing animations, scanline CRT overlay, status particles, fog depth by theme\n\n### Notes \u0026 Summaries\n\n- **Session notes** — plain-text notes with full CRUD, stored in both SQLite and IndexedDB\n- **AI-powered summaries** — generate session summaries via configured LLM API with customizable prompt templates\n\n### Authentication \u0026 Security\n\n- **Password protection** — optional login with HttpOnly cookie (1-hour TTL), rate-limited (5 attempts/15min)\n- **Security headers** — X-Frame-Options, CSP, CORS, localhost-only hook endpoint, shell metacharacter injection prevention\n- **Directory traversal protection** — `resolveProjectPath()` validates all file browser paths\n\n### Keyboard Shortcuts\n\n- **Full keyboard navigation** — `/` search, `T` new terminal, `K` kill, `A` archive, `M` mute, `S` settings, `?` shortcuts panel\n- **Rebindable shortcuts** — customize every shortcut from Settings with conflict detection\n- **Session switching** — `Alt+Cmd+1`–`9` to select Nth session by status priority\n\n### Data Persistence\n\n- **Dual storage** — SQLite on server (sessions, prompts, tools, events, notes) + IndexedDB via Dexie in browser (12 tables)\n- **Auto-snapshots** — server saves full state every 10 seconds; SSH terminals auto-respawn on restart\n- **Session ID migration** — seamless re-keying when sessions resume with new IDs\n\n\u003e See [docs/feature/README.md](docs/feature/README.md) for the complete features reference with architecture details and API documentation.\n\n## Requirements\n\n- **Node.js 18+** with npm\n- **jq** (recommended) for hook enrichment — hooks still work without it but with less metadata\n- One or more supported AI CLIs:\n  - [Claude Code](https://docs.anthropic.com/en/docs/claude-code)\n  - [Gemini CLI](https://github.com/google-gemini/gemini-cli)\n  - [Codex CLI](https://github.com/openai/codex)\n\n## Getting Started\n\n### Using npx (Recommended)\n\n```bash\nnpx ai-agent-session-center\n```\n\nThe dashboard starts at **http://localhost:3333** (default port, configurable during setup) and automatically configures hooks.\n\n### Global Install (if npx is not available)\n\n```bash\nnpm install -g ai-agent-session-center\nai-agent-session-center\n```\n\n### Uninstall\n\n```bash\n# Remove hooks from all CLI configs\nnpx ai-agent-session-center --uninstall\n\n# If installed globally\nnpm uninstall -g ai-agent-session-center\n```\n\n### From Source\n\n```bash\ngit clone https://github.com/coding-by-feng/ai-agent-session-center.git\ncd ai-agent-session-center\nnpm install\nnpm run dev\n```\n\n### Usage\n\n1. Start the dashboard — robots appear automatically as you use AI CLIs in any terminal\n2. Click **+ New** to create SSH terminal sessions directly from the dashboard\n3. Click a robot to view full session details (prompts, tools, activity, terminal, notes, queue)\n4. Assign sessions to rooms to organize your workspace in the 3D scene\n5. Open **Settings** to customize themes, sounds, and hook density\n\n### CLI Options\n\n```bash\nai-agent-session-center [options]\n\nOptions:\n  --port \u003cnumber\u003e    Server port (default: 3333)\n  --no-open          Don't auto-open browser\n  --debug            Enable verbose logging\n  --setup            Re-run the interactive setup wizard\n  --uninstall        Remove all hooks from CLI configs and exit\n```\n\n## How It Works\n\nAgent Session Center uses lightweight bash hooks that append JSON events to a file-based message queue (`/tmp/claude-session-center/queue.jsonl`). The server watches this file and broadcasts updates to connected browsers via WebSocket.\n\nNo modifications to any CLI are needed. The hooks are purely observational and add negligible overhead (~2-5ms per event). **End-to-end latency: 3-17ms** from hook fired to browser updated.\n\n```\nAI CLI (Claude / Gemini / Codex)\n         |\n    Hook Script (bash)                    ~2-5ms\n    - Enriches with PID, TTY, terminal env\n         |\n  /tmp/.../queue.jsonl                    ~0.1ms\n  - Atomic POSIX append\n         |\n  Server (Express + WebSocket)            ~0.5ms\n  - Validate, process, broadcast\n         |\n  React Frontend\n  - 3D scene + detail panels update\n```\n\n### Session Matching\n\nWhen a hook event arrives, a 5-priority fallback system links it to the correct terminal session: pending resume match, terminal ID env var, working directory match, path scan, and PID parent check. If no match is found, a display-only card is created with the detected source (VS Code, iTerm, Warp, Ghostty, etc.).\n\n### Hook Density Levels\n\n| Level | Events | Use Case |\n|-------|--------|----------|\n| high | All 14 Claude events | Full monitoring, approval detection |\n| medium | 12 events | Default, good balance |\n| low | 5 events | Minimal overhead |\n\n## Tech Stack\n\n- **Backend**: Node.js 18+ (ESM), Express 5, WebSocket (ws), tsx\n- **Frontend**: React 19, TypeScript, Vite\n- **3D Visualization**: Three.js, React Three Fiber, drei\n- **State Management**: Zustand, React Query\n- **Terminal**: xterm.js, node-pty\n- **Database**: SQLite (server, WAL mode) + IndexedDB via Dexie (browser)\n- **Hooks**: Bash scripts (file-based MQ primary, HTTP fallback)\n- **Testing**: Vitest (400+ tests) + Playwright (E2E)\n- **Charts**: Recharts\n- **Drag \u0026 Drop**: @dnd-kit\n\n## Session States\n\n| Status | What it means | Visual |\n|--------|---------------|--------|\n| **Idle** | No activity | Green, robot seeks coffee lounge |\n| **Prompting** | You just sent a prompt | Cyan, robot walks to desk |\n| **Working** | Agent is calling tools | Orange, charging effect |\n| **Waiting** | Agent finished, your turn | Cyan, robot goes to gym |\n| **Approval** | Tool blocked, needs yes/no | Yellow, visor flash, alarm |\n| **Input** | Waiting for your answer | Purple, arm raised |\n| **Ended** | Session closed | Red, offline animation |\n\n## Keyboard Shortcuts\n\n| Key | Action |\n|-----|--------|\n| `/` | Focus search |\n| `Escape` | Close modal / deselect session |\n| `?` | Toggle shortcuts panel |\n| `S` | Toggle settings |\n| `K` | Kill selected session |\n| `A` | Archive selected session |\n| `T` | New terminal session |\n| `M` | Mute/unmute all |\n\n## Known Limitations\n\n- **Session matching heuristic** — linking hook events to SSH terminals uses a multi-priority fallback system. Two sessions in the same working directory may occasionally cross-link.\n- **Approval detection timing** — auto-approved long-running commands (npm install, builds) will briefly show as \"waiting for approval\" for ~8 seconds until the post-tool event clears it.\n- **macOS/Linux focused** — primary development is on macOS. Linux should work identically. Windows support via PowerShell hook variant is less tested.\n- **3D scene performance** — with many concurrent sessions (20+), the Three.js scene may impact performance on lower-end hardware.\n\n## Roadmap\n\nContributions and ideas are welcome in these areas:\n\n- **More CLI integrations** — support for OpenCode, Cursor, Windsurf, or any agentic framework\n- **Remote monitoring** — dashboard accessible from other machines on the network\n- **Agent creation templates** — define agents with custom system prompts, tools, and configurations before launching\n- **Collaboration** — multi-user dashboards where teams can see each other's agent sessions\n- **Mobile companion** — responsive PWA for monitoring on the go\n- **Plugin system** — extensible hooks for custom visualizations and integrations\n- **Community themes** — user-contributed 3D scene themes and robot models\n\nIf any of these interest you, feel free to open an issue or submit a PR.\n\n## Commands\n\n```bash\nnpm run dev              # Development (Vite HMR + backend)\nnpm run build            # Build frontend for production\nnpm start                # Start production server\nnpm run setup            # Interactive setup wizard\nnpm run install-hooks    # Install hooks into CLI configs\nnpm run uninstall-hooks  # Remove all dashboard hooks\nnpm run reset            # Reset everything (hooks, config, backup)\nnpm test                 # Run tests (400+ Vitest tests)\nnpm run test:watch       # Watch mode\nnpm run test:e2e         # E2E tests (Playwright)\nnpm run debug            # Start with verbose logging\n```\n\n## Troubleshooting\n\n### Hooks Not Firing\n\n```bash\n# Verify hooks are registered\ncat ~/.claude/settings.json | grep dashboard-hook\n\n# Test manually\necho '{\"session_id\":\"test\",\"hook_event_name\":\"SessionStart\"}' | ~/.claude/hooks/dashboard-hook.sh\n\n# Re-install\nnpm run install-hooks\n```\n\n### Port 3333 in Use\n\nThe server auto-resolves port conflicts. To use a different port:\n\n```bash\nnpx ai-agent-session-center --port 4444\nPORT=4444 npm start\n```\n\n### jq Not Installed\n\n```bash\n# macOS\nbrew install jq\n\n# Ubuntu/Debian\nsudo apt-get install jq\n```\n\n## Contributing\n\nContributions are welcome! See [CONTRIBUTING.md](CONTRIBUTING.md) for guidelines on how to get started.\n\n## Changelog\n\nSee [CHANGELOG.md](CHANGELOG.md) for a detailed list of changes in each release.\n\n## License\n\nThis project is licensed under the [MIT License](LICENSE).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcoding-by-feng%2Fai-agent-session-center","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcoding-by-feng%2Fai-agent-session-center","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcoding-by-feng%2Fai-agent-session-center/lists"}