macOS · CLI · v0.2.0

Reclaim the
gigabytes your
Mac forgot about.

handbyte is a single-binary CLI that scans the places your dev machine quietly hoards — Xcode caches, language toolchains, project build artifacts, container VMs — and lets you reclaim them from a multi-select TUI. Move-to-Trash by default. Nothing leaves your machine.

Installs to /usr/local/bin · verified via SHA-256 · other versions →

  • Single Go binary, no runtime
  • Move-to-Trash by default
  • safe / review / hold tags
  • Zero network, zero telemetry
0GiB
typical haul on a dev Mac that's been around for 6+ months
0MB
single static binary · no daemon, no runtime, no homebrew tap
0deps
no network calls, no telemetry, no surprise & delight

Features

Built for devs who actually use their disk.

Interactive TUI

Bubble Tea–powered terminal UI. Multi-select with space, expand with enter, delete with d. No mouse required.

Trash by default

Deletions go to macOS Trash and stay recoverable. Pass --rm only when you really mean it.

Safety levels

Every path is graded safe review hold so risky deletes never sneak past you.

Dry run mode

handbyte --dry-run prints exactly what would happen — no side effects, ever. Diff-friendly output.

Project-aware

Walks ~/dev, ~/Projects, ~/Code, ~/workspace for node_modules, target, .next, .venv, and 14 more.

Concurrent & lean

Parallel du workers. ~3.4 MB static Go binary. No daemon. Zero network. Zero telemetry.

What it scans

The usual suspects, automatically.

Xcode

  • DerivedData
  • iOS / watchOS / tvOS DeviceSupport
  • Archives, dSYMs
  • CoreSimulator caches

Language toolchains

  • go-build, Cargo, SwiftPM
  • npm, pnpm, yarn
  • Gradle, Maven
  • pip, pyenv, venvs

App & tool caches

  • Playwright, Cypress
  • JetBrains IDE caches
  • Homebrew, Codex
  • Per-app ~/Library/Caches/*

VMs & containers

  • OrbStack, Docker
  • Apple Container
  • Claude vm_bundles
  • Trash, Downloads

Project artifacts

  • node_modules, dist, .next, .turbo
  • target, build, .gradle
  • __pycache__, .venv, .mypy_cache
  • DerivedData, Pods, .dart_tool

System hygiene

  • ~/Library/Logs/*
  • ~/Library/Containers/*
  • ~/.cache/*
  • Trash

Safety

Three signals,
one decision.

Every scanned path is graded so you can power through obvious wins and pause on the rest.

safe

Regenerable cache.

Deleting costs only rebuild time. Auto-toggle with A.

review

Project artifacts & large stores.

Restorable, but worth a glance — confirm you don't want to ship from this build.

hold

User data or live state.

Downloads, container data, signed archives — not regenerable. Confirm carefully.

Usage

Boring flags. Predictable behavior.

# Interactive scan + multi-select TUI (default).
handbyte

# Preview only — never touches disk.
handbyte --dry-run

# Delete directly with rm -rf (skip Trash, unrecoverable).
handbyte --rm

# Hide items below 200 MiB.
handbyte --min=200M

# Custom project roots.
handbyte --roots=~/work,~/oss

# Skip the project artifact scan entirely.
handbyte --no-projects

Key bindings

j k /
navigate
g G
top / bottom
space
toggle selection
a
toggle group
A
toggle all auto-safe
c
clear selection
enter
collapse / expand
d
delete (with confirm)
?
help
q · Ctrl-C
quit

Get started

Find the 80 GiB you forgot about.

or read the source on GitHub →