aibris

command module
v0.4.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jun 14, 2026 License: MIT Imports: 1 Imported by: 0

README

aibris

Go Version License CI Go Report Card

AI + debris. A small CLI for cleaning up the filesystem leftovers from AI coding sessions: worktrees, logs, node_modules, and build caches.

AI tools are productive, but they shed a lot of temporary state while they branch, build, test, and retry. aibris scans the places that debris tends to collect, shows a readable cleanup plan, and only deletes after filters, confirmation, and path safety checks.

Who is this for?

  • Developers who use AI coding tools (Codex CLI, Claude Code, Cursor, Windsurf)
  • Teams sharing development machines where worktrees accumulate
  • Anyone who wants to reclaim disk space from node_modules and build caches
  • AI assistants that need structured scan output before cleanup

What it cleans

Category Examples Default clean
AI worktrees Codex, Claude, generic project worktrees Yes
Dependencies project node_modules directories Yes
Build caches Go, npm, Gradle, Cargo, Xcode Yes
Python caches pip and uv cache directories Yes
AI logs Codex, Claude, Cursor, Windsurf logs Only with --risky
Install
curl -fsSL https://raw.githubusercontent.com/sungjunlee/aibris/refs/heads/main/install.sh | bash

Install from the current main branch when you want unreleased changes:

curl -fsSL https://raw.githubusercontent.com/sungjunlee/aibris/refs/heads/main/install.sh | bash -s -- main

Install a specific release:

curl -fsSL https://raw.githubusercontent.com/sungjunlee/aibris/refs/heads/main/install.sh | bash -s -- 0.4.0

The installer downloads GitHub Release binaries and verifies checksums.txt. The default install path uses GitHub's releases/latest/download URLs for prebuilt binaries. main builds from source with Go.

By default, aibris installs to ~/.local/bin and does not require sudo. If that directory is not on your PATH, the installer prints the exact command to add it for your shell. For a system-wide install, pass an explicit prefix:

curl -fsSL https://raw.githubusercontent.com/sungjunlee/aibris/refs/heads/main/install.sh | bash -s -- --prefix /usr/local/bin
Usage
aibris scan                    # discover what's taking space
aibris scan --json             # machine-readable output (see docs/JSON_SCHEMA.md)
aibris scan --root ~/workspace # limit scan to a home subdirectory

aibris clean --dry-run         # preview without deleting
aibris clean                   # delete with confirmation
aibris clean --root ~/workspace --dry-run
aibris clean --age 7d          # older than 7 days (default)
aibris clean --age 30d         # older than 30 days
aibris clean --age 1mo         # older than 30 days (month shorthand)
aibris clean --age 1y          # older than 365 days
aibris clean --interactive     # confirm each item
aibris clean --category node_modules   # only node_modules
aibris clean --tool codex,claude       # only specific tools
aibris clean --risky           # include ai-logs
aibris clean --include-active-worktrees # include active worktrees
aibris clean --force           # skip confirmation prompt

See docs/DOGFOOD.md for real local scan transcripts used to validate release behavior.

Example
$ aibris scan

scan
  roots  ~

  scanned  7 sources   4 items   3.2 GB

summary
  found       4 items
  reclaimable 3.2 GB

by category
  node_modules    1   1.8 GB
  build-cache     2   1.3 GB
  worktree        1   96.0 MB

largest
    1.8 GB  node_modules  dashboard    -                  24d
  842.0 MB  build-cache   go-build     global             9d
  512.4 MB  build-cache   npm          global             18d
   96.0 MB  worktree      b7f4c2       aibris             active today

next
  aibris clean --dry-run
  aibris scan --json

Preview before deleting anything:

$ aibris clean --category worktree --age 7d --dry-run
clean
  roots  ~

  using cached scan from 8s ago

  matched  1 candidate   96.0 MB

clean plan
  mode     dry-run
  targets  1 item   96.0 MB

targets
      size  category      name         project            age/status     action
   96.0 MB  worktree      b7f4c2       aibris             orphaned 12d   remove-path
    ~/.codex/worktrees/b7f4c2/aibris

[DRY-RUN] No files were removed.

Confirm before deleting anything:

$ aibris clean --category node_modules --age 7d
clean
  roots  ~

  scanned  7 sources   4 items   3.2 GB

  matched  1 candidate   1.8 GB

clean plan
  mode     delete
  targets  1 item   1.8 GB

targets
      size  category      name         project            age/status     action
    1.8 GB  node_modules  dashboard    -                  24d           remove-path
    ~/workspace/dashboard/node_modules

Proceed? [y/N]:

scan writes a short-lived snapshot under the user cache directory. A following clean reuses it for 5 minutes when the scan roots and cache schema match. If the cache is stale, missing, or for different roots, clean falls back to a live scan with progress output.

So the common loop is fast and visible:

aibris scan
aibris clean --dry-run
aibris clean

When stdout is an interactive terminal, scans use a single-line spinner while providers run. In non-interactive logs, progress falls back to plain scanning / found lines.

Safety
  • Default --age 7d avoids very recent work
  • Human age units support h, d, w, mo, and y
  • --dry-run previews before deleting
  • --interactive confirms each item
  • Target plan before final confirmation shows category, size, project, age/status, path, and cleanup command when applicable
  • Recent scan reuse skips a repeated scan when clean can use a fresh compatible snapshot, while still re-checking target paths
  • --risky must be explicitly set to delete AI logs
  • Active worktrees are excluded by default; use --include-active-worktrees only when you intentionally want age-based cleanup for valid worktrees
  • Home-scoped roots: default scanning starts at $HOME; --root can narrow scope to one or more existing directories under $HOME
  • Pruned scan directories for project-style walks include .Trash, Library, Applications, Pictures, Movies, Music, .git, vendor, and nested node_modules; Desktop and Downloads are scanned
  • Official cache cleanup commands are preferred for supported caches (go clean -cache, npm cache clean --force, uv cache prune). If the owning command is missing, aibris falls back to the existing safe path removal behavior; if the command runs and fails, aibris does not fall back silently.
  • Confirmation prompt on every clean (use --force to skip)
  • isSafePath validation rejects deletions outside known-safe directories
  • Negative age rejection prevents accidental full-scope deletion
How It Works
aibris scan  → discovers worktrees, caches, node_modules, logs under scan roots
aibris clean → filters by age/category/tool → deletes safely

AI tools leave debris in predictable locations. aibris scans $HOME by default, prunes high-noise system and media directories while walking project-style debris, measures disk usage, and cleans only after filters and safety checks. Judgment about what should be removed stays with a human or an AI assistant using scan --json.

New tools can be added by implementing the DebrisProvider interface.

Agent Workflow
aibris scan --json
aibris scan --root ~/workspace --json
aibris clean --category worktree --tool codex --age 7d --dry-run
aibris clean --category worktree --tool codex --age 7d

The intended agent flow is: scan, summarize by project/category/age, ask the user what to remove, run a dry-run, ask again, then execute.

Contributing

See CONTRIBUTING.md and AGENTS.md for architecture and development guidelines.

License

MIT — see LICENSE.

Documentation

The Go Gopher

There is no documentation for this package.

Directories

Path Synopsis
internal

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL