Undo - Never lose work again We're sorry but Undo doesn't work properly without Javascript<br>enabled. Please enable it to continue.<br>Give your files an undo button<br>Undo watches your project and records every change, so you can see what happened and restore any file in seconds.<br>View on GitHub Setup →
macOS / Linux<br>$ curl -fsSL https://useundo.co/install.sh | bash<br>Standalone binary for macOS and Linux. You can also download one from the Releases page.
See it in 30 seconds<br>Start watching, check what changed, restore what you need.<br>Start watchingSee what changedRestore<br>$ cd my-project/<br>$ undo start & # start watching<br># ... work on your project ...<br># every save is recorded automatically
How it works
┌────────────────┐ file change ┌────────────────┐<br>│ your project │ ───────────────▶ │ Undo watcher │<br>│ ~/my-project │ file event │ save version │<br>└────────────────┘ └───────┬────────┘<br>┌────────────────┐<br>│ ~/.undo/ │<br>│ SQLite + │<br>│ saved versions │<br>└────────────────┘
1.Undo watches your project in the background using macOS and Linux file events<br>2.When a file changes, Undo checks whether the content is new<br>3.New content is saved as a compressed version, and the change is logged at ~/.undo/<br>4.When Undo starts, it checks for changes that happened while it was off
01Runs in the background<br>Start Undo once. It watches your project using macOS and Linux file events, with no editor plugin or Git hook.
02Saves small versions<br>When a file changes, Undo saves a compressed copy. Duplicate content is stored once, so history stays small.
03Cleans up after itself<br>Undo keeps 7 days of history and uses up to 1 GB by default. Old saved versions are pruned automatically.
04Skips the noisy stuff<br>Dependencies, build folders, Git data, and common secret files are ignored by default. Add your own rules with .undoignore.
05Restores safely<br>Before Undo overwrites a file, it backs up the current version. That means a restore can be undone too.
06Stays on your machine<br>History is stored locally at ~/.undo/. There is no server, cloud sync, or account.
Find and restore changes<br>Ask what changed, inspect a diff, and bring back an earlier version.<br>what-changedtimelinediffrestore<br>$ undo what-changed 5m<br>Changes in last 5m<br>MODIFIED<br>- src/server.rs<br>- Cargo.toml<br>CREATED<br>- logs/debug.log<br>DELETED<br>- assets/logo.png
Commands<br>Most days you only need what-changed and restore.<br>undo startStart watching this project.<br>undo what-changed 5mShow recent file changes.<br>undo timelineShow a timeline of activity.<br>undo diff Compare a file with its last saved version.<br>undo restore Bring a file back from an earlier version.<br>undo statusShow watch status and disk usage.<br>undo pruneRemove old history. Use --dry-run to preview.<br>undo stopStop watching this project.<br>undo updateUpdate Undo.
See every command and flag in the detailed docs.
Frequently asked questions<br>The basics before you install.<br>Does undo replace Git?<br>Where does my data live?<br>How much disk space does it use?<br>Will it save node_modules or my .env files?<br>What happens when I restore a file?<br>Which platforms are supported?
Start protecting your work.<br>One command. No account. Everything stays local.<br>View on GitHub Setup →