Show HN: Unfucked - version all changes (by any tool) - local-first/source avail

88 pointsposted a day ago
by cyrusradfar

41 Comments

notfried

11 hours ago

I love the website; the design, the video, the NSFW toggle, the simplicity.

I love the idea; definitely something I ran into a few times before and wish I had.

Unfortunately, I am not installing a closed-source daemon with access to the filesystem from an unknown (to me) developer. I will bookmark this and revisit in a few weeks and hope you had published the source. :)

cyrusradfar

10 hours ago

Totally understandable.

I didn't open up the source for this as I have a mono-repo with several experiments (and websites).

Happy to open the source up and link it from the existing website.

I've started to have an Agent migrate it out, and will review it before calling it done. Watch https://github.com/cyrusradfar/homebrew-unf

Edit: You can download the current version now: https://github.com/cyrusradfar/homebrew-unf/archive/refs/tag...

OccamsMirror

an hour ago

I have to agree with the previous user. I'm not brew installing a closed source daemon.

I'd have to imagine that moving this out to its own repo with Claude Code would be trivial so I don't understand the resistance.

This is a great idea. I look forward to seeing a proper repo for it.

popalchemist

11 hours ago

Agreed on all counts. It looks great! Just can't trust it unless it's transparent.

wazzaps

12 hours ago

FYI all Jetbrains IDEs include this, as long as they are open on the codebase. It's called "Local history".

its-kostya

11 hours ago

I love to use the terminal, and I still do. But as much as I love to unfu*k my local nvim setup, I much rather pay a company to do it for me. Set up vim bindings inside jetbrains and everything comes with batteries included, along with a kick-ass debugger. While my colleagues are fighting opencode, I pointed my IDE at the correct MCP gateway and everything "just works" with more context.

Thought I'd share the data point to support jetbrains

nurettin

25 minutes ago

On behalf of everyone who dislikes jetbrains business model, I would like to say: duly noted.

gschrader

10 hours ago

I think it only keeps history for user edited files, agent edited files don't seem to end up in it for me (Claude code) but maybe it works with other agents with the proper plugins I'm not sure.

cyrusradfar

10 hours ago

+1 OP here, this is the problem I'm solving for. Agents use tools and may be in multiple places editing; therefore, you need to watch the file system.

heeen2

11 hours ago

vscode and its forks as well (for files it saves)

mpalmer

13 hours ago

This is so cool to have made yourself. How would you compare this to the functionality offered by jujutsu? I love the histogram, it was the first sort of thing I wanted out of jujutsu that its UI doesn't make very easy. But with jj the filesystem tracking is built in, which is a huge advantage.

benoitg

5 minutes ago

One of the uses cases on their website is the agent deleted my .env file.

jj wouldn’t help with that as it would be gitignored.

cyrusradfar

13 hours ago

I'm not a user, but I looked at the site and it looks like jj snapshots when you run a jj command. UNF snapshots continuously.

If an AI agent rewrites 30 files and you haven't touched jj yet, jj has the before-state but none of the intermediate states. UNF* captured every save as it happened, at filesystem level.

jj is a VCS. UNF is a safety net that sits below your VCS.

  - UNF* works alongside git, jj, or no VCS at all
  
  - No workflow change. You don't adopt a new tool, it just runs in the background
  
  - Works on files outside any repo (configs, scratch dirs, notes) as it doesn't require git.
They're complementary, not competing.

W.r.t. to the histogram, this is my fav feature of the app as well. Session segmentation (still definitely not perfect) creates selectable regions to make it easier, too. The algo is in the CLI as well for the Agent recap (rebuilding context) features.

lexluthor38

11 hours ago

To be fair, jujutsu has a watchman feature which uses inotify to create snapshots on file change as well. Your tool probably has a more tailored UX to handling these inter-commit changes though so there could still provide complementary value there.

mpalmer

9 hours ago

Yes, I was thinking of the watchman integration. And I also really love the DSLs it gives you for selecting change sets and assembling log formats.

teo_zero

42 minutes ago

Excellent idea. Looking forward to trying it. Any way to install it without brew?

mplanck

16 hours ago

Yep, I’ve needed something like this a few times. Even when trying to be careful to commit every step to a feature branch, I’ve still found myself asking for code fixes or updates in a single iteration and kicking myself when I didn’t just commit the damn thing. This will be a nice safety net.

cyrusradfar

14 hours ago

Thank you! That's great to hear.

I spent a bit of time being baffled nothing existed that does this. Then I realized that, until Agents, the velocity of changes wasn't as quick and errors were rare(er)

datawars

12 hours ago

Thank you for pointing out a problem that I had (which I do!), solving with Time Machine and trying to make myself commit more requently - and for providing a solution! Looks very cool, too. If I close the terminal I started --watch in, will the watch continue?

Writing this, I wanted to ask if the desktop app includes the CLI, but there it says it on your website :-) Thanks for thinking ahead so far, but then picking us up here and now so we can easily follow along into an unf* future!

Looking forward to try it.

cyrusradfar

12 hours ago

yes, it worked a lot so once you say watch it watches until you stop it, including through closing terminals, computer power off, etc. It should restart on reboot, but -- test it yourself and tell me if I'm wrong :)

  > unf watch

  # reboot
  > unf list
it should say watching on your directory still, if it stays crashed or something else. ping me at support at v1.co

Just one human, two machines at my home can't replicate all configurations...

imiric

21 minutes ago

This is not something I would ever use. The idea of giving a probabilistic model the permission to run commands with full access to my filesystem, and at the very least not reviewing and approving everything it does, is bonkers to me.

But I'm amused by the people asking for the source code. You trust a tool from a giant corporation with not only your local data, but with all your data on external services as well, yet trusting a single developer with a fraction of this is a concern? (:

rishabhaiover

13 hours ago

haha the NSFW toggle is crazy

cyrusradfar

13 hours ago

Ha, the only feedback I needed :) I spent far too much time on the Unicorn exploding properly...

ifh-hn

11 hours ago

I have used fossil in a similar way, also local, and sqlite based. Admittedly you have to add files to it first but setting it running via cron was simple enough. Though it wasn't be ause I let an AI access all my stuff.

mrorigo

33 minutes ago

Why not just fuckin commit!?

s0a

a day ago

this seems insanely useful and well thought out. kinda surprised something like it doesn’t already exist. def useful in the age of agents

atmanactive

6 hours ago

This would be great as aVSCode(ium) extension.

bananapub

13 hours ago

why did you make it so complicated? magit has a `magit-wip-mode` that just silently creates refs in git intermittently so you can just use the reflog to get things back.

cyrusradfar

13 hours ago

This was designed for any file save.

From what I know (correct me) magit-wip-mode hooks into editor saves. UNF hooks into the filesystem.

magit-wip-mode is great if your only risk is your own edits in Emacs. UNF* exists because that's no longer the only risk; agents are rewriting codebases/docs and they don't use Emacs.

schainks

6 hours ago

So this is Time Machine, but with extra steps? </s>

cyrusradfar

5 hours ago

Op here - grateful you gave it a look but want to clarify TM can’t be used for this use case.

UNF is one install command + unf watch to protect a repo on every file change, takes 30s.

Time Machine snapshots hourly, not on every change, so you can lose real work between snapshots. This may have changed or I missed something but I reviewed that app to see if it was possible.

And while tmutil exists, it wasn’t designed to be invoked mid-workflow by an agent. UNF* captures every write and is built to be part of the recovery loop