Going all in on tangled
table of contents
What is Tangled? #
Tangled is a git forge (like GitHub, GitLab or Codeberg) built on top of the AT Protocol (atproto), which lets you fully own your data. As I see it, it consists of three main components: the knots, the spindles and the appview.
Why did I migrate to Tangled? #
The problem #
Recently I’ve been reflecting on my use of GitHub as my code hosting platform. It has several flaws: frequent outages lately, it’s closed source, and you don’t truly own your data.
So I started looking at alternatives. My first thought was Forgejo, a lightweight, open-source git forge maintained under the Codeberg umbrella (Codeberg itself runs on it). It seemed perfect, with one simple flaw: discoverability.
Discoverability isn’t the biggest factor, but it’s not something you want to lose if you have alternatives. What do I mean by losing discoverability? Well, a Forgejo server rarely shows up in Google search results. GitHub is a single, well-indexed platform, but your Forgejo instance tends not to be. A repo uploaded to GitHub will almost certainly rank a lot higher in search results than the same repo on a small Forgejo instance.
Another flaw of Forgejo is that each instance acts independently, which makes collaboration difficult. This comes down to accounts: every Forgejo instance maintains its own list of accounts, and they don’t carry over to other instances. If I self-host Forgejo and upload my project to it, someone will have to create an entire account just to star it or contribute to it. Who wants to do that?
How Tangled solves it #
While I was searching, I came across Tangled. It’s unique, and it solves almost every problem I had with self-hosted solutions.
Discoverability? Thanks to Tangled’s unified appview at tangled.org, your repository stays hosted on your own machine, yet it’s viewable, interactive and usable from a standardized website, alongside other people’s projects on their own self-hosted infrastructure.
Accounts? Because Tangled is built on atproto, you can use the same account as on all your other atproto services, including Bluesky! No separate account per instance.
Data ownership? Tangled is a unified code hosting platform, but you also have the option to own your own data! Through atproto’s self-hostable PDS servers (which handle your atproto account and store your account data, like Bluesky posts and Tangled issues) as well as Tangled’s self-hostable knots and spindles (which we’ll cover below), you can keep essentially all of your data on your own machine, while still accessing it through a unified dashboard (the Tangled appview).
Okay, but what are the three components? #
Tangled is made up of three main components: the appview, the knots and the spindles. The knots and spindles are the ones that actually store and process data, and both can be self-hosted. The appview is the unified website that brings all hosted knots and spindles together and displays them seamlessly. (The PDS isn’t part of Tangled itself, but it’s the piece of atproto that holds your account and records.)
The knots #
The knots are the actual servers that store your git repos. You can use Tangled’s own knot, or you can self-host one and connect it to your account. This is where you push your commits, and where others clone your repository from.
The spindles #
The spindles are self-hostable CI runners that you connect to your knots to run automated CI through a Nix-powered system. Like knots, you can either self-host one or use one that Tangled provides. They can handle things like automated nightly builds, format, lint and test checks, or any other CI task you configure in your repo. If you have any experience with CI such as github actions i think you understand what i mean.
The appview #
The appview is what actually brings all the self-hosted knots, PDS servers and spindles together into one frontend, where anyone can interact with repos from anyone else’s instances. It’s provided and hosted by Tangled themselves, and it’s the website and dashboard you see when visiting tangled.org.
My thoughts #
Tangled has been incredible. I don’t really know what more to say, but it’s absolutely amazing, and it works just as flawlessly as GitHub for contributing, creating, sharing and pushing. Unlike GitHub, though, Tangled is completely open source, lets you store your data yourself, and builds on the amazing atproto protocol.
So far I haven’t found a feature I need in my daily GitHub workflow that Tangled doesn’t provide. I’ve only used it for a couple of days, but it has been a blast to work with, and I have to say that every contributor has done an amazing job making this project the great project it is today.