Skip to content

Repository files navigation

Agent Workflow Observatory

A black, one-page, fully offline localhost dashboard for observing AI-agent workflows: goal-based constellations (a Hermes run and an independent Pi run), typed handoff edges (spawn vs trigger), official runtime marks, per-session harness + active skills, and a click-to-zoom focus on any constellation.

CI

Install

Ask your agent (Claude Code, Codex, or any coding agent)

Paste this prompt:

Install and launch the Agent Workflow Observatory on my machine:
clone https://github.com/animepics/agent-dashboard, run ./agent-dashboard
from the clone, and give me the local URL it prints. It is a localhost-only
static dashboard; keep the server running.

One-line command

npx github:animepics/agent-dashboard

Run from a clone

./agent-dashboard

Either way the dashboard comes up on http://127.0.0.1:4173/ (or the next free port), bound to localhost only.

Use as an agent skill

This repo ships an agent skill at skills/agent-dashboard/SKILL.md. Install it into Claude Code / Codex / compatible harnesses:

npx skills add animepics/agent-dashboard

After that, asking your agent to "open the agent dashboard" makes it call ./agent-dashboard (cloning first if needed) and hand you the URL.

What you see

  • Goal constellations — each connected graph is one goal, captioned in small gray English text; click a boundary to smoothly zoom into that constellation, click again to return to the overview.
  • Honest edges — solid = proven spawn (parent session), dashed = trigger (transcript evidence). Independent runs are never linked.
  • Lineage on every nodeORDER › HERMES › CLAUDE › SUB.
  • Harness + skills — each session names its harness (oh-my-hermes, oh-my-opencode, oh-my-pi, codex-cli, ...) and its loaded skills in the inspector.
  • Supported runtimes marquee — Gemini CLI, Qwen Code, opencode, Aider, Cline, Goose, Crush, Roo Code, Kilo Code.
  • Vertical / horizontal layouts, a designed mobile vertical rail, and prefers-reduced-motion support throughout.

Bring your own trace

The graph renders an observed TraceDocument, not baked-in data. Drop a trace.json in the directory you launch from and the dashboard renders your observation instead of the bundled sample (which is clearly labeled demo trace · example observation):

cd my-workspace        # contains trace.json
agent-dashboard        # serves your trace at /trace.json

Scan your real environment

agent-dashboard --scan        # scan + serve in one command
pnpm scan                     # writes trace.json from your local stores
pnpm scan public/trace.json   # for the dev server

The scanner reads only what actually exists on your machine: ~/.claude/projects, ~/.codex/sessions, ~/.senpi/agent/sessions, ~/.local/share/opencode/opencode.db, and ~/.hermes/state.db. It emits observed sessions grouped into work units, with models and usage from store metadata, skills only from tool-call evidence, harnesses only when a store proves them, and handoff edges only from parent records or trigger evidence. Nothing is assumed; absent stores are skipped.

Relationship inference is automatic. Native parent fields from Claude subagent, Codex, Hermes, and OpenCode stores produce solid spawn edges. For cross-runtime launches, the scanner accepts only structured, completed shell tool-calls using tested new-session forms (codex exec or claude -p / --print, and hermes chat). Exactly one launch and one child session must agree on runtime, working directory, and the recorded call/result time span; that produces a dashed trigger edge. Missing results, resume commands, unsupported commands, and ambiguous candidates remain unlinked. Accepted links merge workspaces into one work unit, while independent sessions in the same directory may share a workspace boundary without receiving a relationship edge. The four-node display cap retains complete ancestor chains. Users do not configure IDs or maintain a relationship file.

The document is validated with Zod at the boundary (TraceDocumentSchema in src/workflow.ts). Harness, model, and skill identifiers are open-world strings — oh-my-*, third-party skill packs, personal harnesses, anything a scanner actually observes in your local session stores (see RESEARCH.md for the per-runtime source-of-truth table). A malformed or missing file falls back to the sample.

Development

pnpm install
pnpm dev        # dev server on http://127.0.0.1:5173
pnpm test       # vitest
pnpm lint       # biome
pnpm typecheck  # strict tsc
pnpm build      # production build to dist/

Design decisions live in DESIGN.md; research and source citations live in RESEARCH.md. Without trace.json the graph renders clearly labeled deterministic sample telemetry; --scan replaces it with a timestamped local observation.

Contributing

See CONTRIBUTING.md. Security reports: SECURITY.md. Licensed under the MIT License.

About

The open source orchestration & observability your ai agent workflows (hermes, openclaw, claude-code, codex, pi, gpt, opus, fable, kimi, etc.)

Resources

Contributing

Security policy

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages