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
set your credentials:
export ATPROTO_HANDLE=your.handle
export ATPROTO_PASSWORD=your-password
list posts (compact format by default):
pdsx ls app.bsky.feed.post --limit 10
json output for jq:
pdsx ls app.bsky.feed.post -o json | jq '.[].text'
table view:
pdsx ls app.bsky.feed.post -o table
features
- crud operations for atproto records (list, get, create, update, delete)
- multiple output formats: compact (default), json, yaml, table
- unix-style command aliases:
ls,cat,rm,edit,touch/add - clean json output for jq/pipe interoperability
- tty-aware formatting
- type-safe with strict typing
- python 3.10+ support
usage
list records
# using full command
pdsx list app.bsky.feed.post --limit 5
# using alias
pdsx ls app.bsky.feed.post --limit 5 -o json
get a record
# using full command
pdsx get at://did:plc:example/app.bsky.feed.post/123
# using alias
pdsx cat at://did:plc:example/app.bsky.feed.post/123
create a record
pdsx create app.bsky.feed.like subject='at://...' createdAt='2024-01-01T00:00:00Z'
# using alias
pdsx touch app.bsky.feed.like subject='at://...' createdAt='2024-01-01T00:00:00Z'
update a record
pdsx update at://did:plc:example/app.bsky.feed.post/123 text='updated text'
# using alias
pdsx edit at://did:plc:example/app.bsky.feed.post/123 text='updated text'
delete a record
pdsx delete at://did:plc:example/app.bsky.feed.post/123
# using alias
pdsx rm at://did:plc:example/app.bsky.feed.post/123
output formats
compact (default)
one line per record with json:
app.bsky.feed.post (3 records)
3m4ryxwq5dt2i: {"created_at":"2025-11-04T07:25:17.061883+00:00","text":"..."}
3m4ryxvw4l32z: {"created_at":"2025-11-04T07:25:16.201083+00:00","text":"..."}
json
clean json for piping to jq:
pdsx ls app.bsky.feed.post -o json | jq '.[].text'
table
pretty table for terminal viewing:
pdsx ls app.bsky.feed.post -o table
examples
click to see real-world examples
read anyone's bio
uvx pdsx --repo did:plc:o53crari67ge7bvbv273lxln list app.bsky.actor.profile -o json | \
jq -r '.[0].description'
update your bio
export ATPROTO_HANDLE=your.handle ATPROTO_PASSWORD=your-password
uvx pdsx edit app.bsky.actor.profile/self description='new bio'
read anyone's posts
uvx pdsx -r did:plc:o53crari67ge7bvbv273lxln list app.bsky.feed.post --limit 5 -o json | \
jq -r '.[] | .text'
atproto gives you full read access to anyone's public data. auth only required for writes.
development
# clone repo
git clone https://github.com/zzstoatzz/pdsx
cd pdsx
# install with dev dependencies
uv sync
# run tests
uv run pytest
# run type checker
uv run ty check
# run pre-commit hooks
uv run prek run --all-files
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
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
File details
Details for the file pdsx-0.0.1a1.tar.gz.
File metadata
- Download URL: pdsx-0.0.1a1.tar.gz
- Upload date:
- Size: 66.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: uv/0.9.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
5d82655302ec7b5576f594f16ff298beaa238e9eea99036a44a122fa08186bb3
|
|
| MD5 |
b230ab04b1404d3d555eb0f6c1e79583
|
|
| BLAKE2b-256 |
30ebe6d231d4a00e2078c3075972187f91bda7eab96d20cecc4973691875a90e
|
File details
Details for the file pdsx-0.0.1a1-py3-none-any.whl.
File metadata
- Download URL: pdsx-0.0.1a1-py3-none-any.whl
- Upload date:
- Size: 12.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: uv/0.9.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
0ee2020ba9d51c37971cf03dfd9931ed8e0796dd171bab8e0c7aefd786f0cc04
|
|
| MD5 |
8124d98be10e6e975dcd6beffe8030c5
|
|
| BLAKE2b-256 |
6c0d9151a07f73200a5d93783f697f46e9910d0bfa8eec8ec1515fbe86845023
|