The client has multi-account support through named profiles when you authenticate so you can perform all of the actions below using a different account each time by simply using a flag and the profile name.
Every command also has support for `--json` so can be piped to `jq` or passed to other scripts for more complex workflows.
It uses the AT Protocol API and covers the most common functionality from the app and a bit more.
* View your timeline
* Make new posts, including new posts with attached images or videos
* Reply to and quote posts
* Like, repost, bookmark, and search for posts
* Follow, unfollow, block, and unblock other users
* DM other users
* Connect to the Jetstream to receive a real-time feed of posts with support for regex filtering using `--pattern` e.g. `bsky stream --pattern="typescript|rust"`. By default it uses the `gi` modifiers.
Apart from profile functionality above shell completions are included for `bash`, `zsh`, and `fish`.
The client is distributed as a standalone binary that works on macOS, Linux, and Windows so no Node runtime needed.
Install:
---------------------------------------------
; npm install -g @harveyrandall/bsky-cli
; # or
; brew install harveyrandall/tools/bsky-cli
---------------------------------------------
GitHub: <https://github.com/harveyrandall/bsky-cli>
It's built with TypeScript, Commander.js, and the AT Protocol SDK under the hood. Has 134+ tests, colocated with their implementations. They can be run separately and also run in CI/CD using GitHub Actions. GitHub Actions also publishes new versions to NPM and updates the Homebrew formula.
Happy to hear thoughts on the CLI design — and if there's a command you wish existed, I'd like to know. Please check it out, install it and play around with it. Report any bugs you find and create issues for them, any and all feedback is appreciated! I hope you find it as useful as I do.