Skip to content

● v2.0.0 · local-first · macOS + Linux

Crashes that point
at the line.

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 ~/shop● live
$ 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

$ 
runcatchissueexplainhotprofilestudiowatchmcphand off

Three commands, one loop.

Catch it, explain it, find the hot line. Every step also speaks --json.

1 run

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
2 issue

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
3 hot

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% 

And when you want to watch it live.

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.

◆ monitor macbook-pro● LIVE · sampled 22:48:26
▸1 overview2 cpu3 memory4 thermal5 disk6 network7 processes8 settings9 trends
CPU32.3%10 cores
Memory78.9%12.6 GB / 16.0 GB
Thermal52.0 Creal sensor
Disk73.0%/ · 365.0 GB used
Activity · 60s
CPU32.3%
MEM78.9%
Top CPU
PIDNAMECPU
8421node82.3%
9102chrome12.7%
7788go8.3%
1324WebKit.GPU5.4%
4410ghostty2.9%
3155postgres1.6%
662Finder0.4%
Attention
● CPU SPIKE | node (pid 8421) at 82.3% vs 24.1% baseline
tabswitchppauserrefresh?helpqquit

Studio guide →

Built for agents, safe by default.

Ten MCP tools share one service with the CLI. Reads return bounded, scrubbed context; anything that acts refuses without confirm: true.

mcp.json
{
  "mcpServers": {
    "monitor": {
      "command": "monitor",
      "args": ["mcp", "serve"]
    }
  }
}
tools
  • monitor_issueread-only
  • monitor_issuesread-only
  • monitor_analyzeread-only
  • monitor_snapshotread-only
  • monitor_processesread-only
  • monitor_doctorread-only
  • monitor_profile_captureconfirm
  • monitor_investigateconfirm
  • monitor_recordconfirm
  • monitor_killconfirm

MCP guide → Safety model →

install

One binary. Your machine stays yours.

No daemon, no account, no cloud. Homebrew, a release archive, or go build.

brew install --cask abdul-hamid-achik/tap/monitor

Released under the MIT License.