Skip to content

rt-observe & the Toolkit Dashboard

Chapter 07 of the ResearchTools manual. Back to table of contents. Skill row: 04-skills.md. Command summary: 08-commands.md.

What it answers

Answers one question: is this toolkit correctly deployed to every harness in use, and which empty mirror cells are deliberate rather than lost. Serves the same snapshot as a loopback dashboard (/rt-dashboard, rt-dashboard.ps1/.sh/.bat) - mirror matrix, fan-out wiring diagram, Real-Time Process tab, sessions strip, and the rail's seven receipt-bearing panels (repository, plan, services, code graph, hooks, journal, actions - the last a closed, tested action whitelist, dry-run by default). The journal panel (2026-09-24) reads an OPTIONAL, absent-by-default persistence layer - PostgreSQL identity/account-mapping plus an OpenObserve trace/audit stream - that changes nothing about a clone with neither configured.

Full reference (states, dashboard layout, actions panel, session messaging, adapters): docs/rt-observe.md.

Screenshot

rt-observe dashboard, Real-Time Process tab

The Real-Time Process tab (one of the four left-side views, alongside Mirror Matrix, Fan-out, and Sessions), captured on branch feat/rt-dashboard, profile engineering. The top strip walks the harness state machine for the current turn — SessionStart → waiting → UserPromptSubmit → reasoning + tool → tool call → PostToolUse → security audit — with the hooks firing at each step named above their box (install-junctions, memory-upkeep, caveman-mode-tr..., betterleaks-hoo..., pip-audit-hook...). Below it, the fan-out diagram draws one turn's actual calls: the tool node branching into Write, prompt, and Bash counts, out to Obsidian vault and Graphify graph as the two memories, and down to a spawned local-writer subagent — this is the "runner" the tests describe travelling a live edge. The right rail shows the Repository panel (branch, profile, suite status green . 69 passed, stamp age, definitions count, registry health, and run-offline-tests.ps1 as the prover), with Plan, Services, Graph, and Hooks as sibling tabs. The 2 STALE badge top-right and the footer strip (drawn by rt_state.py, generation timestamp, policy hash, last install, repo root) are the receipts every panel here carries per R9 — a claim with no stamp is not trusted.

The /rt-dashboard command

Starts the rt-observe dashboard on loopback and reports the URL. With no argument it dry-runs first, which names the interpreter it resolved, the bind address, the page and every per-section TTL, and starts nothing. With --json it skips the server entirely and dumps the snapshot, which is the right form inside a script or when the only question is whether anything is lost.

Its three refusals are read back to you rather than worked around: no interpreter found names every candidate tried and exits 2; a port held by something else names the holding PID and exits 1, because two dashboards showing two different snapshots is worse than none; and a dashboard already running is reported with its URL rather than started twice.

The command is a convenience, never the only way in. rt-dashboard.ps1, rt-dashboard.sh, rt-dashboard.bat and the VS Code task all reach the same launcher without Claude Code.

File: .claude/commands/rt-dashboard.md


← 06 Aider nightly pipeline | Table of contents | 08 Commands →