個人 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