Launch through monitor. Output still streams to your terminal first; crashes are parsed, scrubbed and grouped.
$ monitor run -- python app.py monitor > NEW 7C1E KeyError app.py:42
● v2.0.0 · local-first · macOS + Linux
Wrap any command in monitor run. Crashes from Node, Deno, Bun, Python, Ruby and Go become grouped issues with a culprit file:line, the source around it and the commit that last touched it. No SDK. No account. Nothing leaves your machine.
brew install --cask abdul-hamid-achik/tap/monitor$ monitor run -- node src/server.js monitor > node src/server.js · pid 99880 · shop/node · scanning stderr TypeError: Cannot read properties of undefined (reading 'amount') at applyDiscount (src/cart.js:3:31) at checkout (src/cart.js:7:17) at handle (src/server.js:4:10) monitor > NEW BA42 fatal TypeError … src/cart.js:3 applyDiscount() $ monitor issue latest BA42 TypeError: Cannot read properties of undefined (reading 'amount') new · fatal shop / node · first seen just now · 1 event CULPRIT src/cart.js:3 in applyDiscount() 2 | const rule = cart.discounts[code]; > 3 | return cart.subtotal - rule.amount; 4 | } TOUCHED f2dc0d0 "feat: spring discount" just now · local git blame NEXT monitor issue ba42 --md paste-ready fix context for your agent $
Catch it, explain it, find the hot line. Every step also speaks --json.
Launch through monitor. Output still streams to your terminal first; crashes are parsed, scrubbed and grouped.
$ monitor run -- python app.py monitor > NEW 7C1E KeyError app.py:42
One command explains an issue: snippet, chained causes, blast radius, last commit. --md hands it to an agent.
$ monitor issues ID EVENTS WHERE BA42 12 src/cart.js:3
Which line inside a function burns CPU. Node, Deno, Bun and Go profiles, resolved through source maps.
heavyStringify · hot.js:3-6 · 95.8% self 4 | 32.7% > 5 | 66.1%
monitor studio is the same frames, the same colors, driven by the keyboard. What you see on this page is what you get in the terminal.
| PID | NAME | CPU |
|---|---|---|
| 8421 | node | 82.3% |
| 9102 | chrome | 12.7% |
| 7788 | go | 8.3% |
| 1324 | WebKit.GPU | 5.4% |
| 4410 | ghostty | 2.9% |
| 3155 | postgres | 1.6% |
| 662 | Finder | 0.4% |
● CPU SPIKE | node (pid 8421) at 82.3% vs 24.1% baselineTen MCP tools share one service with the CLI. Reads return bounded, scrubbed context; anything that acts refuses without confirm: true.
{
"mcpServers": {
"monitor": {
"command": "monitor",
"args": ["mcp", "serve"]
}
}
}monitor_issueread-onlymonitor_issuesread-onlymonitor_analyzeread-onlymonitor_snapshotread-onlymonitor_processesread-onlymonitor_doctorread-onlymonitor_profile_captureconfirmmonitor_investigateconfirmmonitor_recordconfirmmonitor_killconfirmNo daemon, no account, no cloud. Homebrew, a release archive, or go build.
brew install --cask abdul-hamid-achik/tap/monitor