{"slug": "show-hn-sifty-windows-cleanup-cli-tui-with-local-only-ai", "title": "Show HN: Sifty – Windows cleanup CLI/TUI with local-only AI", "summary": "Sifty, a new free and open-source Windows cleanup tool, has been released that offers a scriptable CLI and full-screen TUI for junk cleaning, disk analysis, duplicate finding, app management, and developer artifact pruning. The tool features a local-only AI assistant powered by Ollama that analyzes file metadata without sending data off-device, and includes safety measures such as dry-run defaults, Recycle Bin-only deletions, protected system paths, and a full audit log.", "body_md": "Clean junk, analyze disks, find duplicates, manage apps and startup programs,\napply updates, prune dev artifacts and git worktrees, and organize files — from\na scriptable CLI or a full-screen terminal UI. The optional AI assistant runs\n**locally** via [Ollama](https://ollama.com): nothing leaves your machine, and it only ever sees\nfile *metadata* (names, sizes, paths), never file contents.\n\nSifty deletes files and changes system state, so it is built to be hard to misuse:\n\n**Dry-run by default**— every destructive command previews what it would do. Real changes need an explicit`--apply`\n\n.**Recycle Bin, never permanent delete**— all removals go through one`trash()`\n\nfunction backed by Send2Trash.`sifty undo`\n\nrestores the last clean.**Protected paths**—`C:\\Windows`\n\n,`Program Files`\n\n,`ProgramData`\n\n, the drive root and your profile root are refused even with`--apply --yes`\n\n.**Audit log**— every applied deletion is recorded in`%APPDATA%\\sifty\\audit.log`\n\n.**The AI never deletes anything**— it is advisory; high-risk tool calls always require your approval.\n\n| Feature | Sifty | CCleaner | Revo Uninstaller | WinDirStat |\n|---|---|---|---|---|\n| Junk / cache cleaning | ✅ 11+ categories | ✅ | ➖ | ❌ |\n| Disk usage analysis | ✅ top-N + volumes | ➖ | ❌ | ✅ treemap |\n| Duplicate finder | ✅ SHA-256, NTFS-aware | ✅ (paid) | ❌ | ❌ |\n| App uninstall + leftover scan | ✅ winget + leftovers | ✅ | ✅ + leftovers | ❌ |\n| App updates | ✅ via winget | ✅ (paid) | ❌ | ❌ |\n| Startup manager | ✅ reversible | ✅ | ✅ | ❌ |\n| Dev artifact purge (node_modules, …) | ✅ | ❌ | ❌ | ❌ |\n| Git worktree / WSL2 VHD cleanup | ✅ | ❌ | ❌ | ❌ |\n| Local AI assistant | ✅ Ollama | ❌ | ❌ | ❌ |\n| Scriptable (JSON output) | ✅ | ❌ | ❌ | ❌ |\n| Recycle Bin + undo for everything | ✅ | ➖ | ➖ | n/a |\n| Price | Free, MIT | Freemium | Freemium | Free |\n\nSifty is built **developer-first**: everything is scriptable, the engine is a\nreusable Python library, and it cleans the things developer machines actually\naccumulate (build artifacts, orphaned worktrees, bloated WSL2 disks).\n\n```\npipx install sifty       # recommended (isolated); or: pip install sifty\nscoop bucket add sifty https://github.com/Vortrix5/scoop-bucket; scoop install sifty\nwinget install Vortrix5.Sifty            # once the winget-pkgs PR is merged\n\nsifty doctor             # check admin rights, winget, Ollama\n```\n\nPrefer no Python install? Download the standalone `sifty.exe`\n\nfrom the\n[latest release](https://github.com/Vortrix5/sifty/releases/latest).\n\nFor development:\n\n```\npython -m venv .venv\n.\\.venv\\Scripts\\python.exe -m pip install -e \".[dev]\"\n.\\.venv\\Scripts\\python.exe -m pytest -q\nsifty checkup                # one read-only scan of everything: junk, updates,\n                             # orphans, stale files, disk space, startup\nsifty tui                    # the full-screen interactive app\n\n# Junk\nsifty junk scan              # show reclaimable space per category\nsifty junk clean             # preview removal (dry-run)\nsifty junk clean --apply     # send junk to the Recycle Bin (asks first)\n\n# Disk\nsifty disk volumes           # used/free/total per volume\nsifty disk analyze C:\\Users  # biggest folders/files under a path\nsifty disk duplicates D:\\    # find duplicate files and wasted space\n\n# Apps & updates\nsifty apps list --by-size    # installed apps, largest first\nsifty apps orphans           # broken uninstall entries in the registry\nsifty apps uninstall \"App\"   # uninstall via winget (preview, then --apply)\nsifty apps leftovers \"App\"   # what the uninstaller left behind (then --apply)\nsifty update check           # available updates (winget)\nsifty update apply           # upgrade everything (asks first)\n\n# Developer cleanup\nsifty purge clean            # node_modules, dist, __pycache__, target, …\nsifty cleanup duplicates D:\\Photos   # de-duplicate (keeps one copy each)\nsifty cleanup large C:\\Users\\you     # biggest files under a path\nsifty cleanup stale --days 180       # old items in Downloads\n\n# Startup & services\nsifty startup list                   # startup programs (enabled/disabled)\nsifty startup disable \"Spotify\"      # reversible (sifty startup enable …)\nsifty services list                  # curated optional services + state\nsifty --admin services disable DiagTrack   # toggle one (needs admin)\n\n# History & undo\nsifty history                # what was cleaned + total space reclaimed\nsifty undo                   # restore the most recent clean from the Recycle Bin\n\n# Organize files\nsifty organize preview C:\\Users\\you\\Downloads --by type\nsifty organize apply   C:\\Users\\you\\Downloads --by date\nsifty organize undo          # put the last organize's files back\n\n# Configuration\nsifty config                 # all settings + which ones you've overridden\nsifty config set ai.model \"llama3.2:3b\"\nsifty config edit            # open config.toml in your editor\n\n# AI (requires Ollama running)\nsifty ai status\nsifty ai ask \"what can I safely delete on my C drive?\" --path C:\\\n\n# Scripting — JSON output on read-only commands (auto-enabled when piped)\nsifty --json checkup\nsifty --json disk volumes\nsifty --json apps list --by-size\n```\n\nSome operations (Windows temp, update cache, certain uninstalls) need an\n**Administrator** terminal — `sifty doctor`\n\ntells you if you're elevated, and\n`sifty --admin <cmd>`\n\nrelaunches elevated via UAC.\n\n`sifty tui`\n\nopens a full-screen app with a seven-section sidebar — Home,\nClean, Disk, Apps, Monitor, Reports, AI:\n\n**Home**— volume gauges and a** Run checkup**button that scans everything at once; findings come with buttons that fix them right there (clean junk, clean stale downloads, apply updates — each behind a confirm).**Clean**— Junk / Purge / Optimize / Smart cleanup under one roof (tabs).** Apps**— Installed / Updates / Startup / Services, with fuzzy filter, sorting, bulk uninstall, and an automatic leftover scan after uninstalling.**AI**— an agentic chat: tool runs it proposes show** Run/Skip buttons inline in the conversation**, and scan results carry follow-up action buttons.\n\nPress **Ctrl+P** for the command palette (jump to any screen), **F2** to\nelevate, **Space** to mark rows for bulk actions. The **Reports** screen shows\nspace reclaimed over time with an **Undo last clean** button.\n\n- Install\n[Ollama](https://ollama.com)and start it. - Pull the configured model:\n`ollama pull qwen2.5:3b`\n\n. `sifty ai status`\n\nshould report \"running\".\n\nConfigure everything with the `sifty config`\n\ncommand — no need to hand-edit\nfiles:\n\n```\nsifty config                                  # show all settings + your overrides\nsifty config set ai.model \"llama3.2:3b\"       # use a different local model\nsifty config set ai.host \"http://localhost:11434\"\nsifty config set safety.extra_protected_paths '[\"D:\\\\Important\"]'\nsifty config set junk.include_downloads_installers true\nsifty config edit                             # or open config.toml in your editor\n```\n\nSettings live in `%APPDATA%\\sifty\\config.toml`\n\n; `sifty config set`\n\nonly writes\nthe keys you change, so defaults keep flowing through on upgrades.\n\nLayered — thin frontends over a reusable engine, OS specifics quarantined:\n\n```\nsrc/sifty/\n├── cli/               # Typer entry point + one thin command module per group\n├── tui/               # Textual full-screen app (views call core, not cli)\n├── core/              # the engine: junk, disk, apps, updates, cleanup,\n│   │                  # startup, services, organize, checkup, history, …\n│   └── safety.py      # ★ protected paths, dry-run guard, trash(), audit log\n├── windows/           # OS primitives: winget, registry, UAC, Recycle Bin, DISM\n├── ai/                # Ollama client, advisor prompts, agentic tool loop\n└── infra/             # TOML config + rotating diagnostics log\n```\n\nFrontends depend on `core`\n\n; `core`\n\ndepends on `windows`\n\n/`infra`\n\n; nothing\nimports upward. A GUI could call the same engine functions (`junk.scan`\n\n,\n`disk.find_duplicates`\n\n, `checkup.run_checkup`\n\n) without a rewrite. See\n[docs/ARCHITECTURE.md](/Vortrix5/sifty/blob/main/docs/ARCHITECTURE.md) for the design rationale.\n\n```\n.\\.venv\\Scripts\\python.exe -m pytest -q    # 160+ tests, ~20 s\n```\n\nThe safety guardrails are the most heavily tested code in the repo; the Windows\nenvironment is mocked so the suite also runs on CI. See\n[CONTRIBUTING.md](/Vortrix5/sifty/blob/main/CONTRIBUTING.md) to get involved.\n\n[MIT](/Vortrix5/sifty/blob/main/LICENSE) © Amine Zouaoui", "url": "https://wpnews.pro/news/show-hn-sifty-windows-cleanup-cli-tui-with-local-only-ai", "canonical_source": "https://github.com/Vortrix5/sifty", "published_at": "2026-06-12 17:29:02+00:00", "updated_at": "2026-06-12 17:51:17.694074+00:00", "lang": "en", "topics": ["ai-tools", "ai-products", "ai-infrastructure", "artificial-intelligence", "ai-startups"], "entities": ["Sifty", "CCleaner", "Revo Uninstaller", "WinDirStat", "Ollama", "Send2Trash", "winget"], "alternates": {"html": "https://wpnews.pro/news/show-hn-sifty-windows-cleanup-cli-tui-with-local-only-ai", "markdown": "https://wpnews.pro/news/show-hn-sifty-windows-cleanup-cli-tui-with-local-only-ai.md", "text": "https://wpnews.pro/news/show-hn-sifty-windows-cleanup-cli-tui-with-local-only-ai.txt", "jsonld": "https://wpnews.pro/news/show-hn-sifty-windows-cleanup-cli-tui-with-local-only-ai.jsonld"}}