Skip to content

First login

After the Quick start, the PDS is live but unused. This page verifies that the deployment is reachable, the handle resolves correctly, and the account can sign in.

Handle resolution is the step that connects a human-readable name to a DID. Test it directly:

Terminal window
pnpm pds status

The status command prints the handle, the DID, the resolved DID document, the repository revision, and the blob count. A green check next to Handle resolves confirms that the network can find the account from the handle.

For a manual check, open the resolver endpoint:

Terminal window
https://pds.example.com/xrpc/com.atproto.identity.resolveHandle?handle=alice.example.com

The response is {"did": "did:..."}.

If resolution fails, see Troubleshoot common errors.

The Bluesky mobile and web apps support custom PDS hosts via the Hosting provider setting.

  1. Open the Bluesky app (mobile or bsky.app).
  2. Choose Sign in.
  3. Tap or click Hosting provider and choose Custom.
  4. Enter the PDS hostname (for example pds.example.com).
  5. Enter the handle and the account password set during the wizard.

Once signed in, the app fetches the repository, refreshes the feed, and the account is live.

Optional: register a passkey for OAuth sign-ins

Section titled “Optional: register a passkey for OAuth sign-ins”

Passkeys in Cirrus are for the OAuth authorization flow. They are a secure way to login to other Atmosphere apps such as Leaflet or Tangled, without sharing your account password. They do not replace the password for the Bluesky app:

Terminal window
pnpm pds passkey add

The command prints a URL (and QR code) that opens a registration page valid for ten minutes. Follow Set up passkey login for the full flow.

The PDS now serves a live Bluesky account. From here:

  • Read How Cirrus is built to understand what the deployment is doing.
  • Read Monitor your PDS to keep an eye on it.
  • If running multiple accounts (one per Cloudflare Worker), repeat the install for each.