Tidemark user guide

Contents

  1. Getting started
  2. Cleanup
  3. Installed Apps
  4. Disk Map
  5. AI Tools
  6. Servers
  7. Ask AI
  8. Terminal and shortcuts
  9. Settings
  10. Safeguards
  11. CLI usage
  12. Custom cleanup rules
  13. Data locations and troubleshooting

Getting started

Tidemark is a free, open-source disk cleanup app. It finds the caches, dependencies, build artifacts, and AI models that pile up during development, along with apps you haven't used in a long time, and cleans them up safely. Scanning never deletes anything, and cleanup runs only after you confirm it.

Installation

  1. Open Tidemark_<version>_aarch64.dmg and drag Tidemark.app to the Applications folder.
  2. If macOS blocks the first launch because the developer can't be verified, Control-click the app in Finder and choose Open.
  3. Requirements: Apple silicon Mac, macOS 11 or later.

Layout

Area What it does
Header View tabs (Cleanup / Installed Apps / Disk Map), free disk space gauge, Rescan, and Terminal, Settings, and Ask AI icons
Left sidebar Totals per category and filters (risk, project idle time, git remote update)
Center list Found items, with a search field and bulk selection buttons
Right detail panel Opens when you click an item. Shows path, size, description, how to restore, and folder contents
Bottom bar Number of selected items and estimated reclaimable space, Move to Trash toggle, and Clean Up

On first launch, click Start Scan. The last scan results are saved and shown right away on the next launch, and the status line at the top shows when the scan was run.

Cleanup

In the Cleanup view, you pick items found by the scan and clean them up after confirming.

Scanning

AI tool and model cleanup

Browser caches and personal data cleanup

Risk

Label Meaning
Safe Data that comes back when you re-download or rebuild. Usually fine to delete
Caution Data that takes time to download again, or that may take some settings with it
Danger Data that's hard to get back or may contain user data. Requires separate confirmation when cleaning

A ⚠ mark next to an item is a warning (for example, a related program is running). Hover over it to see the details.

Detail panel

Click an item to open it on the right.

Pre-check

For items cleaned with a command, such as unused Docker data, unavailable iOS simulators, and the Homebrew cache, Tidemark calculates in advance how much space will actually be freed. The list shows the estimated reclaimable space alongside the total size, like ~13.4 GB / 56.4 GB.

Git check

Project folders (node_modules, target, and so on) also show the state of their git repository.

Cleaning up

  1. Select items with the checkboxes next to them. The bottom bar shows the number selected and the estimated reclaimable space.
  2. Turn on Move to Trash if you want. In that case, space is freed only after you empty the Trash. Old-file cleanups and command-based items are deleted right away.
  3. Click Clean Up to see the list of targets in a confirmation dialog. If it includes Danger items, you must check the consent box before Clean Now is enabled.
  4. When it's done, a summary shows the space freed, the change in free disk space, and any items that failed.

Installed Apps

The Installed Apps view removes apps you haven't used in a long time, along with their leftovers, and manages globally installed packages. The app scan uses only app information and this Mac's records; it doesn't use the network or AI.

App list

Removing apps and leftovers

  1. Click an app to see its leftovers in the detail panel. Items matching the bundle ID or developer ID are certain leftovers; items that only share the name are marked Guessed.
  2. Click Remove app and leftovers, then choose the removal method and the leftovers to remove. Guessed items and items shared with other apps are left out by default.
  3. Apps and leftovers moved to the Trash can be restored from the Trash.
Removal method When to use it
Move to Trash (recommended) Most apps
Homebrew zap Apps installed with a Homebrew cask. Runs brew uninstall --cask --zap, then moves any remaining leftovers to the Trash
Developer uninstaller When the app has its own uninstaller. That tool handles the removal

Leftovers from uninstalled apps

The Leftovers from uninstalled apps tab groups the settings, caches and containers that already-removed apps left in ~/Library, one row per app.

Admin removal vault

When you remove an app owned by the system (root), such as one installed from a .pkg or downloaded from the App Store, macOS asks for an administrator password.

Global packages

The Global packages tab in the toolbar gathers what you installed with Homebrew, npm, pnpm, yarn, and bun globals, pipx, uv tool, and cargo install, plus the npx cache.

Disk Map

Disk Map shows which folders take up space as rectangles sized in proportion to their size (a treemap).

  1. Click Analyze home folder or Analyze entire disk (/). The home folder can take a few minutes.
  2. Click a folder's rectangle to go into it. Click the path at the top (breadcrumbs) to go back to a parent folder.
  3. The list on the right shows the current folder's subfolders and files by size. You can open them in a terminal or Ask AI.
Action Result
⌘ + scroll Zoom in and out
⌘ + drag Move around the zoomed map
Reset zoom / Back to full map Reset zoom / Return to the base folder

Large Files

In Disk Map → Large Files, choose large files, old downloads, or duplicate downloads and click Scan. Choose a minimum size of 100 MB, 250 MB, 500 MB, 1 GB, or 5 GB, or an age of 30, 90, 180, or 365 days. Old downloads are top-level items in ~/Downloads; folders also use the newest modification inside them. Search, sorting, and cancellation are available. Duplicate files of at least 1 MB are confirmed by size, the first 64 KB, and full SHA-256 hashes.

Personal files start unselected. Only duplicate copies are selected, leaving the oldest file as a possible original. Review the count, total size, and list before moving items to Trash; file metadata is checked again immediately before the move. Library, music data, bundles, links, other volumes, and cloud placeholders are skipped, as are folders that cannot be fully checked. Results stay in memory. If access is denied, allow Tidemark under System Settings → Privacy & Security → Files and Folders and scan again.

AI Tools

View AI tools’ disk usage, redownloadable caches, running AI processes’ CPU and memory, and supported GPU utilization. Expand a tool to see cache, model, and user-data paths and sizes; Show in Finder opens the location. User data is never labeled as cache. This screen is read-only and cannot delete files or stop processes.

On first opening the tab, saved measurements appear immediately; automatic measurement runs only when no history exists. Use Measure again or Cancel as needed. Processes refresh about every 3 seconds while the tab is visible and can be paused. CPU uses a per-core scale and may exceed 100%; RSS memory may understate actual usage. Shared data can make per-model totals exceed physical disk usage. GPU information is hidden when unavailable.

Servers

Lists listening TCP ports by process. Use Refresh, search by port or name, or filter to network-exposed ports. This Mac only means loopback; Open to the network means the server binds to an address other devices may reach, independently of firewall permissions. Common port uses are hints, not proof of the running program.

Ask AI

You can ask an AI agent CLI you already have installed about what you're looking at. AI can't delete anything; it only makes suggestions. Supported agents: Claude Code (claude), Codex (codex), Gemini CLI (gemini), Cursor CLI (cursor-agent), OpenCode (opencode).

How to ask

  1. Click the sparkle icon at the right end of the header, Ask AI in the detail panel, or select items and click Ask AI in the bottom bar.
  2. Choose an agent and write your question. You can also click a suggested question for the current view (for example, "Which program created this folder?") to fill it in.
  3. Click Start in Terminal to run the agent in the built-in terminal. Information about the current view and selected items is passed along. If you change the view or selection during the conversation, the agent answers based on the latest state.

AI answers in Tidemark's display language. The agent runs as a CLI on your computer, so sign-in and billing follow each CLI's settings.

AI review badges

When AI reviews an item, the result is shown in the list and the detail panel.

Badge Meaning
OK to clean AI thinks it's fine to delete
Check before cleaning AI suggests checking the contents before deleting
Recommend keeping AI suggests keeping it

The AI review card in the detail panel also shows the reasoning, what could go wrong if you clean it, and how to restore it. It's only AI's opinion, so decide for yourself whether to clean.

AI cleanup suggestions

Terminal and shortcuts

A terminal is built in at the bottom of the window, so you can inspect items directly or run AI agents and package upgrades.

Shortcut Action
⌘F Go to the search field in the current view
Esc (in the search field) Clear the search
⌘+ / ⌘- / ⌘0 Zoom in / zoom out / actual size (works even when the cursor is in the terminal)
⌘ + scroll, ⌘ + drag Zoom and move the Disk Map

On Windows and Linux, use Ctrl instead of ⌘. The zoom level and terminal height are saved and kept on the next launch.

Settings

Open it with the gear icon in the header. Changes apply right away and are kept on the next launch.

Item Options Default
Theme System / Light / Dark System (follows macOS or Windows light/dark mode)
Language System / 한국어 / English / 日本語 / 简体中文 System (English for languages not in the list)
AI agents Enable each agent, default agent, executable path Use all installed agents

Language

AI agents

Sponsoring

You can support Tidemark's development with Sponsor at the bottom of the Settings window.

App updates

Automatic checks are on by default. At launch, once 24 hours have passed, Tidemark requests only the version file from GitHub; you can also choose Check now. Files download only after you choose Update. After signature, notarization, and checksum checks, choose Install and restart; restarting is disabled while cleanup is running. If the app location or verification prevents automatic installation, choose Open release page to download it yourself. Your user data is preserved.

Safeguards

Tidemark shows what will be deleted before deleting it, and in the cases below it either refuses to delete or asks you to confirm again.

Safeguard Details
Read-only scan Scanning only finds items and measures their size. Cleanup runs only after you confirm it
Protected paths Refuses to delete your home, Desktop, Documents, and system folders, and their parent paths
Official cleanup commands first Uses the methods tools provide first, such as npm cache clean, uv cache clean, and docker system prune
Links and other volumes Doesn't follow symbolic links or cross into other file systems. Hard links are counted once, and shared space is shown separately
Project marker files Only folders containing files such as package.json, Cargo.toml, or pyvenv.cfg are treated as project cleanup targets
Git check Shows uncommitted changes and unpushed commits. When calling git, command-running settings in the repository config (core.fsmonitor and others) are turned off
Danger item consent If Danger items or AI suggestions are included, you must check a separate box in the confirmation dialog to proceed
Trash With Move to Trash turned on, you can undo. Removing apps also uses the Trash by default (the admin removal vault for root-owned apps)
Path swap protection On macOS and Linux, old-file deletion is done relative to folder handles (openat/unlinkat)
Cleanup log Records what was cleaned and when in clean-log.jsonl

CLI usage

The same engine is also available as the terminal command tidemark. Without --yes, clean only shows the plan (dry run) and deletes nothing.

Install (from the repository): cargo install --path crates/cli

Command What it does Main options
tidemark scan Scan for items you can clean --root <folder>, --no-projects, --no-rules, --min-mb <MB> (default 1), --git-fetch, --json
tidemark clean Clean items scan options + --rule <id> (repeatable), --max-risk safe|caution|danger, --unused-days <N>, --include-warned, --trash, --yes
tidemark rules List the rules that apply to the current OS —
tidemark map [folder] Space used per folder (default: home folder, 2 levels deep) Base folder (for example, /, ~/Desktop)
tidemark apps Last used date, size, and leftovers of installed apps --unused-days <N>, --no-apple, --json
tidemark outdated Global packages with new versions (Homebrew, npm, pnpm) —
# Scan only (deletes nothing)
tidemark scan

# Show the cleanup plan for Safe items (dry run)
tidemark clean --max-risk safe

# Move node_modules of projects unused for more than 90 days to the Trash
tidemark clean --rule project:node_modules --unused-days 90 --trash --yes

# Actually clean a single rule
tidemark clean --rule npm-cache --yes

The output language follows the OS language. You can change it like TIDEMARK_LANG=en tidemark scan (ko, en, ja, zh). Use tidemark rules to see rule IDs.

Custom cleanup rules

To add caches that the built-in rules don't cover, or to turn off built-in rules, create rules.toml. On macOS it goes in ~/Library/Application Support/tidemark/rules.toml (on other OSes, <config_dir>/tidemark/rules.toml).

# Add a new rule
[[rules]]
id = "my-tool-cache"
name = "My Tool cache"
category = "package_cache"
risk = "safe"
description = "Files downloaded by my-tool."
restore = "Downloaded again on the next run."
paths = { macos = ["~/Library/Caches/my-tool"], linux = ["~/.cache/my-tool"] }
mode = "contents"

# Turn off a built-in rule (id, name, category, and risk are always required)
[[rules]]
id = "yarn-cache"
name = "Yarn cache"
category = "package_cache"
risk = "safe"
disabled = true
Field Meaning
id, name Rule identifier and the name shown in the app. Required, along with category and risk
category package_cache, project_deps, build_cache, ai_tool, ai_model, ide, container, temp, logs, app_cache, trash
risk safe | caution | danger
paths Paths per all, unix, macos, linux, windows. Supports ~, $VAR, ${VAR}, %VAR% A single directory component * is supported for profiles; recursive ** and multiple * components are not supported.
paths.priority, paths.pointer, paths.first_existing priority uses the first expandable path. pointer = { file, suffix } reads a home path from a file and appends the suffix; first_existing = true selects the first existing default folder.
mode whole (delete the path) | contents (delete its contents) | children (show each child item) | aged_files (old files only)
min_age_days, include, exclude Age in days and root-relative globs for aged_files; child-name globs for children. For contents, exclude lists root-relative child paths.
command Official cleanup command { program, args }. Runs first if present
fallback_delete Delete directly if there's no command or it fails (default true)
inspect Pre-check of reclaimable space before running: simctl-unavailable | docker-prune | brew-cleanup
partial The command cleans only part of it (the size shown is the maximum)
processes Process names to warn about if running

Data locations and troubleshooting

All of Tidemark's data is stored only on your computer. On macOS, it's in ~/Library/Application Support/tidemark/.

File Contents
last-scan.json Last Cleanup scan results
apps.json Installed apps and global packages scan results
disk-map.json Disk Map analysis results
ai-reviews.json AI review results
ui.json Theme, language, zoom level, terminal height, and AI agent settings
clean-log.jsonl Cleanup log
rules.toml Custom cleanup rules (only if you created it)

If a storage-clear folder from the old name (Storage Clear) exists, it's moved to tidemark automatically on first launch.

FAQ

I cleaned up, but free space didn't increase.

Ask AI can't find the agent.

At launch, Tidemark takes the PATH from your login shell to find claude and codex. If it still can't find them, set the executable path yourself in Settings.

I changed the language, but some text still appears in the old language.

Scan warnings, pre-check descriptions, and git status notes are saved in the language used at scan time. Rescan to switch them to the new language.

Scan results don't match reality.

Last scan results · N days ago in the status line at the top means saved results are being shown. Rescan before cleaning for accurate results.

On first open, it won't launch because of an "unidentified developer".

This build isn't notarized by Apple yet. Control-click the app in Finder and choose Open. After you allow it once, it opens normally from then on.