Real-time observability dashboard for multi-agent Claude Code sessions. Visualize agent interactions, tool usage, and session flows in real-time through a web dashboard. Track multiple agents running in parallel with swim lane visualization, event filtering, and live charts. **Key Features:** - š“ Real-time event streaming via WebSocket - š Agent swim lanes showing parallel execution - š Event filtering by agent, session, event type - š Live charts for tool usage patterns - š¾ Filesystem-based (no database required) **Inspired by [@indydevdan](https://github.com/indydevdan)**'s work on multi-agent observability. **Our approach:** Filesystem + in-memory streaming vs. indydevdan's SQLite database approach.
/plugin marketplace add rafaelcalleja/claude-market-place/plugin install personal-ai-infrastructure@claude-market-placeThis skill inherits all available tools. When active, it can use any tool Claude has access to.
README.mdSETUP.mdapps/client/index.htmlapps/client/package.jsonapps/client/postcss.config.jsapps/client/src/App.vueapps/client/src/assets/vue.svgapps/client/src/components/AgentSwimLane.vueapps/client/src/components/AgentSwimLaneContainer.vueapps/client/src/components/ChatTranscript.vueapps/client/src/components/ChatTranscriptModal.vueapps/client/src/components/EventRow.vueapps/client/src/components/EventTimeline.vueapps/client/src/components/FilterPanel.vueapps/client/src/components/HelloWorld.vueapps/client/src/components/LivePulseChart.vueapps/client/src/components/StickScrollButton.vueapps/client/src/components/ThemeManager.vueapps/client/src/components/ThemePreview.vueapps/client/src/components/ToastNotification.vueSee SETUP.md for complete installation instructions.
Quick Setup:
# 1. Set environment variable
export PAI_DIR="$HOME/.claude" # Add to ~/.zshrc or ~/.bashrc
# 2. Configure hooks (merge into ~/.claude/settings.json)
cat settings.json.example
# 3. Create directory structure
mkdir -p ~/.claude/history/raw-outputs
# 4. Install dependencies
cd apps/server && bun install
cd ../client && bun install
Terminal 1 - Server:
cd ~/Projects/PAI/skills/agent-observability/apps/server
bun run dev
Terminal 2 - Client:
cd ~/Projects/PAI/skills/agent-observability/apps/client
bun run dev
Open browser: http://localhost:5173
Once the dashboard is running, any Claude Code activity will appear in real-time:
Events are stored in JSONL (JSON Lines) format:
~/.claude/history/raw-outputs/YYYY-MM/YYYY-MM-DD_all-events.jsonl
Each line is a complete JSON object:
{"source_app":"kai","session_id":"abc123","hook_event_type":"PreToolUse","payload":{...},"timestamp":1234567890,"timestamp_pst":"2025-01-28 14:30:00 PST"}
āāāāāāāāāāāāāāāāāāā
ā Claude Code ā Executes hooks on events
ā (with hooks) ā
āāāāāāāāāā¬āāāāāāāāā
ā
ā¼
āāāāāāāāāāāāāāāāāāā
ā capture-all- ā Appends events to JSONL
ā events.ts hook ā
āāāāāāāāāā¬āāāāāāāāā
ā
ā¼
āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā
ā ~/.claude/history/raw-outputs/ ā Daily JSONL files
ā 2025-01/2025-01-28_all-events.jsonl ā
āāāāāāāāāā¬āāāāāāāāāāāāāāāāāāāāāāāāāāāāā
ā
ā¼
āāāāāāāāāāāāāāāāāāā
ā file-ingest.ts ā Watches files, streams to memory
ā (Bun server) ā
āāāāāāāāāā¬āāāāāāāāā
ā
ā¼
āāāāāāāāāāāāāāāāāāā
ā Vue 3 Client ā Real-time dashboard visualization
ā (Vite + Tail) ā
āāāāāāāāāāāāāāāāāāā
PAI_DIR:
Path to your PAI directory (defaults to ~/.claude/)
export PAI_DIR="/Users/yourname/.claude"
Add to ~/.claude/settings.json (see settings.json.example for full template):
{
"hooks": {
"PreToolUse": [{
"matcher": "*",
"hooks": [{
"type": "command",
"command": "${PAI_DIR}/skills/agent-observability/hooks/capture-all-events.ts --event-type PreToolUse"
}]
}],
// ... other hooks
}
}
echo $PAI_DIRls ~/.claude/history/raw-outputs/ls -l hooks/capture-all-events.tsls ~/.claude/history/raw-outputs/$(date +%Y-%m)/bun --versioncd apps/server && bun installlsof -i :3001Inspired by @indydevdan's pioneering work on multi-agent observability for Claude Code.
Our implementation differs by using filesystem-based event capture and in-memory streaming instead of SQLite database persistence. Both approaches have their merits! Check out indydevdan's work for a database-backed solution with full historical persistence.
# Server (hot reload)
cd apps/server
bun --watch src/index.ts
# Client (Vite dev server)
cd apps/client
bun run dev
# Client build
cd apps/client
bun run build
bun run preview
capture-all-events.ts hook if neededsettings.jsonPart of the PAI (Personal AI Infrastructure) project.
Contributions welcome! Areas for improvement:
Creating algorithmic art using p5.js with seeded randomness and interactive parameter exploration. Use this when users request creating art using code, generative art, algorithmic art, flow fields, or particle systems. Create original algorithmic art rather than copying existing artists' work to avoid copyright violations.
Applies Anthropic's official brand colors and typography to any sort of artifact that may benefit from having Anthropic's look-and-feel. Use it when brand colors or style guidelines, visual formatting, or company design standards apply.
Create beautiful visual art in .png and .pdf documents using design philosophy. You should use this skill when the user asks to create a poster, piece of art, design, or other static piece. Create original visual designs, never copying existing artists' work to avoid copyright violations.