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
--repoflag don't require authentication - shorthand URIs: use
app.bsky.feed.post/abc123when 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
Release history Release notifications | RSS feed
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)
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
pdsx-0.0.1a2-py3-none-any.whl
(11.9 kB
view details)
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
66215a729513a86067df3410f0043de566667f944f3194597efdece8dc30e2df
|
|
| MD5 |
6b4611659a9ef7f9ffb9a153de84d471
|
|
| BLAKE2b-256 |
dbf5a1f08f3847eb058de4aee8c0726c680ac32fc400cea0d4280d0110847a12
|
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
6e1c5d7c36e99304216e72b377da097993f04a1c09cc3ac5c0f6248560d97f1a
|
|
| MD5 |
a705cb447617e4e4e6efb2828a0d626a
|
|
| BLAKE2b-256 |
90d045a690bc8f38409c51f58b0a5d2351ef711e629adc479ac6c53c8cde2659
|