dsc
A Discourse CLI tool written in Rust. Manage multiple Discourse forums from your terminal — track installs, run upgrades over SSH, manage emojis, perform backups, and sync topics and categories as local Markdown.
Most functionality uses the Discourse REST API. dsc update runs remote rebuilds via SSH.
Features
- Track any number of Discourse installs via a single config file.
- Manage categories, topics, settings, and groups across installs.
- Run rebuilds over SSH and optionally post changelog updates.
- Import from text or CSV, or add installs ad-hoc.
- Pull/push individual topics or whole categories as Markdown.
- Upload custom emojis in bulk.
- List, install, and remove themes and plugins.
- Create, list, and restore backups.
Installation
Shell installer — Linux and macOS
|
Downloads a prebuilt binary for your platform and installs it to ~/.cargo/bin (or $CARGO_HOME/bin if set). Supports x86_64 and aarch64 on both Linux and macOS.
This short URL proxies to cargo-dist's real installer on the latest GitHub release — fine for most purposes, but if you'd rather pin to a specific version or audit the script you can fetch it directly from the release assets.
PowerShell installer — Windows
powershell -ExecutionPolicy Bypass -c "irm https://pacharanero.github.io/dsc/install.ps1 | iex"
Downloads the Windows x86_64 binary and installs it to %CARGO_HOME%\bin.
Homebrew — Linux and macOS
The formula name matches the crate name (dsc-rs); the installed binary is still dsc.
Windows installer (MSI)
Download dsc-rs-x86_64-pc-windows-msvc.msi from the latest release and double-click. The installer is unsigned, so Windows will show a SmartScreen warning the first time — click "More info" → "Run anyway".
From crates.io
If you already have a Rust toolchain:
The crate is published as dsc-rs (the dsc name was taken), but the installed binary is still dsc.
Direct download
Prebuilt archives for Linux, macOS, and Windows are attached to every GitHub release. Download, extract, and drop dsc (or dsc.exe) anywhere on your PATH.
From source
Requires a recent Rust toolchain (edition 2024; install via rustup).
Quick start
# Create a config file
# List configured forums
# Pull a topic into Markdown for editing
# Push the edited topic back up
# Update a forum over SSH
Documentation
- Configuration — config file format, search order, field reference
- Commands:
- list — list and filter installs
- open — open a Discourse in the browser
- add — add installs to config
- import — import installs from file or stdin
- update — run OS and Discourse updates over SSH
- search — search topics on a Discourse
- analytics — community-health snapshot (growth, activity, health)
- upload — upload a file and return its short URL
- emoji — upload and list custom emoji
- topic — pull, push, and sync topics as Markdown
- post — edit, delete, and move individual posts
- category — list, pull, push, and copy categories
- palette — list, pull, and push colour palettes
- plugin — list, install, and remove plugins
- theme — list, install, remove, pull, push, and duplicate themes
- group — list, inspect, copy, and bulk-add members
- user — list, inspect, suspend, archive activity, and manage group memberships
- invite — send invites, single or bulk from a file
- pm — send and list private messages
- api-key — manage Discourse API keys
- backup — create, list, and restore backups
- setting — get, set, pull, push, and diff site settings
- tag — list, pull, push, and rename the tag taxonomy (per-topic tagging lives under
dsc topic tag/untag) - config — inspect and validate the dsc config itself
- harden — provision a fresh Ubuntu server (firewall, SSH hardening, Docker, swap, journald, fail2ban)
- Shell completions — bash, zsh, and fish
- Man pages — generate Unix man pages for
dscand every subcommand - Development — building, testing, releasing, project layout
- Contributing — bug vs spec request, code conventions, support stance
- For LLMs and agents — using
dscfrom another AI session, and how to file a useful feature spec
License
MIT. See LICENSE.