dsc¶
A Discourse CLI written in Rust. Manage multiple Discourse forums from your terminal — track installs, run upgrades over SSH, manage users and groups, sync topics and categories as local Markdown, upload files, search, archive activity, and more.
Created by Marcus Baw and Koloki Ltd, an official Discourse Partner.
Most functionality uses the Discourse REST API; dsc update runs remote rebuilds via SSH.
Install¶
One-liner shell installer:
Drops a prebuilt binary into ~/.cargo/bin (or $CARGO_HOME/bin).
Supports x86_64 and aarch64.
One-liner:
Drops dsc.exe into %CARGO_HOME%\bin.
Prefer a graphical installer? Download the .msi for
x86_64-pc-windows-msvc from the
latest release
and double-click. Unsigned, so SmartScreen will warn the first
time — click "More info" → "Run anyway".
See the project README for direct-download archives and other paths in.
A minimal config¶
dsc reads dsc.toml. The only required fields are name and baseurl:
[[discourse]]
name = "myforum"
baseurl = "https://forum.example.com"
apikey = "<admin api key>" # required for anything that isn't public read
api_username = "system"
ssh_host = "forum.example.com" # only needed for `dsc update`
Full field reference: Configuration.
What dsc does well¶
1. Multi-install operations¶
One config describes every forum you run. Act on all of them at once:
dsc list # tag-filterable overview
dsc update all --parallel # rebuilds over SSH across every forum
dsc setting set --tags production site_name "New Name"
dsc doctor # alias for config check: verify API + SSH reachability
2. Topics and categories as Markdown¶
Edit content in your editor, commit it to git, run it through AI drafting — whatever your workflow demands:
dsc topic pull myforum 1234 ./drafts/
dsc topic push myforum 1234 ./drafts/edited.md
dsc category pull myforum support ./support-category/
3. Composable read/write primitives¶
Every write command reads from stdin or a file, so shell pipelines just work:
git log --since=yesterday --oneline | dsc topic reply myforum 1525
df -h | dsc topic new myforum 42 --title "Disk report $(date -I)"
dsc user activity meta pacharanero --since 7d --format markdown \
| dsc topic reply myjournalforum 1234
Command index¶
Browse by area:
- Content —
topic,post,category,search,upload,tag,emoji - Users & access —
user,group,invite,pm,api-key - Install management —
list,add,import,open,update,config - Site admin —
setting,log,backup,theme,plugin,palette - Meta — Shell completions, Compatibility, Development
Safe by default¶
- Side-effecting operations (
backup restore,setting set,topic push, plugin/theme install/remove, and more) honour a global--dry-run/-nflag. Commands without a complete plan refuse rather than executing. - HTTP 429 responses are retried automatically with the Retry-After header the server returns.
- Read-only commands like
user activitywork without an API key on forums that allow public reads.