Skip to main content
reading public records with -r doesn’t require authentication, but any write operations (create, update, delete) need credentials.

install pdsx

# one-time use
uvx pdsx --help

# add to project
uv add pdsx

obtain an app password

go to Bluesky settings → App Passwords and create a new one. format: xxxx-xxxx-xxxx-xxxx use the app password, not your account password.

configure credentials

environment variables

export ATPROTO_HANDLE=your.handle.bsky.social
export ATPROTO_PASSWORD=xxxx-xxxx-xxxx-xxxx
or create a .env file (add to .gitignore):
ATPROTO_HANDLE=your.handle.bsky.social
ATPROTO_PASSWORD=xxxx-xxxx-xxxx-xxxx

command-line flags

pdsx --handle your.handle --password xxxx-xxxx-xxxx-xxxx create ...

verify authentication

pdsx ls app.bsky.actor.profile

use a test account

when learning pdsx, use a test Bluesky account to avoid modifying your main profile.

what’s next