<p align="center">
  <h1 align="center">rasa</h1>
  <p align="center">
    A fast, plugin-based disk space cleaner for developers.
    <br />
    <a href="https://crates.io/crates/rasa"><img src="https://img.shields.io/crates/v/rasa.svg" alt="crates.io"></a>
    <a href="https://github.com/hpouillot/rasa/actions"><img src="https://github.com/hpouillot/rasa/actions/workflows/ci.yml/badge.svg" alt="CI"></a>
    <a href="LICENSE"><img src="https://img.shields.io/crates/l/rasa.svg" alt="License: MIT"></a>
  </p>
</p>

Rasa scans your filesystem for build artifacts, caches, logs, and other space hogs left behind by development tools — then lets you interactively pick what to delete.

---

## Highlights

- **85 plugins** — languages, package managers, databases, IDEs, browsers, system caches
- **Interactive TUI** — browse, sort by size, toggle unsafe items, filter by plugin
- **Fast** — parallel filesystem walk with SQLite cache for instant re-runs
- **Safe by default** — every target is labelled *recoverable* or *unsafe*
- **Configurable** — CLI flags or `~/.rasa/config.toml`

## Installation

```sh
cargo install rasa
```

<details>
<summary>From source</summary>

```sh
git clone https://github.com/hpouillot/rasa.git
cd rasa
cargo install --path .
```
</details>

## Quick start

```sh
# Scan home directory with defaults
rasa

# Only Node and Cargo artifacts, 500 MB minimum
rasa --only node,cargo --min-size 500MB

# Scan a specific directory, skip Docker
rasa ~/Code --skip docker
```

## CLI reference

```
rasa [OPTIONS] [PATHS]...
```

| Flag | Description | Default |
|---|---|---|
| `-m, --min-size <SIZE>` | Minimum target size to report | `100MB` |
| `-d, --max-depth <N>` | Maximum directory depth to scan | `8` |
| `--only <PLUGINS>` | Only run these plugins (comma-separated) | |
| `--skip <PLUGINS>` | Skip these plugins (comma-separated) | |
| `--exclude <PATHS>` | Exclude paths from scanning (comma-separated) | |
| `--no-global` | Skip global targets, only scan project directories | |
| `--rescan` | Ignore cache and force a full rescan | |
| `--json` | Output targets as JSON lines (NDJSON) instead of TUI | |

## TUI controls

| Key | Action |
|---|---|
| `j` / `k` / `↑` / `↓` | Navigate |
| `Space` | Toggle selection |
| `Enter` | Confirm and delete |
| `s` | Cycle sort order |
| `u` | Show / hide unsafe targets |
| `e` | Show / hide explanations |
| `q` / `Esc` | Quit |

## Configuration

Create `~/.rasa/config.toml` to set persistent defaults:

```toml
min_size = "200MB"
max_depth = 6
skip = ["docker", "downloads"]
exclude = ["/mnt/external"]
no_global = true
```

CLI flags always take precedence.

## Plugins

Use plugin IDs with `--only` and `--skip` flags (e.g. `rasa --only node,cargo,docker`).

| Category | Plugin ID | Description |
|---|---|---|
| **Languages & runtimes** | `cargo` | Rust build artifacts and registry cache |
| | `dotnet` | .NET build outputs and NuGet cache |
| | `elixir` | Elixir/Mix build artifacts and dependencies |
| | `flutter` | Flutter/Dart build artifacts and pub cache |
| | `go` | Go module cache and build cache |
| | `haskell` | Haskell Stack/Cabal build artifacts |
| | `lua` | LuaRocks package cache |
| | `ocaml` | OCaml/Dune build artifacts |
| | `python` | Virtual environments and `__pycache__` |
| | `ruby` | Gem cache and bundle artifacts |
| | `sbt` | Scala SBT build artifacts |
| | `swift` | Swift Package Manager cache |
| | `typescript` | TypeScript build info files |
| | `zig` | Zig build cache and output |
| **Package managers** | `bun` | Bun install cache |
| | `cocoapods` | CocoaPods cache |
| | `composer` | PHP Composer vendor dependencies and cache |
| | `conda` | Conda/Miniconda package cache |
| | `deno` | Deno module cache |
| | `gradle` | Gradle caches and build outputs |
| | `homebrew` | Homebrew cache and old versions |
| | `maven` | Maven local repository |
| | `nix` | Nix store garbage |
| | `node` | `node_modules` directories |
| | `node-gyp` | Native addon build artifacts |
| | `pip` | pip download and wheel cache |
| | `pnpm` | pnpm global store |
| | `rye` | Rye Python toolchains and cache |
| | `uv` | uv Python package cache |
| | `yarn` | Yarn cache |
| **Frontend frameworks** | `angular` | Angular CLI build cache |
| | `expo` | Expo/React Native cache |
| | `gatsby` | Gatsby build cache and output |
| | `next` | Next.js build cache |
| | `nuxt` | Nuxt.js build cache and output |
| | `sveltekit` | SvelteKit build cache |
| | `storybook` | Storybook static build output |
| | `vite` | Vite build output |
| **Build tools** | `bazel` | Bazel build outputs and cache |
| | `cmake` | CMake build directories |
| | `esbuild` | esbuild build output |
| | `eslint` | ESLint cache files |
| | `jest` | Jest test coverage reports |
| | `nx` | Nx monorepo cache |
| | `parcel` | Parcel bundler cache |
| | `sccache` | Shared compilation cache |
| | `turborepo` | Turborepo cache |
| | `webpack` | Webpack build output |
| **Databases** | `mysql` | MySQL / MariaDB data files |
| | `postgres` | PostgreSQL data and WAL files |
| | `sqlite` | SQLite temporary and WAL files |
| **Containers & VMs** | `docker` | Docker build cache and unused data |
| | `orbstack` | OrbStack disk images |
| | `vagrant` | Vagrant VM state and disk images |
| **AI / ML** | `claude` | Claude desktop cache |
| | `jupyter` | Jupyter runtime and data files |
| | `ollama` | Ollama model cache |
| **Browsers** | `brave` | Brave browser cache |
| | `chrome` | Chrome browser cache |
| | `firefox` | Firefox browser cache |
| | `safari` | Safari cache and data |
| **IDEs & editors** | `jetbrains` | JetBrains IDE caches |
| | `vscode` | VS Code caches |
| | `zed` | Zed editor cache |
| **Apps** | `android` | Android SDK and emulator images |
| | `cypress` | Cypress binary cache |
| | `discord` | Discord app caches |
| | `electron` | Electron app cache |
| | `figma` | Figma app caches |
| | `flox` | Flox environment cache |
| | `iterm2` | iTerm2 cache |
| | `linear` | Linear app cache |
| | `playwright` | Playwright browser binaries |
| | `proton` | Proton Mail cache |
| | `slack` | Slack app cache |
| | `spotify` | Spotify cache and data |
| | `tableplus` | TablePlus cache |
| | `teams` | Microsoft Teams caches |
| | `terraform` | Terraform plugin cache |
| | `unity` | Unity project build artifacts and caches |
| | `xcode` | Xcode derived data and archives |
| | `zoom` | Zoom app cache |
| **System** | `csv` | Large CSV/TSV files |
| | `downloads` | Old files in Downloads folder |
| | `git` | Git repository garbage collection |
| | `image` | Large image files |
| | `logs` | System and app log files |
| | `tmp` | Temporary files |
| | `trash` | System trash |
| | `video` | Large video files |

## License

[MIT](LICENSE)
