burrow is a tiny native control center for my mac and the arch linux homelab next to it. swift and swiftui, no webview, no server, no bundled runtime. the whole app is 3 mb.
my mac is where everything lives. xcode data, simulators, flutter and bun projects, containers, recordings, downloads. i wanted one place to see what's eating the disk, clear it safely, and push the important stuff to the homelab. so i built it.
what it does
- overview: one headline like "storage is getting full, you can probably clear 32 gb", then numbered suggestions with one action each.
- storage + cleanup: a cached map of downloads, projects, xcode, simulators, caches and containers. cleanup runs through mole, always preview first. a run is refused unless a fresh preview exists.
- backups: ssh hosts come from
~/.ssh/config. files get routed to folders that already exist on the host, and projects stay together. every transfer is staged, sha-256 verified on the host, then moved in without overwriting anything. - bring back: browse the host, pick files, pull them back with the same hash and stage flow.
- system, battery, power: cpu, gpu, memory, thermals, processes grouped by app. bluetooth accessory charge. keep awake, sleep, lock, all native.
- projects, services, containers: dev runtimes and open ports grouped by repo, homebrew services and launch agents, docker and podman with a "what you can clear" section.
- aerospace: one-click tidy for the tiling window manager, plus an in-app config editor that validates and restores itself if the config breaks.
- history: optional 30 days of activity recorded once a minute, charted over 24 h, 7 d and 30 d.
barely there
two processes. a menu bar agent written in appkit with no swiftui is the only thing that runs all the time. the window app quits when its window closes.
nothing samples unless a view is watching. commands wait on exit events instead of polling. the storage map walks with fts(3) and one lstat per entry, in a child process, once a day at most. charts are hand-drawn canvas paths.
advisors
folder routing uses local rules by default. apple intelligence can route on device. openrouter, claude code, codex and muse are optional, and they run headless in an empty scratch folder with read-only tools. anything that leaves the mac needs an explicit opt in. only file names go out. never contents, full paths or host addresses.
- 3 mb
- ~10 mb
- 0.03 cpu-s