You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
5 phases, 9 plans, 11/11 requirements satisfied.
Archived roadmap, requirements, and audit to milestones/.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
**Delivered:** Comprehensive security hardening: signed metadata envelopes, key permission enforcement, PIN-protected handoffs, structured error handling, and migration from homeserver to direct PKARR Mainline DHT transport with full metadata encryption.
33
+
34
+
**Key accomplishments:**
35
+
- Ed25519-signed burn and recipient fields with tamper detection (clean break from v1.0)
36
+
- Key file permission enforcement (0600) at load and write time
37
+
- PIN-protected handoffs with Argon2id+HKDF-SHA256 key derivation
38
+
- Structured error handling (CclinkError::RecordNotFound, dead variant cleanup)
39
+
- Replaced homeserver transport with PKARR Mainline DHT (no accounts, no tokens, no signup)
40
+
- Encrypted all sensitive metadata (hostname, project path, session ID) into blob -- zero cleartext metadata on DHT
Copy file name to clipboardExpand all lines: .planning/PROJECT.md
+64-75Lines changed: 64 additions & 75 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -2,7 +2,7 @@
2
2
3
3
## What This Is
4
4
5
-
A single Rust CLI binary (`cclink`) that publishes cryptographically signed, encrypted Claude Code session handoff links via the Pubky protocol. Run `cclink` on one machine to publish your session, `cclink pickup` on another to resume it — no central relay, no accounts, your PKARR key is your identity.
5
+
A single Rust CLI binary (`cclink`) that publishes cryptographically signed, encrypted Claude Code session handoff records directly to the PKARR Mainline DHT. Run `cclink` on one machine to publish your session, `cclink pickup` on another to resume it -- no central relay, no accounts, no signup tokens. Your PKARR key is your identity.
6
6
7
7
## Core Value
8
8
@@ -12,102 +12,91 @@ Effortless, secure session handoff between devices: `cclink` on one machine, `cc
- Claude Code stores sessions in `~/.claude/projects/` as directories with JSONL progress records
78
66
-`claude --resume <sessionID>` resumes a session from any device with filesystem access
79
-
- Pubky is a decentralized protocol using PKARR (Public Key Addressable Resource Records) for identity
67
+
- Records published directly to PKARR Mainline DHT as DNS TXT records inside Ed25519-signed packets
68
+
- One handoff per identity (DHT stores one SignedPacket per public key)
80
69
- Ed25519 keys birationally map to X25519, enabling age encryption with the same keypair
81
-
- The pickup device still needs filesystem access to the session data (SSH, Tailscale, etc.) — cclink only transfers the session ID reference, not session content
82
-
- Handoff records are published to `/pub/cclink/<token>` on the homeserver
83
-
- A `latest` pointer tracks the most recent handoff
84
-
- Key storage at `~/.pubky/secret_key` with 0600 permissions (reuses Pubky ecosystem path)
70
+
- All sensitive metadata (hostname, project path, session ID) encrypted into blob -- DHT nodes see only ciphertext
71
+
- Key storage at `~/.pubky/secret_key` with 0600 permissions
72
+
- The pickup device still needs filesystem access to session data (SSH, Tailscale, etc.) -- cclink only transfers the session ID reference
85
73
86
74
## Constraints
87
75
88
-
-**Language**: Rust — single binary distribution, pubky crate available
0 commit comments