Outsider Stage 0.5
Replay and verify a real, sealed Outsider Stage 0.5 intervention chain.
Translation pending
The menu-bar radar for runaway, leaking and forgotten processes on your Mac. Free, open source, offline.
SecuritySwift · HTMLGitHub @mikkel32OnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
Owners of public repositories under a personal GitHub account can sign in to verify ownership and manage the introduction themselves. No administrator approval is needed.
Sign in, generate a verification file, and commit it to this repository’s default branch within 30 minutes. Files on other branches or forks do not count. Then check the file below to manage the project without administrator approval. Keep the file to retain your access.
If needed, you will go to sign-in. After signing in, return here and press your chosen verification button again.
Run /nomorevibe verify in your project folder to verify ownership and manage the introduction yourself.
Verify in one minuteAsk about other verification options
A native macOS menu-bar radar for runaway, leaking, duplicated and forgotten processes, with a security watch and real CPU/GPU temperatures. Offline, no admin rights.
Taken from the repository README
Loading the full README. The saved excerpt is shown below.
A native macOS menu-bar radar for runaway, leaking, duplicated, and forgotten processes.
See what is heating your Mac, why, and what to do about it — entirely on your Mac.
Dev servers that never shut down. Electron helpers that quietly grow by 50 MB a minute. Three copies of the same watcher from terminals you closed yesterday. A fan that spins up and no idea why.Read the full README ↗Dev servers that never shut down. Electron helpers that quietly grow by 50 MB a minute. Three copies of the same watcher from terminals you closed yesterday. A fan that spins up and no idea why.
Ghost Process Sniper watches every process you own, groups helpers into families, learns what normal looks like, and tells you — in plain language, with the evidence — which ones deserve attention. When something really needs to go, it previews exactly what would be stopped, waits for you to confirm, and then checks that the stop did what it promised.
loginwindow, WindowServer, launchd, and processes macOS marks as system processes.ioreg and pmset read; nothing is changed.~/Library/Application Support/Ghost Process Sniper/.GhostProcessSniper-<version>.dmg from the latest release or the website.Requirements: macOS 26 Tahoe or later, on Apple silicon or Intel.
Release builds are signed ad hoc but not notarized by Apple (that requires a paid Developer ID), so macOS asks you to confirm the first launch:
Prefer the terminal? After copying the app to Applications:
xattr -dr com.apple.quarantine "/Applications/Ghost Process Sniper.app"
Every release is built from its tagged source by the Release workflow on GitHub's Macs, and each disk image carries a signed build-provenance attestation. The release page lists the SHA-256; with the GitHub CLI you can also prove the file came from that build:
shasum -a 256 GhostProcessSniper-*.dmg
gh attestation verify GhostProcessSniper-*.dmg --repo mikkel32/ghost-process-sniper
Or skip the binary and build it yourself — it takes about two minutes.
Click the menu-bar scope for a summary; Open Dashboard opens the console (right-click the scope for a menu with Quick Stops for the top culprits):
| Section | What it answers |
|---|---|
| Overview | One verdict — what needs doing, and the button that does it — then what is urgent, what is trending the wrong way, and why. |
| All Processes | Every family plus every other running process, searchable by name, helper, command, path, PID, or port — typo-tolerant, with filters like cpu>20, port:3000 or is:leaking. |
| Security | Whether anything running looks like an attack, what starts automatically, who is using the microphone or camera, and a live feed of every new process. |
| Energy | What uses energy, how long the battery will last and what each app costs of it, what keeps the Mac awake, and what wakes it or writes to disk nonstop. |
| Duplicates | Which work is running more than once, which copy to keep, and which extras can go. |
| Incidents | What has leaked, spiked, or run away before, and how often. |
| Rules | What is snoozed or ignored, and how the radar should treat specific apps or commands. |
Handy shortcuts: ⌘F search (↩ opens the best match) · ⌘R scan now · ⌘1–⌘7 switch sections · ⌘[ / ⌘] back and forward · ⇧⌘⌫ stop the selection · ⌥⌘I inspector · ⌘, settings.
Stopping always starts from a preview of the exact processes (PID plus start time, so a recycled PID is never hit) and needs ⌘↩ to confirm; Return alone never stops anything.
brew services database or another KeepAlive job would be restarted within a second, the preview offers to stop the launchd service itself, until the next login or for good, and shows the launchctl or brew services command to do or undo it yourself.The user guide covers every panel, the temperature tools, and exactly how a stop works.
| Mac | Sensor map |
|---|---|
| Apple M1 and M2 families, Intel | Verified key tables |
| Apple M3 and M4 families | Catalog tables, not yet verified on hardware; the panel says so |
| Apple M5 and later | Sensors discovered on the Mac once per launch; best effort, and the panel says so |
| Anything else | No Celsius readings; macOS thermal pressure only, with the reason shown |
You need macOS 26 and Xcode 26 (or a Swift 6.3 toolchain).
git clone https://github.com/mikkel32/ghost-process-sniper.git
cd ghost-process-sniper
Scripts/dev.sh run
That builds an optimized, ad-hoc-signed bundle at dist/Ghost Process Sniper.app and opens its console. Other entry points:
| Command | What it does |
|---|---|
Scripts/verify.sh | Architecture checks, build-script tests, unit tests, core checks, and a release build |
Scripts/dev.sh build / restart / debug / logs | Build, restart after a build, run under LLDB, stream logs |
Scripts/release.sh | Universal .dmg installer and checksum in dist/release/ |
Scripts/release_notes.sh | The release notes GitHub will show for the current version |
python3 Scripts/build_site.py --out _site | The website in _site/ (serve it with python3 -m http.server -d _site) |
ProcessMonitor (MainActor) observable facade; schedules scans by demand, power and heat
├─ ThermalSampler (actor) read-only SMC sensors, only while a window shows them
└─ RadarRefreshWorker (actor) one scan at a time, at utility priority
├─ NativeProcessSampler libproc probes: CPU and memory for every process, then paths,
│ argv, ports and forensics within a deadline
├─ RadarPipeline families, duplicates, baselines, member trends, CPU behavior,
│ forgotten-process evidence, pressure attribution, rules
├─ SentinelEngine (actor) attack shapes, launch chains, offline signature checks, startup
│ items, microphone and camera; also woken by kernel spawn events
├─ EnergyMonitor per-process energy, wake-ups and writes, battery, sleep blockers
├─ RadarStore (actor) local SQLite, versioned migrations, learned in memory and written behind
└─ RadarPublishPayload console snapshot and detail panels, published only when they change
ProcessKiller preview, protection floor, phase walker, launchd bootout, outcome checks
The code is split into two targets: GhostProcessSniperCore (sampling, intelligence, persistence, interventions — no UI) and GhostProcessSniper (SwiftUI app, menu bar, console). Architecture rules — folder ownership, the core/UI boundary, SQLite isolation, file-size budgets — are enforced by Scripts/check_architecture.py.
Further reading: Architecture · Sentinel · Energy · Development · Releasing · Thermals · Performance measurements
Bug reports and pull requests are welcome — see CONTRIBUTING.md. For bugs, Copy Diagnostics (in Settings › Diagnostics, or ⇧⌘D in the console) gives a report worth pasting. Security issues: see SECURITY.md.
The waiting indicator is ThinkingOrbsKit, the SwiftUI edition of the Libraries.dev thinking orbs by Jakub Antalik (MIT), vendored in Packages/. It appears only for waits of two seconds or more.
MIT © 2026 Mikkel Mynderup