从源码构建需要 Swift 6 工具链(Xcode 16 或更高);没有签名身份时需用 BLITZCLEAN_SIGNING_IDENTITY=- 做 ad-hoc 构建,重建后可能重新申请权限;媒体相关测试需要先 brew install ffmpeg。
blitzclean
blitzreelsMIT活跃维护macOS 菜单栏原生系统监控工具,实时查看 CPU、内存和磁盘占用,并能安全清理缓存、构建产物、模拟器和 AI 代理留下的垃圾文件。
Native macOS menu-bar monitor for CPU, memory, and disk, with reviewed cleanup for caches, builds, simulators, and AI agents. Local and open source.
git clone https://github.com/blitzreels/blitzclean.git
cd blitzclean
./script/build_and_run.sh需要 macOS 14 或更高版本,支持 Apple silicon 与 Intel Mac;README 未提及显存或其他硬件要求。
macOS 菜单栏资源监控与清理工具,帮开发者清掉构建缓存、模拟器和 AI 进程占的空间
macOS 菜单栏原生系统监控工具,实时查看 CPU、内存和磁盘占用,并能安全清理缓存、构建产物、模拟器和 AI 代理留下的垃圾文件。
核心能力
- 菜单栏实时显示 CPU、内存和磁盘,并指出当前瓶颈资源
- 一键清理可重建缓存,并区分缓存释放量与磁盘实际变化
- 按 RAM 排序查看进程占用,可暂停或停止 AI worker 与开发服务
- 浏览各磁盘文件夹大小或按最大文件排序定位空间占用
- 删除前逐项复核缓存、node_modules、构建产物和模拟器
容易踩的坑
- v1.7.0BlitzClean 1.7.0最新正式版2026-10-25 · 2026-10-25 18:50 UTC
Memory protection
- Settings adds "Pause builds before memory runs out", on by default. It pauses a fast-growing build, agent builds included, before macOS starts warning.
- Builds and agents' scripts run at background priority, so apps keep the performance cores.
- A paused build keeps its memory. After two minutes of short memory, Stop becomes its main action on Memory and on Overview.
- Memory lists background load nobody started on purpose: login services that hold memory or keep failing (Turn Off), virtual machines, tool servers every agent session starts again, memory cleaner apps, and apps macOS flagged for heavy disk writes.
- After a restart caused by memory running out, Overview names what held the memory, read from the panic report before macOS deletes it.
Design
- Overview opens with Memory, CPU and Disk as ring gauges with a 15-minute trend; each opens its page.
- Memory and CPU show a live ring gauge, Memory splits RAM into apps, compressed and free, and the history charts gain percent gridlines, a dot on the latest value and a readout on hover.
- Every row on Memory and CPU, and every resource in the sidebar, has a small meter.
- Drive scans show a moving progress bar instead of a spinner, the drive bar grows in, numbers roll when they change, and pages cross-fade.
- The menu bar panel leads with three ring gauges and puts the problem and its fix in one card. Revive apps appears only while an app needs it.
- The menu bar shows the color app icon, with an amber or red dot when memory is at risk and a mint dot when an update is ready.
Updates
- BlitzClean checks for updates every time it opens, as well as once a day, and installs them on quit.
Fixes
- Storage showed the free space from its last scan instead of the free space now.
- Processes outside Apple's system folders were labeled "Part of macOS"; they now show their app and location.
- CPU and disk use the same thresholds everywhere, so the sidebar, Overview, the CPU page and the menu bar never color the same reading differently.
- v1.6.0BlitzClean 1.6.02026-10-24 · 2026-10-24 16:04 UTC
查看更新说明
Overview
- Overview shows only what is wrong, one card per problem, worst first, each with one button that fixes it: Free 32 GB (old iOS simulators, caches and Trash after one confirmation), Close idle apps, See agents, Pause, Revive. When nothing is wrong it says so.
- While deleting, the disk card shows each step, the space freed so far and the free space now. Caches read "Free up to", since items apps have open or used recently are kept.
- Every removal and stop reports what it measured afterwards, such as "Free disk space went from 12 GB to 26 GB", instead of the size it expected to free.
- The delete review is a floating card with a table of what goes, a note on what stays and a red confirm button.
Revive apps
- Frozen apps are detected without Accessibility permission, from the same flag the Force Quit window uses.
- The list shows regular apps plus any app that is paused or not responding, never a BlitzClean copy, and offers Force Quit only on rows with a problem.
Projects
- Projects groups running work by Git repository: each worktree shows its branch, uncommitted and unpushed
changes, the agents working in it (Claude Code, Codex, Cursor), its programs such as
node ×4, its ports and its memory, with Stop and agent Pause or Quit. Idle worktrees are listed by branch under their repository. - An agent card counts every agent session, the memory they hold and how many more fit before macOS starts moving memory to disk. A notification warns when a new session starts with no room left.
Storage
- Delete old iOS simulators now removes every installed copy of that version, waits for the simulator service to finish, and reports a version macOS kept instead of claiming success. A deletion started during a scan stops the scan instead of being ignored.
Design
- One neutral icon style replaces the colored squares in the sidebar, page headers, Overview and the tray. Charts are drawn in one ink and only turn amber or red when a reading needs attention.
- The drive bar uses muted colors of similar lightness, with a matching dot beside each group.
Reliability
- Commands that fail, time out or print something unexpected now say "Couldn't read …" with the reason instead of looking empty, and nothing is stopped or deleted on a reading that could not be checked.
- Background readers share one schedule that slows down while another app is in front and under memory pressure, so BlitzClean adds no load to a Mac that is already swapping.
- Fix a hang when many commands ran at once.
- Git runs with fsmonitor, hooks, the untracked cache and the repository's own clean and smudge filters turned off, so a cloned repository's config can't make BlitzClean run a command while it reads branches and changes. Filters from your global config, such as Git LFS, keep working. Filters are read from the worktree's own config too, status never descends into submodules, and a worktree with submodules is left for you to review.
BlitzClean Dev
- While the released app runs, the dev build's menu bar item shrinks to its mark and a DEV tag, so the two never show the same readings side by side.
- v1.5.0BlitzClean 1.5.02026-10-18 · 2026-10-18 20:56 UTC
查看更新说明
Storage
- Open Storage on Drive: the whole disk grouped into units such as Projects, iOS simulators, App data and Caches, each with one action or a stated reason it stays. Browse and Cleanup sit beside it.
- Cleanup lists old downloads and screenshots, and large personal files, with Move to Trash and Undo.
- Drive, Browse, Largest files and Cleanup share one disk walker: sizes stay on their volume, hard-linked files such as pnpm stores count once everywhere, and folders with unreadable entries show a partial size.
- The unused full inventory scan, with its
duand Spotlight passes, no longer runs. - Protected locations (home, standard folders, system and volume roots, Git history) say why they stay.
Memory and projects
- Emergency controls open with Control–Option–Command–R in a separate process, even while the dashboard is busy.
- Stop project dev servers together with their Docker containers; database volumes are kept, and each container gets 120 seconds to shut down.
- Fix a crash on the Memory page when two AI sessions shared an identifier.
Safety
- Every removal passes one final check: plain absolute path, no linked parent, not a protected root, writable volume, and the same file that was reviewed.
- Every signal to a process checks the same PID, start time, executable and owner; Storage's Stop processes now does too, so a reused PID is never stopped.
- Commands run with a deadline and an output limit, and stop the processes they started on timeout.
- Unreadable Keep running settings now block stopping and removal instead of turning protection off.
- Emergency controls clear the selection when the selected workload exits, so Stop never acts on another row.
Reliability
- Cleanup history that cannot be read is moved aside and new removals keep being recorded.
- Agent cleanup reports skip only malformed entries and accept decimal or string numbers.
- Browse resumes measuring after a removal; a stopped first Drive scan is not kept as a result; trashed large files no longer return when a scan finishes; Stop and Remove again refresh correctly.
- Recognise Claude Code installed under Application Support, and find session titles for accented folders.
- Docker projects with more than 256 containers work.
- Folder size caches are saved off the main thread.
Build
- Developer ID signed (54LJ85K2P7), notarized, stapled; Gatekeeper: accepted.
- Universal (arm64, x86_64), macOS 14+.
- v1.4.0BlitzClean 1.4.02026-10-09 · 2026-10-09 08:42 UTC
查看更新说明
BlitzClean 1.4.0 adds leftover-process controls, fixes built-in apps missing from Revive apps, and tightens cleanup safety.
- Revive apps: Mail, Terminal, and Safari now appear when running. Safe resume uses separate rules from Quit and Force Quit, with existing protections retained. A successful single Revive also activates the selected app.
- Leftover processes: Projects lists processes that kept running after their parent exited, with RAM, CPU, folder, PID, and uptime. Single Quit runs directly; Force Quit and Quit all ask first. Process identity stays attached to the original selection through refreshes and confirmations.
- Cleanup safety: Docker operations stay pinned to a local Unix socket and preserve tagged images. Repeat folder removal rechecks activity, age, tracked files, links, and tree identity. Known Time Machine warnings no longer block valid cleanup; other activity errors still preserve files.
- Local probes: HTTP probes, redirects, and favicons stay on literal IPv4 or IPv6 loopback addresses.
- Dock and menu bar: Closing the dashboard removes its Dock and app-switcher entry while monitoring stays in the menu bar. Opening the dashboard restores the Dock entry.
Thanks to jpc0rrea for the cleanup safeguards and scr2em for the leftover-process contribution adapted from OrphanBar. Its MIT notice is included in the app.
Download the ZIP and move BlitzClean.app to Applications. macOS 14 or later; Apple silicon and Intel. The app is Developer ID signed, Apple notarized, and stapled. The matching SHA-256 file verifies the ZIP. Existing 1.3.0 installs can update using the same Sparkle signing key.
Validation: 335 tests, strict lint, build, plist, shell, signature, Gatekeeper, architecture, and update-signature checks. All dashboard screens rendered. Live checks covered paused Calculator recovery and disposable-process controls. GitHub checks passed: https://github.com/blitzreels/blitzclean/actions/runs/37905876079
Revive resumes paused processes; an app stuck in a deadlock can still require quitting and reopening.
- v1.3.0BlitzClean 1.3.02026-10-07 · 2026-10-07 10:17 UTC
查看更新说明
BlitzClean 1.3.0 adds automatic updates, rebuilds Overview around a Check my Mac audit, and adds System Data cleanup.
Changes
- Automatic updates. BlitzClean now checks GitHub once a day, downloads signed updates in the background, and shows Restart to update in the menu bar panel and Settings > Updates. Automatic checks can be turned off there. Versions 1.2.0 and earlier have no updater: download this release once by hand, and later versions arrive automatically.
- Check my Mac. Overview runs five checks in parallel (memory and CPU, caches, project data and regrown folders, Docker, app responsiveness) and ranks what is worth doing, each with one action. Only Clean removes anything from Overview; other findings open the page that owns them.
- Load rings. Memory, CPU, and storage load appear as rings beside the check, with the busiest resource in the center. Warnings color the value in the legend. The menu bar panel uses the same rings, plus last-minute charts and each top app's share of RAM.
- Memory > Processes lists each process's own RAM footprint, owner, and PID.
- System Data cleanup leads Storage Cleanup: eligible browser and developer caches, plus diagnostic reports older than 30 days after explicit review.
- Faster scans. Overview and Cleanup measure only cleanup locations; the full inventory runs when Inventory is opened.
- Settings. Each Finish setup permission has Not needed, which also clears the sidebar badge. A new section links to BlitzRecorder and BlitzReels.
- Design. No gradients or glows, one accent color per view, and faint text raised to AA contrast.
See the changelog for the full list.
Privacy
The daily update check is BlitzClean's only network request. It fetches
appcast.xmlfrom this repository's releases and sends the app version in its user agent. Updates install only when their EdDSA signature matches the key built into the app.Download
- macOS 14 or later; universal binary for Apple silicon and Intel.
BlitzClean-1.3.0-macOS.zipcontainsBlitzClean.app. The matching.sha256file verifies the archive.- Developer ID signed with hardened runtime and a secure timestamp, including the embedded Sparkle framework.
- Notarized by Apple; the ticket is stapled and Gatekeeper reports Notarized Developer ID.
Validation
- 305 tests passed locally, plus formatting, property list, shell syntax, and signature checks.
- GitHub checks: https://github.com/blitzreels/blitzclean/actions/runs/37605980915
- Checked in the installed app: Overview idle state, Settings permissions with and without a skipped permission, and the Sparkle framework loading in a signed build. The update feed signature was verified against the published archive.
- Not yet exercised end to end: an installed 1.3.0 updating itself. That first happens with the next release.
用户点评
登录用户的真实使用记录,可按版本和硬件筛选还没有人点评。第一个说出真实体验的人最有价值。

BlitzClean is for developers and creators whose Macs fill up with builds, caches, simulators, AI agents, and dev servers. It shows CPU, memory, and free disk space in the menu bar, tells you which one is the bottleneck, and gives you one window to act: quit or pause what is using memory, revive frozen apps, and remove data that tools rebuild on their own.
Nothing leaves your Mac. Overview offers one-click cleanup of eligible rebuildable caches; other removals are reviewed first, and personal files go to the Trash.
What you can do
- Clean old, rebuildable caches from Overview with one click, with activity checks, animated progress, and a result showing removed cache bytes separately from the change in free disk space.
- See the limiting resource at a glance. The menu bar shows live numbers, and a warning names what is short (memory, swap, disk reserve, or CPU) with one instruction.
- Free memory by stopping apps, AI workers, and project services. Suspend/Resume keeps worker memory allocated.
- Open independent emergency controls with Control–Option–Command–R, even while the dashboard is busy. Select local workers or the shared Codex app, then Stop; Force Stop requires confirmation.
- Stop project dev servers and associated Docker containers together, preserving database volumes.
- Inspect individual process footprints in Memory → Processes, sorted by RAM and searchable by name, owner, project path, or PID. Restricted measurements stay marked as unavailable.
- Revive apps that stopped or froze, and see whether each one actually recovered.
- Find leftover processes in Projects, with their RAM, CPU, folder, and uptime. Quit one directly; Force Quit and Quit all ask first. AI sessions and protected projects keep their existing controls.
- Find what fills your disk by browsing every drive with folder sizes, or by ranking the largest files.
- Review caches,
node_modules, build output, simulators, Docker, and merged worktrees before removing them, and see when removed folders grow back. - Reduce supported System Data in Storage → Cleanup: eligible browser and developer caches, plus crash and hang reports older than 30 days. Reports require explicit selection and review.
- Filter large videos and images, find exact duplicates, and make smaller copies with FFmpeg.
Try it on your Mac
- Download the latest release, unzip it, and move
BlitzClean.appto Applications. - Open BlitzClean. It appears in the menu bar; click it and choose Open dashboard.
- In Settings > Finish setup, allow the permissions you want: Notifications for warnings, Accessibility for frozen-window checks, Full Disk Access for protected folders. Every permission is optional, and the section disappears once all are granted.
Releases support Apple silicon and Intel Macs on macOS 14 or later. Each download is Developer ID signed, notarized by Apple, and published with a SHA-256 checksum.
From 1.3.0, BlitzClean updates itself with Sparkle: it checks once a day, downloads a signed update in the background, and offers Restart to update in the menu bar panel and Settings. Version 1.2.0 and earlier have no updater; download 1.3.0 once by hand and later versions arrive automatically.
Safety
- Scans never delete anything. Overview's Clean button explicitly removes all eligible known caches; Storage offers individual selection and inline review for other removals.
- Personal files and folders go to the Trash. BlitzClean never empties the Trash for you.
- Rebuildable data (caches, dependencies, build output) and explicitly reviewed old diagnostic reports can be permanently deleted. Dependencies, build output, and reports keep their separate review flows.
- Running tools, open files, recent changes, and protected paths block removal.
- Process identity is checked again right before Quit, Pause, or Force Quit. Force Quit and bulk actions always ask first; nothing is force-quit automatically.
- No memory purge commands, no synthetic memory pressure, no background deletion.
The full rules are in Features → Removal and process rules.
Privacy
BlitzClean runs entirely on your Mac: no account, cloud service, analytics, or telemetry SDK.
The only network request is the daily update check, which fetches the release feed from GitHub and sends the
app's version in its user agent. Turn it off in Settings > Updates.
Charts, scan results, and the removal log stay in ~/Library/Application Support/BlitzClean, each with a size limit.
Saved history never includes conversation contents, window text, environment variables, or process arguments.
See Privacy and permissions for exactly what is read and stored.
Build from source
Requires macOS 14+ and a Swift 6 toolchain (Xcode 16 or later).
git clone https://github.com/blitzreels/blitzclean.git
cd blitzclean
./script/build_and_run.sh
This builds, installs, and opens ~/Applications/BlitzClean Dev.app, signed with your Apple Development identity
so macOS permissions stay attached between builds. BlitzClean Dev has its own bundle id, settings, data folder and
DEV icon, never updates itself, and runs beside an installed release without stopping it, so you can compare the
two. Use BLITZCLEAN_DEV=0 ./script/build_and_run.sh to build a plain BlitzClean.app instead. Without a signing identity, use an ad-hoc build:
BLITZCLEAN_SIGNING_IDENTITY=- ./script/build_and_run.sh
Ad-hoc rebuilds can ask for permissions again. They are for local development, not distribution.
Checks
./scripts/check.sh # build, tests, swift-format lint, plist and shell checks
./scripts/build-app.sh # package the app bundle
BLITZCLEAN_DESIGN_DIR=/tmp/shots swift test --filter DesignRenderTests # render every screen
Media tests need FFmpeg (brew install ffmpeg).
See Releasing for universal packaging, signing, notarization, and checksums.
Repository map
| Path | What lives there |
|---|---|
| Sources/BlitzClean | The app: monitoring, memory and process control, storage scans, cleanup, and UI |
| Tests/BlitzCleanTests | Unit, integration, and screenshot render tests |
| docs | Features, architecture, design rules, privacy, releasing, roadmap |
| script, scripts | Build-and-run, checks, packaging, and release scripts |
| support | Info.plist and entitlements |
| assets | App icon and brand files |
Contribute
Bug reports, focused fixes, and documentation improvements are welcome. Read CONTRIBUTING.md, and open an issue before starting a larger change.
Use GitHub Issues for reproducible bugs and feature requests. Report security problems privately as described in SECURITY.md.
License
BlitzClean is available under the MIT License. Projects that shaped it are credited in open-source bases.