AI agent worktrees
Finds every linked worktree (Codex, Cursor, Conductor, Claude Code, manual), shows its branch and status — clean, dirty, unpushed, merged, orphaned — and removes finished ones with git worktree remove. Branches are always kept.
THE PIT STOP FOR YOUR MAC
Reclaim the space taken by worktrees, dependencies and builds. A precise tool for developers moving fast — without leaving their Mac behind.
macOS Open source You stay in control.
[ DEMO ] THE DASHBOARD
Scan. Select. Breathe.
lu-cleaner on a demo home folder: scan, AI agent worktrees, project artifacts, confirmation, summary. The data is synthetic, hence sizes in MB; on a real machine, count in GB.AI coding agents changed what fills a developer's disk. Every Codex, Cursor, Conductor or Claude Code task can spawn a git worktree with its own node_modules, ios/Pods and Android build. Simulators silently collect gigabytes of UI-test recordings. Package managers keep several global caches and node versions. General-purpose cleaners either don't know these places, or deliberately stay away from them.
lu-cleaner knows them — and knows which ones are safe to remove.
AI agent worktrees
Finds every linked worktree (Codex, Cursor, Conductor, Claude Code, manual), shows its branch and status — clean, dirty, unpushed, merged, orphaned — and removes finished ones with git worktree remove. Branches are always kept.
React Native aware
npkill-style scan of node_modules, ios/Pods, ios/build, android/app/build, .gradle, .cxx, .expo… with marker files and git-ignore checks so a folder named build that is source code is never touched.
Simulators & emulators
iOS simulators, runtimes, orphan device folders, XCTest recordings and unified logs; Android AVDs, unused system images, NDKs and Gradle distributions — including SDKs on external drives.
Safe by design
Every path is re-checked right before deletion: protected credentials and configs, inode identity, running apps, open databases, processes working inside, uncommitted work. Dry-run everywhere.
Fast
Written in Go, with native macOS reads and results streamed as they arrive. The default eco mode limits load; use --scan-mode fast when your Mac has room to accelerate.
Scriptable & LLM-friendly
--json everywhere, strict rules for non-interactive --yes, and this documentation is available as llms.txt for your coding assistant.
go install github.com/ludwig-pro/lu-cleaner/cmd/lu-cleaner@latestlu-cleaner # dashboard: you pick what to remove, nothing is preselectedlu-cleaner clean --smart # same, but starts with the recommended items selectedlu-cleaner clean # the picker again, nothing preselectedlu-cleaner worktrees # only git worktreeslu-cleaner artifacts # only node_modules, Pods, builds…lu-cleaner scan --json > report.jsonlu-cleaner clean --yes --smart --dry-run # the plan, nothing deletedlu-cleaner clean --yes --smart # clean the recommended items