![]()
Scan. Understand. Clean — one folder at a time.
Open-source disk cleaner. Scan a whole drive in seconds to see where the bytes went, drag any unfamiliar folder into the AI to learn what it is and whether it's safe to delete, then clean by scope — defaults to the Recycle Bin, never reads your file contents.
Download · Demo · Three things · Usage · Architecture · Roadmap · Contributing · Acknowledgments
简体中文 | English
| Platform | File | Notes |
|---|---|---|
| Windows 10 / 11 (x64) | Pinkbin_x.x.x_x64-setup.exe (NSIS) |
Pinkbin_x.x.x_x64_en-US.msi (MSI) | First launch: SmartScreen will block — click "More info" → "Run anyway". NTFS MFT direct read needs admin; the installer ships a manifest that auto-elevates via UAC. |
No prebuilt macOS / Linux binaries yet (no signing cert for macOS, and we haven't validated the Linux build on real hardware). You can build them yourself with
pnpm tauri build. The release matrix will be expanded once we have signing + real-hardware validation — PRs welcome.

In use · Left: D:\ tree view (each row shows a usage % bar) · Center: drag D:\steam\steamapps into the AI, it answers in markdown — what this is and whether it's safe to delete · Right: Studio card expanded for Conda packages cache (5.12 GB · 150,867 files)

Empty state · Top "Pick a disk or folder" → click Scan to populate; the right-hand Studio already recognizes WeChat / Conda (showing "not detected" because the scaffold's default paths haven't been scanned yet)
Pinkbin only does three things:
Direct read of the Windows NTFS Master File Table (jwalk fallback on other platforms). Full C: drive in 2–5 seconds. Renders a colored treemap and a single-line 22px-row tree view — at a glance you can see D:\xwechat_files taking 80GB, C:\Users\<you>\AppData\Local\Docker taking 50GB.
See an unfamiliar folder? Drag it from the left tree (or the path on the right) into the central chat panel, and the AI explains what it is, whether it's safe to delete, and what you'd lose. BYOK — bring your own Anthropic / OpenAI / Gemini key, or run Ollama locally for free.
Pinkbin only sends directory metadata to the AI (path names, size, file count, extension distribution, up to 20 sample paths). It never reads file contents.
Some apps are mainstream, eat real disk, and have a clear cleanup boundary — for those we ship a cleanup scaffold (one TOML + one Rust integration test). Users can clean each scope individually right from the Studio card. Currently shipping two:
CustomEmotion.conda-meta/history mtime is older than 90 days). Base env is permanently grayed out.What's coming: Steam shadercache · Chrome cache · Docker buildx · HuggingFace models · npm/pnpm/pip cache · OBS recordings · IDE indices — mainstream apps with significant disk usage and clear cleanup boundaries, added one by one through the 14-phase workflow with red-line integration tests guarding every glob. Why we cut the previous 36 legacy scaffolds: nobody had verified their glob boundaries, creating a real risk of deleting user data (e.g. the old node-modules scaffold matched Cursor / VSCode / game-bundled node_modules directories).
All deletes go to the system Recycle Bin by default — recoverable. Every action writes ~/.pinkbin/undo.jsonl; optional 7-day quarantine.
Want a plain-language walkthrough (no jargon, written for non-technical readers — Chinese for now): 📖 docs/ARCHITECTURE.md
┌────────────────────┐ ┌─────────────────────┐
│ React + Tauri │────>│ Rust workspace │
│ (frontend UI) │<────│ (4 crates) │
└────────────────────┘ └──────────┬──────────┘
│
┌─────────────────┬───────────┼──────────────┬──────────────┐
│ │ │ │ │
┌────▼────┐ ┌──────▼─────┐ ┌──▼──────┐ ┌────▼────┐ ┌──────▼──────┐
│ scanner │ │ scaffold │ │executor │ │advisor │ │scaffold-lint│
│ NTFS MFT│ │ TOML + │ │Recycle/ │ │AI 4 │ │ CI checker │
│ + jwalk │ │ globset │ │Quarant. │ │protocols│ │ │
└─────────┘ └────────────┘ └─────────┘ └─────────┘ └─────────────┘
| Layer | Stack |
|---|---|
| Frontend | React 18 + TypeScript + Tauri 2 + react-markdown |
| Backend | Rust workspace (4 crates) + Tauri IPC |
| Scanner | Windows: NTFS MFT direct read (ntfs crate) / Cross-platform: jwalk |
| AI | BYOK · Anthropic · OpenAI · Gemini · Ollama (4 protocols) |
| Data | Local ~/.pinkbin/ (undo.jsonl + quarantine/) · never uploaded |
The most valuable contribution is writing a new cleanup scaffold. Each app is one PR:
docs/scaffold-requirements/ (red lines: chat DBs? account keys? user favorites?)Glob to enumerate the real directory tree, find the cache-vs-user-data boundaryscaffolds/_templates/scaffold.toml and write the TOMLcrates/scaffold/tests/_templates/scaffold_safety.rs and write the safety test (positive + red-line assertions, CI runs this — no test, no merge)pnpm tauri dev to verify the card rendersClaude Code users: just type /add-scaffold <id> from the repo root and the 14-phase workflow kicks in.
Full workflow: .claude/commands/add-scaffold.md.
git clone https://github.com/cccyd2003-qwq/pinkbin.git && cd pinkbin
pnpm install
pnpm tauri dev # desktop app (first build compiles Rust deps, 5-15 min)
pnpm -C apps/desktop dev # frontend only, browser-based debugging, mock backend
cargo test --workspace # workspace tests
Requires Node 20+ · pnpm 9+ · Rust stable · Tauri prerequisites (on Windows: VS Build Tools 2022 + WebView2).
d3-hierarchy · jwalk · ntfs · globset · trash-rs · react-markdownMIT · fork it, sell it, fork it closed-source — go ahead. If you modify a scaffold, please keep its safety test in sync — the red-line assertions are the last line of defense against accidentally deleting user data.
$ claude mcp add pinkbin \
-- python -m otcore.mcp_server <graph>