No description
  • JavaScript 33%
  • Python 30.2%
  • CSS 15.8%
  • C 10.5%
  • Swift 7.7%
  • Other 2.8%
Find a file
Tyler Brown 1a74157642 Initial commit: Orbit disk space visualizer
Zoomable sunburst of disk usage for macOS: a getattrlistbulk-based C
scanner, a stdlib Python engine with a localhost API, a canvas/d3 web UI
and a Swift WKWebView app wrapper.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-27 21:25:06 -04:00
app Initial commit: Orbit disk space visualizer 2026-10-27 21:25:06 -04:00
web Initial commit: Orbit disk space visualizer 2026-10-27 21:25:06 -04:00
.gitignore Initial commit: Orbit disk space visualizer 2026-10-27 21:25:06 -04:00
build.sh Initial commit: Orbit disk space visualizer 2026-10-27 21:25:06 -04:00
orbit.py Initial commit: Orbit disk space visualizer 2026-10-27 21:25:06 -04:00
README.md Initial commit: Orbit disk space visualizer 2026-10-27 21:25:06 -04:00
scan.c Initial commit: Orbit disk space visualizer 2026-10-27 21:25:06 -04:00

Orbit

A disk space visualizer for macOS in the spirit of DaisyDisk: a zoomable sunburst of your disk, a cleanup tray you drag things into, and suggestions for caches and toolchains that are safe to clear.

Run it

./build.sh                 # builds ~/Applications/Orbit.app (+ ./orbit-scan)
open ~/Applications/Orbit.app

Or without the app wrapper, in your browser:

python3 orbit.py           # http://127.0.0.1:7311

For a complete picture, give Orbit.app (or your terminal) Full Disk Access in System Settings › Privacy & Security.

Using it

  • Hover a segment to see its size; click a folder to zoom in, click the center (or press Esc / Backspace) to go back up.
  • Drag any segment or list row onto the Cleanup tray at the bottom right, then Move to Trash. Nothing is deleted outright; empty the Trash (top bar) to actually free the space.
  • Right-click for Reveal in Finder, Quick Look, Copy Path.
  • The Suggestions tab lists caches, toolchains, installers, node_modules and big files, with the right cleanup command where a tool owns the data.
  • The palette button switches between Spectrum and Mono colors.

How sizes are measured

Sizes are what deleting an item would actually free: APFS clones (e.g. copied repos or git worktrees) share blocks, so Orbit counts each file's private size and shows the shared part separately ("+72 GB shared with clones"). For the startup disk, "Hidden & system" accounts for the other APFS volumes (Preboot, Recovery, VM swap, ...) plus clone-shared data, snapshots and unreadable folders, so the ring adds up to the disk's real usage.

Layout

Path What
scan.c orbit-scan: multithreaded walker built on getattrlistbulk(2)
orbit.py tree, suggestions, Trash actions, local HTTP API (stdlib only, Python 3.9+)
web/ UI: canvas sunburst (d3-shape for arcs), sidebar, cleanup tray
app/ Swift wrapper (main.swift), Info.plist, icon generator

The API only answers on 127.0.0.1 with a per-launch token, and refuses to trash system folders, top-level home folders and the scan root.