







Sharing this! Wish I'm not late for #IETF126 Tangled found PDS doesn't fit well for contributions even with upcoming permissioned space spec. So, we are planning to store record-like data outside of PDS, in Knot. This is a post explaining the reasons & upstream spec change we need. #atproto #atdev
tangled-cob.md · by boltless.me
tangled.orgJul 19, 2026 at 8:24 AM
proposal: ingest repo records #282
`sh.tangled.repo` records are one of the last few records that need atprotation (2-way sync between appview/pds). this one is tricky because we want consistency between knot state, appview state and PDS state. the path forward is described below: - migration to did/rkey syntax universally: in several places, we utilize `did/repo-name` as a globally unique identifier for a repository, we should migrate this to `did/rkey`: * for the tangled appview: this means reworking our ACLs, routers and DB to use `did/rkey` or ATURI as a globally unique identifier for a repo * for knots: this means changing paths on disk to be `did/rkey`, allowing git ops to `host:did/rkey` , updating ACLs, and XRPC endpoints * for spindles: this means updating ACLs and XRPC endpoints - once this is done, we can define ingestion logic for all services in the network to pull sh.tangled.repo records * for the tangled appview, this should create/delete/update a repo pointer record * for knots: this should create-or-ignore/delete-or-ignore/update-or-ignore a repo on disk. migration of repos needs to be thought out here. * for spindles: as above - define edge-case behaviors: * when referring to repos by rkey, it is possible for clever users to create duplicate records with the same repo-name, appview routers must handle this ambiguity with a new interstitial page that offers a redirect, knots must return an error upon push/pull on ambiguous git URLs * the `knot` cli can introduce a command `backfill` or `sync` to bring knot state up to sync with the rest of the world (repos, collaborators, pubkeys, ACLs etc.).
Bobbin
Bobbin is an API appview for Tangled records. It serves XRPC endpoints for sh.tangled.*, with it you can get repos, issues, pulls, comments, follows, stars, labels, pipelines, and profiles. It is read-only, there is no auth, since that should all be handled direct-to-PDS and knot respectively.
Permissioned data proposal discussion
This is a forum thread to collect feedback on the permissioned data protocol proposal! To clarify: this is still a proposal. I expect many changes along the way. Suggestions may also be submitted as issues/PRs. I had hoped to have an alpha version of the PDS alongside this proposal, however I didn’t quite get there yet. Hoping to have that in the next couple weeks. The previous thread was here: Early permissioned data proposal draft feedback Changes since then: Responded to a bunch of feed...

[Proposal] AT-URI for cross-service records
tl;dr non-AtprotoPersonalDataServer services might host records, let’s introduce following AT-URI syntax with optional service field to reference those non-PDS hosted data. at://tangled_knot@did:plc:user/... ^^^^^^^^^^^^ ^^^ | path can be any format | (NSID/rkey prefered, but not enforced) service name (default to "atproto_pds" when omited) In this proposal, I’m going to explain why we need cross-service reco...

PDS Directory | ATProto PDS Index
Complete directory of Personal Data Servers in the Atmosphere.
Migrating to the new Tangled knot2 | jola.dev
Tangled is a Github alternative built on atproto. I've previously shown you how to set up the self-hosted repo server, here I go through migrating to knot2.

Just published a repo that's doing nightly builds for several spaces-enabled PDSes. It's mostly for @happyview.dev testing, but I figured some others may get some use out of it as well. Lemme know if there are any other PDS implementation I should add! #atproto
GitHub - happyproto/pds-test
github.comahhhh it works! I have an atproto PDS, knot, spindle, and hold, all driven by a repo hosted on the knot, running on container images created by the spindle and hosted on the hold. The accounts that tie it together all live on the PDS. tangled.org/cove.town/cove.town
cove.town/cove.town
tangled.orgLots of awesome OS for the PDS posts flying around today, but what about a PDS in the OS? Here's a peek at the native Linux rewrite of @aetheros.computer, built on NixOS with PDS backed user accounts and experimental support for spaces. Still WIP, but stay tuned for more info later this year...
@dholms.at thinking about permissiones data. What if: Permissioned data URI was at://<PDS did>/<record type>/<rkey> exactly the same as public data. The PDS would handle the space assignment opaquely and do a 4xx response with some space aturis. Client goes and grabs a space cred and retries
Please add the code source of any new and different implementation of PDS that you know! This is NOT a PDS list for users, this is for PDS administrators and developers. ALWAYS USE PERMALINK FOR TANGLED // Isso NÃO é uma lista de PDS para usuários, é uma coleção de diferentes implementações de PDS para administradores e desenvolvedores.

vlpds.jazco.dev · vlpds
/atproto-crates/crates/atproto-pds at main · ngerakines.me/atproto-crates
cove.town/cove.town
Spirallex/rust-pds
brookie.blog/gleam-pds
PassiveModding/atompds