// macOS · menu bar · 100% local
The dev server you killed
is still running.
ProcWatch sits in your menu bar, watches every running process, and logs the ones that cross your CPU threshold — so you can see exactly what's torching your battery, and end it yourself.
Code-signed & notarized · No accounts · No telemetry
Above Threshold
All Processes
/Users/wesley/Projects/app/node_modules/vite/bin/vite.js
PID 41,233 parent 1- --:--:-- watching 412 processes...
File watcher or dev server survived its parent shell.
Port is still held; restart would likely hit EADDRINUSE.
// the problem
Ctrl+C lied to you.
When you run npm run dev, npm spawns a shell, and that shell
spawns the actual dev server — Vite, webpack-dev-server, nodemon — as a
child process. Press Ctrl+C and you
often kill only the parent. The child gets orphaned and keeps running,
invisible, with no terminal attached.
And orphaned doesn't mean idle. File watchers keep polling your filesystem.
Rebuild loops keep rebuilding. Ports stay held — that's the
EADDRINUSE you hit on restart. They accumulate: three forgotten
node processes later, your fans are spinning and your battery
is gone.
Same story with node server.js &, test runners in watch
mode, build watchers, and bundlers that spawn workers. Your terminal looks
clean. Your CPU isn't.
$ npm run dev
VITE ready in 412 ms ➜ localhost:5173
^C
$ npm run dev
Error: listen EADDRINUSE: address already in use :::5173
$ ps -Ao pid,pcpu,comm | grep node
41233 98.6 node …/vite/bin/vite.js ◀ still running
38914 71.2 node …/esbuild --watch ◀ and this one
// how it works
Three steps. Zero accounts.
-
Set your threshold
Pick the CPU percentage that counts as "misbehaving" — and how long a process must stay above it, so momentary spikes don't cry wolf.
-
ProcWatch watches & logs
It continuously reads running processes. When one sustains above your threshold, you get a native macOS notification and the event is logged to a local, on-device database.
-
Review the history. Act.
A full dashboard shows which process spiked, when, and how often — with a one-click jump to Activity Monitor when it's time to act.
// in action
This is what busted looks like.
Clean captures from the current ProcWatch design: two node
dev-server processes — orphaned by a single Ctrl+C —
caught at 164.9% and 100% CPU, logged, and charted.
node
processes pinned above the threshold, with full history, memory, and a
one-click jump to Activity Monitor.Then see the whole story.
Every sustained crossing is logged locally and turned into a dashboard: when it happened, which hour gets noisy, which processes repeat, how severe the spikes were, and which ones stayed hot the longest.
Always one glance away.
ProcWatch lives in your menu bar, not your dock. The icon flags how many processes are over the line right now; click it for the live top offenders with sparklines — and a jump straight into the full app.
// features
One job, done properly.
-
Sustained-threshold alerts
Set the CPU line and how long a process must hold above it before it counts. Native macOS notifications, with a cooldown so one offender can't spam you.
-
Local history dashboard
Alerts by time, hour, offender, severity, and duration-vs-CPU — so the pattern is visible instead of buried in Activity Monitor.
-
Private by architecture
Every event is stored in a local on-device database. No cloud, no accounts, no telemetry — there's nothing to opt out of.
-
Inspect, don't guess
Search the live process list, see memory, threads, open files, and the command path, then jump to Activity Monitor or capture a stack sample.
-
Menu-bar native
A compact top-offenders popover stays one glance away. Open the full dashboard only when you want the receipts.
-
Signed & notarized
Code-signed and notarized, so it opens cleanly — no "unidentified developer" warnings, no right-click workarounds. Updates arrive securely, right inside the app.
// for developers
You already know the suspects.
Every one of these has quietly survived a Ctrl+C on someone's machine this week. Probably yours.
vite/webpack-dev-serverorphaned by the npm shell that spawned itvitest --watch&jest --watchre-running tests for a repo you closed an hour agoesbuild/ bundler worker processes that outlived their parentnode server.js &— backgrounded, then forgottennodemonand file watchers polling the filesystem on every save, forever
Stop guessing why your fans are screaming.
See the process. See the spike. Kill it.
ProcWatch doesn't kill anything automatically and won't fix Node's process management — it surfaces and logs the culprits, puts them one click from Activity Monitor, and can capture a stack sample of what they're doing, so you can act with a record instead of a hunch.
// for everyone else
Not a developer? Even simpler.
Your Mac gets hot. The fans get loud. The battery that used to last all day is gone by lunch. Usually, that's one misbehaving program working hard in the background where you can't see it.
ProcWatch lives in the menu bar at the top of your screen and keeps a simple record: which program was working too hard, when, and how often. When your battery drains fast, you open ProcWatch and see the name of the culprit — instead of guessing or restarting everything. Everything it records stays on your Mac.
// privacy
100% local. No cloud. No accounts. No telemetry.
Every event ProcWatch records is written to a local, on-device database. There is no server to sync with, no account to create, and no analytics SDK phoning home. The only network calls the app ever makes are verifying your license key and checking for updates — never your data. Your process history is yours — it never leaves your Mac.
// one product · one price
ProcWatch is $9.97.
One lightweight macOS app, one one-time purchase, no subscription tiers. Buy it once and use the full local process monitor.
Checkout is handled by Dodo Payments, our merchant of record. Your license key and download link arrive by email right after purchase; payment details never touch this site.
Included
- Full ProcWatch app for macOS
- Sustained CPU alerts and native notifications
- Live process inspector with Activity Monitor handoff
- Local alert history, charts, and analytics
- Code-signed app with secure in-app updates
Requires macOS 14 (Sonoma) or later · Universal — runs natively on every modern Mac
14-day money-back guarantee — refund policy
// faq
Questions, answered straight.
Does ProcWatch kill processes for me?
No — by design. ProcWatch watches, logs, and shows you exactly which process crossed your threshold and when, then puts it one click from Activity Monitor (it can grab a stack sample too). Terminating things is your call; ProcWatch's job is to make sure it's an informed one.
Does it upload my data anywhere?
No. Your monitoring data — processes, events, history — lives in a local on-device database and never leaves your Mac. There's no telemetry and no analytics. For full transparency: the app makes exactly two kinds of network calls — verifying your license key with Dodo Payments, our merchant of record, and checking procwatch.app for updates. Neither carries your data.
Does it work offline?
Monitoring, logging, and the dashboard are fully offline — none of it needs a network. Activating your license key requires a connection once; after that, a licensed Mac keeps working through a 14-day offline grace period before it needs to re-verify.
Why isn't it in the App Store?
App Store apps run inside a strict sandbox that limits how much an app can observe about other running processes — and observing processes is ProcWatch's entire job. Distributing it directly lets it do that job properly. It's still code-signed and notarized, so it opens cleanly — no warnings, no right-click workarounds.
Will my Mac warn me about an "unidentified developer"?
No. ProcWatch is code-signed and notarized, so it opens like any other Mac app — no security warnings, no right-click workarounds.
Which Macs does it run on?
ProcWatch ships as a universal binary, so it runs natively on every modern Mac. It requires macOS 14 (Sonoma) or later.
Won't a monitoring app drain my battery itself?
That would defeat the point. ProcWatch samples process activity every couple of seconds through macOS's native process APIs — cheap by design — and it does one thing only.
// support
Need a hand?
Real help, straight from the developer. Most questions are answered in the FAQ — for anything else, here's how to get unstuck.
Email support
Bugs, questions, feature ideas — write in and you'll get a real reply.
Email supportContact address coming soon.
Lost your license key?
Your key is in your purchase confirmation email from Dodo Payments. Can't find it? Email us from the address you bought with and we'll resend it.
Moving to a new Mac?
Open Settings → License and deactivate on the old Mac to free the seat, then activate on the new one. A licensed Mac also keeps working offline for up to 14 days between checks.
Not getting notifications?
Tap Enable in ProcWatch's in-app banner, or allow notifications for ProcWatch in System Settings → Notifications. Monitoring and history work with or without them.
Billing, receipts, and refunds are handled by Dodo Payments, our merchant of record — see the refund policy.