Your AI agent just rewrote 47 files. You didn't commit.
UNF* recorded every version. Rewind any file to any second.
No commits required.
Git can't help. You didn't commit.
Ctrl+Z can't help. You closed the editor.
Time Machine can't help. It runs hourly.
UNF* records continuously. Every save, every second.
If your filesystem saw it, UNF* has it.
Real commands. Real output.
FSEvents on macOS, inotify on Linux. Respects .gitignore. Skips binaries. 3-second smart debounce.
<1% CPU · <100MB RAM
BLAKE3 content hashing. SQLite with ACID guarantees. Content-addressed, so identical files are stored once. Local-only, always.
Point-in-time restore for any file, any second. Automatic retention decay: 24h full, 7d hourly, 30d daily.
| unf watch | Start recording the current directory |
| unf unwatch | Stop recording (history preserved) |
| unf status | Watcher status + snapshot stats |
| unf log <file> | Timeline of every version of a file |
| unf diff --at "5m" | What changed in the last 5 minutes |
| unf restore --at TIME | Rewind files to any point in time |
| unf cat --at TIME | View file contents at a point in time |
| unf recap | Summarize session activity + context |
| unf list | Show all watched directories |
| unf prune | Clean up old snapshots per retention policy |
| unf stop / restart | Control the background daemon |
Relative: 5m 1h 2d
Absolute: ISO 8601 timestamps
--json — machine-readable output for all commands
--project <PATH> — operate on any project from anywhere
All text files, recursively. Respects .gitignore. Skips binaries by magic-number detection.
Everything in ~/.unfudged/. Nothing inside your project directory. Content-deduplicated.
Then: unf watch. That's it.
Your AI agent refactored 30 Rust files, hit an error on file 27, and reverted everything to stale versions. Three hours of good work — gone.
The agent decided .env was "generated" and deleted it. API keys, database URLs, local config. Not in git. Not anywhere.
You asked the agent to "clean up build artifacts." It wrote a shell script that rm -rf'd src/ instead of dist/.
The agent removed 6 "unused" crates from Cargo.toml. Four were behind feature flags. CI is red.
The agent ran Prettier with the wrong config and rewrote 200 TypeScript files. It committed before you noticed. git revert gives you one commit. UNF* has every file.
Your hand-crafted SQL seed data and JSON fixtures got overwritten with generic placeholders. A week of edge cases, gone.
The agent saw 47 SQL migration files and decided they were "redundant." Production depends on them running in order.
You squash-merged a feature branch. Git only has the final result. The 40 intermediate versions across 3 days? Git doesn't know they existed.
Context window overflow. The agent crashed 2 hours into a refactor across 4 repos. The new agent needs to pick up exactly where the old one left off.
You left an agent running overnight. It touched 80 files across 3 projects. What did it do?