The self-updating fork
Tailcat came out a few weeks ago and made quite the splash. This is so far up my alley it’s hard to describe, I’d even previously built tunnelworm, which is the same basic idea as tailcat but built on top of magic wormhole, so I was excited to use this cleaner and more featureful version without having to maintain anything myself. There was just one problem: for some reason tailcat’s CI pipeline is not configured to build macOS versions of the binary, instead asking users to install it via homebrew. Homebrew is great, but I prefer simpler solutions when possible, and since tailcat is a Go program, cross-platform compilation is straightforward.
The simple solution would’ve been to just build my own copy of tailcat for mac, store the binary somewhere, and call it a day. Thing is, Tailscale is updating tailcat pretty furiously, and I’d like to be able to keep up to date with their latest work. After a little thinking I realized it should be fairly easy to fork the repo and set up my own build pipeline on github that would build for all platforms. It could even run on a schedule and rebuild whenever Tailscale releases a new version of tailcat!
A few agent loops later, and I had a copy of the repo that does just that: https://github.com/nikvdp/tailcat/releases. Very satisfying.
It made me realize something though: this pattern will work for anything! Maintaining your own custom fork of open source software in 2026 is very appealing because a) agents can customize your fork to have features you care about but aren’t worth contributing back upstream and b) there’s zero maintenance burden if you hook your agent up into your CI pipeline. Github gives you all the pieces. Essentially all you need to do is:
-
Set up a github workflow to run on a schedule
-
Have it pull in changes from upstream
-
If there are conflicts, either have it notify you (ntfy.sh is great for this) or if you’re feeling saucy have an agent fix the conflicts for you
-
Have it build a release and attach the built artifacts to it
Et voila! You now have your own infinitely updating / customized copy of your software that you can download and use from any machine. If you want extra convenience, use eget, then on any machine you want to install your new custom fork on you can just do eg eget nikvdp/tailcat and you’ll instantly have a working local copy.