DELTREE is a privacy-first macOS menu-bar utility for understanding and safely managing the disk space created by Codex-driven iOS and macOS development.
Unlike general developer-cache cleaners, it correlates bounded filesystem changes with local Codex tasks and Xcode activity. It explains what it found, labels cleanup risk, and revalidates every cleanup action immediately before execution.
C:\> DELTREE
SCAN CODEX + XCODE STORAGE
TRASH ONLY. LOCAL DATA. NO TELEMETRY.
Status: pre-release. Signed and notarized
v1.0.0-rc.3is available for clean-machine testing. It is not public GA: clean-machine QA is still pending, and the complete Sparkle update path must be proven from RC.2 to RC.3.
Download the signed and Apple-notarized RC.3 test candidate from GitHub Releases:
release_tag="v1.0.0-rc.3"
curl -fL -o DELTREE.zip "https://github.com/hazennik/DELTREE/releases/download/$release_tag/DELTREE.zip"
ditto -x -k DELTREE.zip .
open DELTREE.appRC.3 is for release-candidate testing. To build from source instead:
git clone https://github.com/hazennik/DELTREE.git
cd DELTREE
make build
open build/DerivedData/Build/Products/Debug/DELTREE.appmake build creates an unsigned, CI-equivalent build. For repeated local use where macOS file-access grants must survive rebuilds, use a stable Apple Development identity:
DELTREE_DEVELOPMENT_SIGNING_IDENTITY="APPLE_DEVELOPMENT_CERTIFICATE_SHA1" make signed-dev-build
open build/DerivedData/Build/Products/Debug/DELTREE.appKeep the same certificate and bundle identifier between builds. No personal Team ID, certificate fingerprint, or signing identity belongs in the repository. See Permissions & Troubleshooting for details.
Homebrew Cask support is planned after signed and notarized GitHub Releases are proven. No DELTREE cask is published yet.
Requirements:
- macOS 14 or newer.
- Xcode 17 or newer for the Swift 6 strict-concurrency project settings.
- Swift 6-era toolchain from Xcode.
Common commands:
make build
make test
make swift-test
make analyze
make cli-dry-runmake test runs the unit test bundle. make ui-test launches the menu-bar app and renders every documented UI surface, validating the resulting images. The legacy Xcode UI automation runner remains available as make xcode-ui-test for local investigation.
Formatting and linting use SwiftFormat and SwiftLint:
brew install swiftformat swiftlint
make lint
make formatThe SwiftPM package exposes the app's core models and services as DELTREECore, so contributors can run focused tests without opening Xcode:
swift testRelease dry-runs validate the packaging, notarization, and appcast command paths without signing credentials:
make package-check
make appcast-check
make spark-sign-checkDELTREE processes storage data locally. It reads known developer paths, local Codex metadata when present, and local process state for attribution. It does not upload scan results, cleanup history, paths, account data, or project metadata. Direct Developer ID builds may contact GitHub Releases over HTTPS through Sparkle to check for updates; update checks do not include DELTREE scan data.
Read the full policy in PRIVACY.md.
DELTREE is intentionally conservative.
- No full-disk crawl by default.
- No silent cleanup.
- Regular files and folders are moved to Trash; explicit simulator delete/erase actions permanently remove simulator data.
- Booted or active simulators are never cleaned.
- Archives, dSYMs, runtimes, DeviceSupport, and simulator images are excluded from one-click cleanup.
- Every cleanup plan is revalidated before execution.
Read the full policy in docs/SAFETY.md.
Several tools can remove Xcode or general developer caches. DELTREE focuses on explaining storage created during Codex-driven Apple-platform work:
- Local Codex task and process attribution, with confidence shown instead of treated as certainty.
- Bounded developer-storage scanning rather than a default full-disk crawl.
- Protected archives, runtimes, images, and DeviceSupport instead of broad one-click deletion.
- A reviewed cleanup plan plus final execution-time revalidation, with regular files moved to Trash.
| Modern | Classic |
|---|---|
| Primary public look for repeated day-to-day macOS use. | Retro command-prompt identity for users who prefer Classic. |
Modern is the primary public screenshot set because it best matches repeated day-to-day macOS use.
Classic keeps the retro command-prompt identity available as a smaller secondary set.
- Correlates filesystem changes with local Codex tasks and Codex, Xcode,
xcodebuild,simctl, Simulator, and CoreSimulatorService activity. - Shows Codex/Xcode storage impact from a quiet menu-bar icon.
- Uses the macOS-native
Moderninterface by default for repeated day-to-day use. - Keeps the terminal-style
Classicinterface available from Settings, with monospaced output, block storage meters, and explicit[SAFE]/[REVIEW]/[KEEP]labels. - Scans CoreSimulator devices, XCTest devices, DerivedData, result bundles, archives, DeviceSupport, simulator runtimes/images, SwiftPM caches,
~/.codex, and Codex workspaces. - Enriches simulator rows with
simctlmetadata. - Labels items as
Safe to Remove,Probably Safe,Review First,Do Not Remove, orUnknown. - Moves approved files to Trash instead of hard-deleting them.
- Uses explicit
simctl deleteandsimctl erasecommands for simulator-specific actions and identifies them as irreversible in cleanup preflight. - Persists scan history, recent growth, manual overrides, and cleanup records with SwiftData.
- Keeps detailed completed, skipped, and failed paths in expandable cleanup history records.
- Supports launch at login plus automatic update checks, downloads, and an explicit install-and-relaunch action for Developer ID builds.
The menu-bar item is icon-only:
- Outline or pixel icon: idle.
- Filled icon: scanning.
- Green/cyan dot: reclaimable storage found.
- Orange/amber dot: warning, low disk, or unreadable paths.
Totals and explanations live in the dropdown and dashboard so the menu bar stays quiet.
The bundled helper performs a bounded dry-run inventory and never deletes files:
Tools/deltree --dry-run
Tools/deltree --dry-run --jsonHuman output uses the Classic terminal dashboard style. JSON output remains stable for scripts.
Install it locally:
Scripts/install-cli.shDELTREE is intended for Developer ID distribution outside the Mac App Store because it needs to inspect developer folders and move approved items to Trash.
Packaging notes live in Packaging/README.md, release steps live in docs/RELEASING.md, and local signing setup lives in docs/LOCAL_RELEASE.md. Public distribution uses local Developer ID signing, Apple notarization, Sparkle appcast signing, and GitHub Release asset hosting.
MIT. See LICENSE.




