pi-breaker
Prevents macOS freezes during pi sessions. Auto-kills runaway processes when memory runs out.
Package details
Install pi-breaker from npm and Pi will load the resources declared by the package manifest.
$ pi install npm:pi-breaker- Package
pi-breaker- Version
1.0.1- Published
- Mar 19, 2026
- Downloads
- 30/mo · 7/wk
- Author
- gaherwar
- License
- MIT
- Types
- extension
- Size
- 66.6 KB
- Dependencies
- 0 dependencies · 0 peers
Pi manifest JSON
{
"extensions": [
"./extensions/index.ts"
]
}Security note
Pi packages can execute code and influence agent behavior. Review the source before installing third-party packages.
README
pi-breaker
Prevents macOS freezes during pi sessions. Auto-kills runaway processes when memory runs out.
Install
pi install npm:pi-breaker
On first run, it calibrates a baseline for your machine (~10 seconds). After that, it runs silently in the background.
macOS only. Silent no-op on other platforms.
How It Works
Monitor — Polls system health in the background. Classifies into GREEN, YELLOW, ORANGE, or RED.
Watchdog — In confirmed RED, automatically kills the process most likely causing the pressure. No prompts, no questions.
Notification — After a kill, you see a one-line message telling you what was killed and why. That's the only time you'll know it's there.
Commands
| Command | Description |
|---|---|
/breaker |
Crashes prevented since install |
Security & System Calls
pi-breaker makes no network requests and reads no environment variables. All system access is local and documented here:
Shell commands (all read-only queries, no mutations):
| Command | File | Purpose |
|---|---|---|
sysctl -n kern.ostype |
canary.ts | Canary timing benchmark |
/usr/bin/true |
canary.ts | Canary timing benchmark |
sysctl -n vm.swapusage |
signals.ts | Read swap usage stats |
sysctl -n kern.memorystatus_vm_pressure_level |
signals.ts | Read memory pressure level |
sysctl -n kern.memorystatus_level |
signals.ts | Read memorystatus level |
vm_stat |
signals.ts | Read VM page statistics |
ps -eo pid,rss,comm -r |
processes.ts | List processes by memory |
ps -eo pid,ppid,etime,comm |
monitor.ts | Process tree for watchdog |
python3 helpers/footprint.py |
processes.ts | Read process footprints via proc_pid_rusage |
python3 helpers/footprint_worker.py |
worker.ts | Persistent worker for fast footprint queries |
Process kills (only pi's own child processes, only in confirmed RED):
| Signal | File | Trigger |
|---|---|---|
SIGKILL |
monitor.ts | Watchdog auto-kill in confirmed RED zone |
Filesystem writes (scoped to ~/.pi/breaker/ only):
| What | File | Purpose |
|---|---|---|
~/.pi/breaker/baseline.json |
calibration.ts | Persisted canary baseline |
~/.pi/breaker/stats.json |
index.ts | Kill counter (crashes prevented) |
~/.pi/breaker/logs/*.jsonl |
logging.ts | Structured logs (auto-GC after 3 days) |
Development
npm install
npm test
License
MIT