A local dashboard that tells you when your Claude Code session is stuck Mohammed Nihal03 released AI Agent Observatory, an open-source local dashboard that analyzes Claude Code sessions to score agent health from 0 to 100 and flag degrading behavior, with the tool catching its own author editing a component 10 times during development. The Node.js 20.11+ tool runs entirely on the user's machine with no account or API key, and it provides a weighted score based on recovery, tool efficiency, repetition avoidance, goal adherence, and context headroom. See how your AI coding agent is actually behaving. You just spent two hours with Claude Code. Did it work steadily toward the goal, or did it spend forty minutes re-editing the same file and re-running the same failing test? You can scroll back through the transcript to find out. Or you can run one command. observatory import The Observatory reads the session your agent already recorded on disk and answers one question: Is my agent behaving well — and if not, why? Everything runs on your machine. No account, no API key, nothing uploaded. A local dashboard that shows what your agent did, how healthy the session was, and why. And the same answer in your terminal, if you would rather not leave it: AGENT HEALTH 65 / 100 stable 3/5 components measured BEHAVIORAL LEARNING 34 / 100 ▼ DEGRADING DEGRADATION 27 / 100 Tokens 148M Actions 396 Errors 3 Recovery 33% Repetition 23% WINDOW actions errors recovery repetition early 132 1% 100% 16% middle 132 1% 0% 25% recent 132 1% 0% 22% WHY THE AGENT IS DEGRADING ✗ Recovery rate decreased 100% ✗ Repetition increased 39% ⚠ 1 retry with no change in between SIGNALS ⚠ apps/web/src/components/performance-chart.tsx ran 10 times ⚠ apps/server/src/app.ts ran 8 times That is a real session — the one that built this tool. It caught the author editing the same component ten times while fighting a rendering bug, and called the session degrading for it. Every number comes with the reason behind it; you should never see a score without an explanation. You need Node.js 20.11 or newer. Nothing else. npm install -g ai-agent-observatory Prefer to build it yourself? Same result, one extra minute: git clone https://github.com/MohammedNihal03/AI-observibility.git cd AI-observibility npm install && npm run package npm install -g ./dist-package The ./ matters: without it npm looks for a package by that name in the registry. Start it: observatory start Observatory running on http://127.0.0.1:4000 Database C:\Users\you\.observatory\observatory.db Dashboard http://127.0.0.1:4000 Open http://127.0.0.1:4000 http://127.0.0.1:4000 . It will be empty — nothing has been recorded yet. In a second terminal, bring in a session you have already run: observatory import Refresh the dashboard. That is the whole loop. No Claude Code sessions yet? See it work with simulated data instead: observatory demo --scenario improving --stream Watch the dashboard while that runs — the numbers, the chart and the timeline fill in live. Three scores, and they answer different questions. A session can be at 82 and going nowhere, or at 55 and climbing fast. 0–100. A weighted average of five things, each measured, each shown to you: | Component | Weight | What it measures | |---|---|---| | Recovery | 30% | When something failed, did the agent fix it? | | Tool efficiency | 20% | How many tool calls succeeded | | Repetition avoidance | 20% | How much of the work was doing something already done | | Goal adherence | 15% | How much of the work related to what you asked for | | Context headroom | 15% | How much of the context window is still free | | Score | Band | |---|---| | 80–100 | healthy | | 60–79 | stable | | 40–59 | warning | | 0–39 | degrading | A component that cannot be measured is excluded , not counted as zero — a session with no failures has no recovery rate, and scoring that as 0 would rank "never failed" below "failed and recovered". The dashboard shows you how many of the five were actually measured. The session is split into three windows by action count — early, middle, recent — and compared. Improving means errors fell, recovery rose, repetition dropped. Degrading means the reverse. Stable means no meaningful trend either way. This is not model learning. There are no weights, gradients or loss values here. Claude Code does not expose them, and this tool does not pretend to. "Learning" means the agent's observable behavior got better during this session — nothing more. 0–100 , from seven specific signals: the same action failing repeatedly, rising error rate, falling recovery, correction loops that keep failing, drifting off the goal, and context pressure. Each one is listed with the measurement behind it. | You see | It usually means | |---|---| | Repetition high, recovery low | The agent is stuck. Give it new information, not another retry. | | "failed N times in a row" | It is retrying without changing anything. Intervene. | | "tried N times, never worked" | The whole approach is wrong, not the details. Redirect it. | | Context utilization above 90% | It is running out of room. Start a fresh session. | | Goal adherence falling | It has wandered. Restate the goal. | | Health high, learning stable | Nothing is wrong. Steady competent work looks exactly like this. | | Command | What it does | |---|---| | observatory start | Start everything — API, live updates and dashboard, on one port | | observatory import | Read a real Claude Code session and analyze it | | observatory sessions | List what has been recorded | | observatory status | What the Observatory is doing right now | | observatory compare | Compare two sessions, or group them by model or prompt | | observatory demo | Generate a simulated session no agent required | | observatory dashboard | Open the dashboard in a browser | | observatory doctor | Check that everything is set up correctly | Every command takes --help . observatory import --list what is on this machine observatory import the newest session observatory import --session 5f80 a specific one a prefix is enough observatory import --watch follow a session as it runs, live observatory import --project myapp only sessions from one project Re-running is safe. The Observatory asks how much it already has and sends only what is new — which is also how --watch keeps up with a running agent. observatory compare