Monorepo for Tangled forked from tangled.org/core
README.md

Knot 2 #

In Tangled, a "knot" is simply a git server that does its auth layer over the AT Protocol. Essentially:

  1. Atproto users declare their public SSH key for themselves, in their PDS.
  2. A knot admin (defined by atproto DID in the knot config) makes a request to the knot to allow membership to a given atproto user.
  3. Said user can now create/update/delete a git repo on the knot, and do normal git things to that git repo over SSH.
  4. Said user makes a request to the knot to allow more atproto users as collaborators on their specific git repo.
  • It has no database, or should I say, git is the only database, along with a secret-key-file.
  • It aims to be small, fast, and modern - for example: http3/quic support, SHA256 by default, and no need for unix git user, to name a couple of features.

Running a knot #

The operator documentation: the docs:

  • Run a knot - a knot on NixOS or in a container.
  • Self-hosting a knot - more detail: ports, systemd, TLS, members, LFS, backups.
  • Knot configuration - list of keys, defaults, and KNOT_* env vars.
  • Knot - what a knot does and how it talks to the rest of Tangled.
  • If running the old golang knot and want this instead: Migrate with knot-migrate tool - afterwards the knot will serve the same hostname with the same repos, owners, members and collaborators.

Happy knotting!