个人 GitHub 账号下公开仓库的所有者可以登录并验证所有权,自行管理介绍,无需管理员批准。
登录并生成验证文件,在 30 分钟内将其提交到此仓库的默认分支。其他分支或分叉仓库中的文件无效。然后在下方检查文件,即可无需管理员批准直接管理项目。请保留文件以维持管理权限。
如需登录,将前往登录页面。登录后请回到此处,再次点击所选的验证按钮。
在项目文件夹中运行 /nomorevibe verify,即可验证所有权并自行管理介绍。
一分钟完成验证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.
翻译准备中
取自仓库 README
正在加载完整 README。 以下为已保存的摘录。
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.查看完整 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