Give your files an undo button

Undo watches your project and records every change, so you can see what happened and restore any file in seconds.

macOS / Linux
$ curl -fsSL https://useundo.co/install.sh | bash

Standalone binary for macOS and Linux. You can also download one from the Releases page.

See it in 30 seconds

Start watching, check what changed, restore what you need.

$ cd my-project/
$ undo start & # start watching
# ... work on your project ...
# every save is recorded automatically

How it works

┌────────────────┐   file change    ┌────────────────┐
│  your project  │ ───────────────▶ │  Undo watcher  │
│  ~/my-project  │    file event    │  save version  │
└────────────────┘                 └───────┬────────┘
                                            │
                                            ▼
                                    ┌────────────────┐
                                    │    ~/.undo/    │
                                    │    SQLite +    │
                                    │ saved versions │
                                    └────────────────┘
1.Undo watches your project in the background using macOS and Linux file events
2.When a file changes, Undo checks whether the content is new
3.New content is saved as a compressed version, and the change is logged at ~/.undo/
4.When Undo starts, it checks for changes that happened while it was off
01

Runs in the background

Start Undo once. It watches your project using macOS and Linux file events, with no editor plugin or Git hook.

02

Saves small versions

When a file changes, Undo saves a compressed copy. Duplicate content is stored once, so history stays small.

03

Cleans up after itself

Undo keeps 7 days of history and uses up to 1 GB by default. Old saved versions are pruned automatically.

04

Skips the noisy stuff

Dependencies, build folders, Git data, and common secret files are ignored by default. Add your own rules with .undoignore.

05

Restores safely

Before Undo overwrites a file, it backs up the current version. That means a restore can be undone too.

06

Stays on your machine

History is stored locally at ~/.undo/. There is no server, cloud sync, or account.

Find and restore changes

Ask what changed, inspect a diff, and bring back an earlier version.

$ undo what-changed 5m
Changes in last 5m
MODIFIED
- src/server.rs
- Cargo.toml
CREATED
- logs/debug.log
DELETED
- assets/logo.png

Commands

Most days you only need what-changed and restore.

undo startStart watching this project.
undo what-changed 5mShow recent file changes.
undo timelineShow a timeline of activity.
undo diff <file>Compare a file with its last saved version.
undo restore <file> <time>Bring a file back from an earlier version.
undo statusShow watch status and disk usage.
undo pruneRemove old history. Use --dry-run to preview.
undo stopStop watching this project.
undo updateUpdate Undo.

See every command and flag in the detailed docs.

Frequently asked questions

The basics before you install.

Start protecting your work.

One command. No account. Everything stays local.