Skip to main content

general-purpose cli for atproto record operations

Project description

pdsx

general-purpose cli for atproto record operations

installation

uv add pdsx
# or
uvx pdsx --help

quick start

# read anyone's posts (no auth)
uvx pdsx -r did:plc:o53crari67ge7bvbv273lxln ls app.bsky.feed.post -o json | jq -r '.[].text'

# update your bio (with auth)
export ATPROTO_HANDLE=your.handle ATPROTO_PASSWORD=your-password
uvx pdsx edit app.bsky.actor.profile/self description='new bio'

features

  • crud operations for atproto records (list, get, create, update, delete)
  • optional auth: reads with --repo flag don't require authentication
  • shorthand URIs: use app.bsky.feed.post/abc123 when authenticated
  • multiple output formats: compact (default), json, yaml, table
  • unix-style aliases: ls, cat, rm, edit, touch/add
  • jq-friendly json output
  • python 3.10+, type-safe
usage examples

read operations (no auth with --repo)

# list records from any repo
pdsx -r did:plc:... ls app.bsky.feed.post --limit 5 -o json

# read someone's bio
pdsx -r did:plc:o53crari67ge7bvbv273lxln ls app.bsky.actor.profile -o json | jq -r '.[0].description'

write operations (auth required)

# update using shorthand URI
pdsx edit app.bsky.actor.profile/self description='new bio'

# delete using shorthand URI
pdsx rm app.bsky.feed.post/abc123

# create a record
pdsx create app.bsky.feed.like subject='at://...' createdAt='2024-01-01T00:00:00Z'

note: when authenticated, use shorthand URIs (collection/rkey) instead of full AT-URIs (at://did:plc:.../collection/rkey)

output formats

compact (default)

app.bsky.feed.post (3 records)
3m4ryxwq5dt2i: {"created_at":"2025-11-04T07:25:17.061883+00:00","text":"..."}

json

pdsx ls app.bsky.feed.post -o json | jq '.[].text'

table

pdsx ls app.bsky.feed.post -o table
development
git clone https://github.com/zzstoatzz/pdsx
cd pdsx
uv sync
uv run pytest
uv run ty check

license

mit

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pdsx-0.0.1a2.tar.gz (65.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

pdsx-0.0.1a2-py3-none-any.whl (11.9 kB view details)

Uploaded Python 3

File details

Details for the file pdsx-0.0.1a2.tar.gz.

File metadata

  • Download URL: pdsx-0.0.1a2.tar.gz
  • Upload date:
  • Size: 65.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.9.7

File hashes

Hashes for pdsx-0.0.1a2.tar.gz
Algorithm Hash digest
SHA256 66215a729513a86067df3410f0043de566667f944f3194597efdece8dc30e2df
MD5 6b4611659a9ef7f9ffb9a153de84d471
BLAKE2b-256 dbf5a1f08f3847eb058de4aee8c0726c680ac32fc400cea0d4280d0110847a12

See more details on using hashes here.

File details

Details for the file pdsx-0.0.1a2-py3-none-any.whl.

File metadata

  • Download URL: pdsx-0.0.1a2-py3-none-any.whl
  • Upload date:
  • Size: 11.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.9.7

File hashes

Hashes for pdsx-0.0.1a2-py3-none-any.whl
Algorithm Hash digest
SHA256 6e1c5d7c36e99304216e72b377da097993f04a1c09cc3ac5c0f6248560d97f1a
MD5 a705cb447617e4e4e6efb2828a0d626a
BLAKE2b-256 90d045a690bc8f38409c51f58b0a5d2351ef711e629adc479ac6c53c8cde2659

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page