An easy-to-host PDS on the ATProtocol, MacOS. Grandma-approved.
1[workspace]
2members = [
3 "crates/relay",
4 "crates/repo-engine",
5 "crates/crypto",
6 "crates/common",
7 "apps/identity-wallet/src-tauri",
8]
9resolver = "2"
10
11[workspace.package]
12version = "0.1.0"
13edition = "2021"
14publish = false
15
16# Declare shared dependency versions here.
17# Individual crates opt in with `{ workspace = true }`.
18[workspace.dependencies]
19# Async runtime
20tokio = { version = "1", features = ["full"] }
21
22# Web framework (relay)
23axum = "0.7"
24
25# HTTP client (relay)
26reqwest = { version = "0.12", features = ["json"] }
27
28# Database
29sqlx = { version = "0.8", features = ["runtime-tokio", "sqlite"] }
30
31# Serialization
32serde = { version = "1", features = ["derive"] }
33serde_json = "1"
34toml = "0.8"
35
36# CLI argument parsing (relay)
37clap = { version = "4", features = ["derive", "env"] }
38
39# Error handling
40anyhow = "1"
41thiserror = "2"
42
43# Observability
44tracing = "0.1"
45tracing-subscriber = { version = "0.3", features = ["env-filter"] }
46tracing-opentelemetry = "0.29"
47opentelemetry = { version = "0.28", features = ["trace"] }
48opentelemetry-otlp = { version = "0.28", features = ["trace", "grpc-tonic"] }
49opentelemetry_sdk = { version = "0.28", features = ["rt-tokio", "trace"] }
50
51# HTTP middleware
52tower-http = { version = "0.5", features = ["trace", "cors"] }
53tower = { version = "0.5", features = ["util"] }
54
55# ATProto (repo-engine)
56# atrium-api = "0.22"
57# atrium-repo = "0.1"
58
59# Crypto (crypto)
60# rsky-crypto = "0.2"
61p256 = { version = "0.13", features = ["ecdsa"] }
62aes-gcm = "0.10"
63multibase = "0.9"
64rand_core = { version = "0.6", features = ["getrandom"] }
65base64 = "0.21"
66ciborium = "0.2"
67data-encoding = "2"
68sha2 = "0.10"
69zeroize = "1"
70subtle = "2"
71uuid = { version = "1", features = ["v4"] }
72
73# ATProto handle resolution — DNS TXT fallback (relay)
74hickory-resolver = { version = "0.25", features = ["tokio", "system-config"] }
75
76# Testing
77tempfile = "3"
78
79# Intra-workspace
80common = { path = "crates/common" }
81crypto = { path = "crates/crypto" }
82repo-engine = { path = "crates/repo-engine" }