atproto user agency toolkit for individuals and groups
8
fork

Configure Feed

Select the types of activity you want to include in your feed.

CLAUDE.md#

This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.

Project Overview#

P2PDS is peer-to-peer replication infrastructure for AT Protocol. It syncs and stores account data (repos, blobs) for configured DIDs, provides them over IPFS/libp2p, and fetches data from other p2pds nodes. It acts on behalf of authenticated atproto users — it has no identity of its own.

Tech Stack#

  • Runtime: Node.js, TypeScript (ES2022, strict, NodeNext modules)
  • Base: Generalized from Cirrus
  • HTTP: Hono
  • Database: better-sqlite3 (sync API)
  • IPFS: Helia (minimal libp2p: TCP + noise + yamux + autoNAT)
  • Identity: AT Protocol DIDs via PLC directory
  • Content addressing: DASL CIDs (CIDv1, SHA-256, dag-cbor/raw, base32lower). All CIDs must be DASL-compliant — enforced by @atcute/cid.
  • Desktop: Tauri v2 (optional, apps/desktop/)

Architecture#

  • Users authenticate with their own atproto accounts (any PDS)
  • Records (org.p2pds.peer, org.p2pds.replication.offer) publish to the user's own repo
  • No node identity — p2pds is infrastructure, like a torrent client
  • Mutual offers between peers auto-generate replication policies
  • Challenge-response protocol verifies peers actually store the data they claim to

Tool Usage Rules#

  • Never use Bash for file operations. Use the dedicated tools: Read (not cat/head/tail/sed), Edit (not sed/awk), Write (not echo/cat heredoc), Glob (not find/ls), Grep (not grep/rg). Bash commands for file operations will be blocked by permission prompts when the user is away.