Burrow 是一款面向 macOS 的原生系统管理应用,把垃圾清理、开发构建产物清理、应用卸载与残留删除、重复文件查找、安全维护、磁盘空间分析和实时状态监控整合在同一个窗口里。它自带 burrow-engine 引擎,无需额外安装依赖;所有扫描都可以先预览再执行,删除的内容默认会进入废纸篓,仍可恢复。除实时仪表盘外,Burrow 还会在本地 SQLite 中保存长达数月的指标历史,并提供菜单栏 HUD 和活动日志。它内置 MCP 服务器和可选的本地 HTTP 接口,Claude Code、Cursor、Codex 等 AI 代理能够查询机器状态、定位磁盘问题,并在经过授权确认后执行清理。macOS 版本最为成熟,另有 Windows 预览版。
brew install --cask caezium/tap/burrowBurrow is an independent open-source (MIT) app. It bundles its own engine —
burrow-engine, a single source-available binary under the Functional Source License (FSL-1.1-ALv2) whose command surface is modelled on the Mole (mo) CLI by tw93 — and is not affiliated with or endorsed by mole.fit (the official Mole for Mac app bymo's author); its own name, mark, palette, and copy are original.If you like Mole and want to fund
mo's development — buy mole.fit ($19).
🐹 The open-source system companion for your Mac — clean, uninstall, analyze, optimize, and monitor, built for you and your AI agents.
Burrow puts everything your Mac needs in one free, native app: junk cleanup, dev-artifact purge, app uninstall with leftover removal, duplicate finding, safe maintenance, disk maps, and live system status — powered by one bundled engine binary (burrow-engine, FSL-1.1 — see Attribution) whose commands mirror Mole's mo, so there's nothing else to install. It keeps months of local metric history and runs a built-in MCP server, so AI agents like Claude Code, Codex, and Cursor can watch, query, and care for your Mac — actions are consent-gated and audited, and Trash-based removals remain recoverable until the Trash is emptied. Permanent deletion requires separate consent and cannot be undone. Native on macOS, with a Windows preview under windows/.
Mac:
brew install --cask caezium/tap/burrow
Windows: download from releases










Explain with AI — point an MCP-capable agent (Claude Code, or a local model via LM Studio) at Burrow and ask your Mac in plain language.
When doing other tasks with AI Agents, if they find something irregular with your system, for example low disk space, they will have the tools to automatically disect the problem, and perform secure cleanups for you proactively and autonomously, without you having to ask.





Windows TypeScript rewrite: An initial Electron + React implementation that follows the current macOS UI is available in
windows/typescript/. It includes live telemetry, local history, reviewed artifact/installer recycling, disk analysis, and read-only duplicate detection. The existing WinUI preview remains alongside it. See the migration status for capability gaps and Windows validation requirements.
Burrow wraps its bundled burrow-engine binary in a native desktop app: clean
junk, purge dev artifacts, sweep leftover installers, uninstall apps, run safe
maintenance, map your disk, and watch live system status — in one window. On top
of that it adds things the CLI doesn't have: a long-running history of your
machine's metrics in a local store and an MCP server so any AI agent (Claude
Code, Cursor, Codex…) can ask "what's been happening on this machine."
macOS is the mature flagship. Windows currently has a native WinUI 3 / .NET 8 preview app, Windows telemetry/history, tray HUD, loopback HTTP, MCP stdio bridge, CI, tests, and unsigned release packaging.
| Tool | What it does | mo command |
|---|---|---|
| Status | Live dashboard with per-metric sparklines and a sortable/pinnable process table. | mo status --json |
| Clean | Preview what's reclaimable, then clean for real — categorized cache/log/leftover removal. | mo clean |
| Purge | Reclaim space from dev projects: node_modules, build dirs, target/, __pycache__, and more — preview streams in, one confirmation, everything found goes to the Trash. | mo purge |
| Installers | Find and remove leftover .dmg/.pkg installer files in bulk. | mo installer |
| Optimize | One-tap safe maintenance: rebuild caches, repair metadata, flush DNS, restart Dock/Finder. | mo optimize |
| Software | Installed-app list with search/sort (size, name, recent, source) and multi-select uninstall; an Updates tab with a Mac apps / Homebrew picker, each half with its own check and update-all. | mo uninstall --list, brew outdated |
| Analyze | Squarified treemap of your disk; drill into any folder, reveal in Finder. | mo analyze --json |
Every scan offers a no-risk preview (--dry-run) first, a clear
reclaimed-space summary when it finishes, and a Stop button to abort a
running job.
A live, glanceable read of your Mac's vitals, refreshed continuously:
burrow mcp / Burrow --mcp) plus
an optional localhost HTTP API, so any AI agent can query your Mac's recent
state. See Use it with your AI agent.| macOS | Windows | |
|---|---|---|
| Status | Stable — flagship | Preview — checked in under windows/ |
| Engine | bundled Rust burrow-engine (FSL-1.1-ALv2), with a Mole-compatible command surface; source builds can use an external mo for nonprivileged operations | bundled Mole/PowerShell engine plus Windows fallbacks where needed |
| UI | SwiftUI, translucent menu-bar app | WinUI 3 / .NET 8 |
| Install | brew install --cask caezium/tap/burrow | build from source; unsigned preview artifacts via windows/scripts/build-release.ps1 |
| Source | macos/ | windows/ |
Both apps live in this one repo, side by side, sharing this README, the landing site, and release documentation. The Windows preview currently includes a native shell, tool pages, local telemetry/history, loopback HTTP/MCP surfaces, tests, CI, and unsigned local packaging. See the Windows architecture notes and release notes.
The checked-in Windows app currently includes:
/health, /info, /snapshot, /metrics) and a
stdio MCP bridge with the read-only Burrow tools.The full board, with status and voting, lives at burrow.computer/roadmap. Vote by upvoting an issue, or open a request.
Building
Planned
Considering
Recently shipped: Developer ID signed & Apple-notarized macOS releases, Signed Sparkle feed + updater foundation, Stable Full Disk Access identity across updates, Bundled MIT engine, no separate mo install, Process inspector + CPU watchdog, see the changelog.
A factual feature/scope comparison. The competitor columns are the macOS
landscape; the Windows column reflects only the checked-in preview.
mole.fit is from the original author of mo — buy it ($19) if you want that
and to fund mo.
| Burrow (macOS) | Burrow (Windows preview) | mole.fit | CleanMyMac | Pearcleaner | mo / ncdu | |
|---|---|---|---|---|---|---|
| Price | Free | Free | $19 once | Subscription | Free | Free |
| Open source | MIT | MIT | – | – | ✅ | ✅ (mo) |
| Signed / notarized | ✅ Developer ID + Apple notarization (0.11.0+; earlier archives lack both) | No — unsigned preview | ✅ | ✅ | ✅ | n/a |
| Junk cleanup | ✅ | partial - Clean route pending | ✅ | ✅ | – | ✅ (mo) |
| Dev-artifact purge | ✅ | ✅ | ✅ | partial | – | ✅ (mo) |
| Leftover-installer sweep | ✅ | ✅ | ✅ | ✅ | – | ✅ (mo) |
| Uninstall + leftovers | ✅ | ✅ | ✅ | ✅ | ✅ (focus) | ✅ (mo) |
| Disk treemap | ✅ | ✅ | ✅ | ✅ | – | ncdu (TUI) |
| Live system monitor | ✅ | ✅ | ✅ | partial | – | – |
| Long-term metric history | ✅ | ✅ (JSON) | – | – | – | – |
| MCP / agent API | ✅ | ✅ | – | – | – | – |
| GUI | ✅ | ✅ | ✅ | ✅ | ✅ | – (terminal) |
Everything is local and takes effect immediately unless noted:
| Setting | What it controls |
|---|---|
| History retention | How long metric history is kept (1 day → 1 year); older rows are pruned hourly. |
| Vacuum after large prunes | Reclaim DB file space after a big prune (off by default). |
| Sampling rate | How often Burrow runs mo status --json (5 s → 5 min). |
| App language | Follow the system, or force English / 简体中文 / 繁體中文 / Русский / 日本語 / Deutsch / Français / Español / 한국어 / Português (Brasil) (relaunch). See docs/localization.md. |
| Menu-bar icon | Show the menu-bar item, or run as a regular Dock app instead. |
| MCP / agent access | Copyable stdio config + the tool list for Claude Code, Cursor, Codex, Cline, and any MCP client. |
| Local HTTP query server | Optional loopback REST endpoints + port for dashboards/curl. On Windows, disabling this keeps the local /mcp bridge available for stdio MCP. |
| Engine | Shows the resolved engine's product name and version (burrow-engine in official builds, or an external mo in source builds). The bundled engine updates with signed Burrow releases; source builds using an external engine retain its updater. |
Cleaning system and app caches means reading TCC-protected folders, so macOS will prompt — once per folder — unless the app has Full Disk Access. Burrow handles this honestly:
burrow-engine, one FSL-1.1 binary) and runs it directly. (Building from
source? The engine is staged from the public macos/vendor/burrow-engine
submodule, with no GitHub read token required. Without an initialized engine
submodule, Burrow falls back to a system mo —
brew install mole — with mo's own argv conventions.)Burrow 0.11.0 is the first Developer ID-signed and Apple-notarized release. New official macOS tags must pass signing, notarization, ticket stapling, and Gatekeeper assessment before they can publish. Version 0.10.5 used an ad-hoc signature rather than Developer ID and was not notarized; older archives also predate the current distribution guarantee. The full security/trust write-up is in SECURITY.md.
brew install --cask caezium/tap/burrow # the app + bundled engine
The live cask installs the signed and notarized build, preserves quarantine so
Gatekeeper can validate Apple's ticket, and contains no postflight bypass or
unsigned-build warning. It is marked auto_updates true because Sparkle owns
in-app updates.
Download Burrow-x.y.z.zip from
Releases, unzip into
/Applications, then:
open /Applications/Burrow.app
Keep the downloaded app's quarantine metadata intact: Gatekeeper uses it to verify the stapled notarization ticket. If you're intentionally installing an archived 0.10.5-or-earlier build, right-click the app and choose Open; those builds predate the notarization ticket.
brew install xcodegen
git clone https://github.com/caezium/Burrow.git && cd Burrow
bash scripts/release.sh
cp -R build_dist/Build/Products/Release/Burrow.app /Applications/
open /Applications/Burrow.app
The local script applies a coherent ad-hoc signature to the app and every bundled executable so Full Disk Access works during development. Only official tag builds use the private Developer ID identity and Apple notarization.
Burrow lives in the menu bar (it's a menu-bar agent). Click the icon → Open Burrow — or turn the menu-bar icon off in Settings to run it as a Dock app. If a macOS build freezes while Burrow creates that status item, the next launch stays in Dock-based compatibility mode on the same OS build and offers a one-click redacted diagnostic report. Automatic Sparkle startup waits until the initial AppKit launch turn has settled and the status item is stable; if the updater then fails its own stability window, later automatic checks pause for that app/OS build while manual checks remain available. A new macOS build retries a guarded status item; a new Burrow or macOS build retries an updater that previously failed its stability window.
git clone https://github.com/caezium/Burrow.git
cd Burrow\windows
dotnet restore .\BurrowWin.sln
dotnet build .\BurrowWin.csproj -c Release -p:Platform=x64 -nr:false -v:minimal
dotnet test .\Tests\BurrowWin.Tests\BurrowWin.Tests.csproj -c Release -v:minimal
To create the checked-in unsigned preview artifacts locally:
.\scripts\build-release.ps1
That script builds the app, runs tests, publishes the WinUI payload, creates an
unsigned Inno Setup installer, creates a portable ZIP fallback, writes
SHA256SUMS.txt, and writes WinGet manifests. See
windows/docs/release.md.
Burrow drives one bundled engine binary, burrow-engine (FSL-1.1-ALv2; its
source is publicly available and the signed binary ships inside the app — see
Attribution), plus an MIT fclones sidecar for
duplicate finding. The honest privacy picture:
BURROW_HOME points the engine back at your home (so an
elevated uninstall removes your leftovers, not root's) and
BURROW_PRIVILEGED=1 makes it refuse user-writable sidecar overrides. You can
opt in to a small signed helper so those prompts accept Touch ID; it grants
no standing privilege (every root operation still authenticates, every time),
performs only scan, clean, and optimize, and can be removed from Settings.
Details in SECURITY.md.127.0.0.1) and history is stored locally. On Windows, the HTTP REST toggle
disables REST endpoints but keeps the local /mcp bridge route available for
stdio MCP clients. The macOS Updates tab reads Homebrew's local index when it
opens and runs brew update only when you click Refresh, the same fetch
brew does for itself.Burrow doubles as an MCP server over stdio,
so any MCP-capable agent — Claude Code, Cursor, Codex, Cline, Zed, and
others — can read your machine's recent state. Same server, same {command, args}
shape everywhere.
For macOS, paste this to your coding agent and it'll wire itself in:
Add the Burrow MCP server to my config so you can read my Mac's system history. It's a local stdio MCP server — run it as
burrow mcpif the Homebrew shim is on my PATH, otherwise/Applications/Burrow.app/Contents/MacOS/Burrowwith args["--mcp"]. Add it under my MCP servers, reload, and confirm the toolsburrow_snapshot,burrow_history,burrow_top_processes,burrow_process_usage, andburrow_infoare available. Then tell me my Mac's current CPU and memory.
The config is the same JSON for every agent — only the file differs:
{
"mcpServers": {
"burrow": {
"command": "/Applications/Burrow.app/Contents/MacOS/Burrow",
"args": ["--mcp"]
}
}
}
| Agent | Where it goes |
|---|---|
| Claude Code | ~/.claude/settings.json — or claude mcp add burrow -- /Applications/Burrow.app/Contents/MacOS/Burrow --mcp |
| Cursor | ~/.cursor/mcp.json (global) or .cursor/mcp.json (per project) |
| Codex | add a [mcp_servers.burrow] entry in ~/.codex/config.toml |
| Cline / Zed / other | the client's "MCP servers" / mcpServers config |
If you installed via Homebrew, a burrow shim is on your PATH, so you can use
command: "burrow", args: ["mcp"] instead of the bundle path. Reload the agent
and ask in plain language.
Windows preview builds include the stdio bridge in source under
windows/Tools/McpStdioBridge/ and in release artifacts as
Assets\Mcp\burrow-mcp-stdio.exe.
Tools — 19 over MCP, read-only by default. The full reference, with when an agent should reach for each, is in docs/agent-tools.md. The essentials:
burrow_snapshot, burrow_history, burrow_top_processes,
burrow_process_usage (rank by cpu_time/peak_cpu/avg_cpu/peak_mem),
burrow_diff, burrow_disk_forecast, burrow_reportburrow_doctor (Full Disk Access, memory pressure, disk headroom,
SIP/Gatekeeper/FileVault/firewall, battery, high-CPU, display/volume/network),
burrow_ports, burrow_infoburrow_analyze, burrow_list_apps, burrow_cleanup_history,
burrow_deleted_filesburrow_clean, burrow_optimize, burrow_uninstall,
burrow_purge, burrow_installerActuating tools preview (--dry-run) unless confirm:true and the matching
Settings opt-in is enabled — an agent can always look, but only acts with your say-so.
Windows also keeps burrow_uninstall(action=...) as a compatibility tool for
list, leftover-preview, and confirmed vendor-uninstaller launch workflows.
There's also an optional localhost REST API (127.0.0.1:9277 — /health,
/info, /snapshot, /metrics) for dashboards or curl. Loopback is a network
boundary, not authentication: every request needs the random per-install bearer
credential, an exact localhost Host, no browser Origin, and stays inside the
request-size/rate limits. On macOS, read the credential locally with
defaults read dev.caezium.Burrow query_auth_token; on Windows it lives in the
current user's %LOCALAPPDATA%\BurrowWin\settings.json, and the stdio bridge
adds it automatically. Disabling Windows REST does not close the listener
because the authenticated stdio bridge still posts to /mcp.
BURROW_HTTP_TOKEN="$(defaults read dev.caezium.Burrow query_auth_token)"
curl -H "Authorization: Bearer $BURROW_HTTP_TOKEN" http://127.0.0.1:9277/health
cd macos # the macOS app lives here (monorepo: macos/ + windows/)
bash ../scripts/fetch-sentry.sh # vendor Sentry.xcframework (it's a local framework, not an SPM dep)
bash ../scripts/fetch-sparkle.sh # vendor the checksum-pinned official Sparkle.framework
xcodegen generate
xcodebuild -project Burrow.xcodeproj -scheme Burrow \
-configuration Debug -destination 'platform=macOS' test
The suite covers the parts that matter through public interfaces: DB roundtrip
mo output parsing.cd windows
dotnet restore .\BurrowWin.sln
dotnet build .\BurrowWin.csproj -c Release -p:Platform=x64 -nr:false -v:minimal
dotnet build .\Tests\BurrowWin.Tests\BurrowWin.Tests.csproj -c Release -nr:false -v:minimal
dotnet test .\Tests\BurrowWin.Tests\BurrowWin.Tests.csproj -c Release --no-build -v:minimal
For local GUI smoke checks:
.\run-local.ps1 -NoBuild -SmokeTest -Restart -RequireHealth -Route settings -TimeoutSeconds 60
Contents/Resources/burrow (burrow-engine, one binary; one {ok, data|error} envelope per command,
NDJSON when streamed)
burrow status --watch ──> SnapshotProducer (one long-lived stream, one line per tick;
polls `status --json` only if the stream drops)
──> SQLite (WAL) ──┬─> Status / History (charts)
├─> HTTP QueryServer (:9277)
└─> Burrow --mcp (stdio) ─> Claude Code / Cursor / Codex
burrow analyze --progress <p> ──> live file/dir/byte ticks, then the full payload
──> DiskScanner + squarified Treemap ─> Analyze
(one `analyze` per child directory is the fallback)
burrow clean|optimize|purge --stream ─> OperationFlow (NDJSON, live on both elevation routes:
the helper relays stdout over XPC, osascript tails the
root shell's log) ─> Clean / Optimize / Purge
burrow clean --apply --permanent --plan <file> --stream
──> the reviewed clean: Confirm writes the ticked paths to a plan
file and the engine removes only those — no re-scan — and
reports each one back (removed / failed / protected + reason)
burrow installer, uninstall [--apply] ─> Installers / Software (buffered envelope; uninstall is
elevated only when the bundle needs an administrator)
burrow dupes|orphans|photos|net --json ─> Duplicates / Leftovers / Photos / Network (+ fclones sidecar)
The Swift side names the seams after what they are: BurrowEngine resolves
and spawns the bundled binary and parses its envelope, EngineRunner is the
one capture/stream/PTY facade, EngineCLI is discovery plus the elevated
do shell script builder, and MoActions is the single gate that mints every
destructive run for the GUI and the MCP server alike. A source build without
an initialized engine submodule falls back to a system mo, whose argv is the
inverse of the engine's (mo runs live by default; the engine previews by
default and needs --apply) — BurrowEngine.engineArgv is the one
translation, applied only when the resolved binary is the bundled engine.
One app binary, two modes: default is the menu-bar GUI; Burrow --mcp is the
stdio MCP server (it forks before SwiftUI claims the process).
The whole UI is one translucent window with a top-pill nav (Brand/Tool
design system); Settings, History, and Activity are panes in that same window.
The Windows app is a WinUI 3 / .NET 8 project in windows/ using
MVVM view models, service-layer Windows/Mole integration, local JSONL history,
loopback HTTP, and a stdio MCP bridge. Mole remains the preferred engine path
where it is safe and non-interactive; Windows-native fallbacks cover current
gaps in the Windows Mole branch. See
windows/docs/windows-architecture.md.
Burrow (this repository) is MIT. The app bundle ships two separately licensed binaries — the full notices are in NOTICE:
burrow-engine (Contents/Resources/burrow) is © 2026 caezium, licensed
under the Functional Source License 1.1, ALv2 future license
(FSL-1.1-ALv2). Its source lives in the public
caezium/burrow-engine repository,
vendored as a submodule and built into a single universal binary at release
time; the binary ships with its license and dependency notices under
Contents/Resources/licenses/burrow-engine/. Its command surface (clean, optimize,
uninstall, analyze, status, …) is modelled on Mole CLI (mo), which
is © tw93, MIT — Burrow no longer bundles a
fork of Mole's code.fclones (Contents/Resources/fclones) is © Piotr Kołaczkowski, MIT —
the duplicate-file engine behind the Duplicates pane.mo). Burrow is an
independent reimplementation with its own brand — no assets, icons, copy, or
trade dress are taken from mole.fit.caezium/stats@henry/history-mcp).Burrow is community-driven. The repo currently contains the macOS app in
macos/ and the Windows preview in windows/. We welcome
bug fixes, tests, documentation improvements, and focused improvements to the
checked-in platform implementations.
内容由编辑整理,部分信息来自 GitHub 与项目官网,版权归原作者所有。发现错误?报告问题