···232**Hold DID recovery/migration (did:plc):**
2331. Back up `rotation.key` and DID string (from `did.txt` or plc.directory)
2342. Set `database.did_method: plc` and `database.did: "did:plc:..."` in config
235-3. Provide `rotation_key_path` — signing key auto-generates if missing
2364. On boot: `LoadOrCreateDID()` adopts the DID, `EnsurePLCCurrent()` auto-updates PLC directory if keys/URL changed
2375. Without rotation key: hold boots but logs warning about PLC mismatch
238
···232**Hold DID recovery/migration (did:plc):**
2331. Back up `rotation.key` and DID string (from `did.txt` or plc.directory)
2342. Set `database.did_method: plc` and `database.did: "did:plc:..."` in config
235+3. Provide `rotation_key` (multibase K-256 private key) — signing key auto-generates if missing
2364. On boot: `LoadOrCreateDID()` adopts the DID, `EnsurePLCCurrent()` auto-updates PLC directory if keys/URL changed
2375. Without rotation key: hold boots but logs warning about PLC mismatch
238
···59 allow_all_crew: false
60 # URL to fetch avatar image from during bootstrap.
61 profile_avatar_url: https://atcr.io/web-app-manifest-192x192.png
000062 # Post to Bluesky when users push images. Synced to captain record on startup.
63 enable_bluesky_posts: false
64 # Deployment region, auto-detected from cloud metadata or S3 config.
···75 did: ""
76 # PLC directory URL. Only used when did_method is 'plc'. Default: https://plc.directory
77 plc_directory_url: https://plc.directory
78- # Rotation key path for did:plc. Controls DID identity (separate from signing key). Defaults to {database.path}/rotation.key.
79- rotation_key_path: ""
80 # libSQL sync URL (libsql://...). Works with Turso cloud, Bunny DB, or self-hosted libsql-server. Leave empty for local-only SQLite.
81 libsql_sync_url: ""
82 # Auth token for libSQL sync. Required if libsql_sync_url is set.
···59 allow_all_crew: false
60 # URL to fetch avatar image from during bootstrap.
61 profile_avatar_url: https://atcr.io/web-app-manifest-192x192.png
62+ # Bluesky profile display name. Synced on every startup.
63+ profile_display_name: Cargo Hold
64+ # Bluesky profile description. Synced on every startup.
65+ profile_description: ahoy from the cargo hold
66 # Post to Bluesky when users push images. Synced to captain record on startup.
67 enable_bluesky_posts: false
68 # Deployment region, auto-detected from cloud metadata or S3 config.
···79 did: ""
80 # PLC directory URL. Only used when did_method is 'plc'. Default: https://plc.directory
81 plc_directory_url: https://plc.directory
82+ # Rotation key for did:plc in multibase format (starting with 'z'). Generate with: goat key generate. Supports K-256 and P-256 curves. Controls DID identity (separate from signing key).
83+ rotation_key: ""
84 # libSQL sync URL (libsql://...). Works with Turso cloud, Bunny DB, or self-hosted libsql-server. Leave empty for local-only SQLite.
85 libsql_sync_url: ""
86 # Auth token for libSQL sync. Required if libsql_sync_url is set.