dsc-rs 0.10.0

Discourse CLI tool for managing multiple Discourse forums: track installs, run upgrades over SSH, manage emojis, sync topics and categories as Markdown, and more.
Documentation

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

curl -LsSf https://pacharanero.github.io/dsc/install.sh | sh

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

brew tap pacharanero/tap
brew install dsc-rs

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:

cargo install dsc-rs

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).

git clone https://github.com/pacharanero/dsc.git
cd dsc
cargo install --path .

Quick start

# Create a config file
cat > dsc.toml <<'EOF'
[[discourse]]
name = "myforum"
baseurl = "https://forum.example.com"
apikey = "<api key>"
api_username = "system"
ssh_host = "forum.example.com"
changelog_topic_id = 123
EOF

# List configured forums
dsc list

# Pull a topic into Markdown for editing
dsc topic pull myforum 42

# Push the edited topic back up
dsc topic push myforum 42 ./topic-title.md

# Update a forum over SSH
dsc update myforum

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 and set site settings
    • tag — list tags and apply/remove them on topics
    • config — inspect and validate the dsc config itself
    • harden — provision a fresh Ubuntu server (WIP, stage 1)
  • Shell completions — bash, zsh, and fish
  • Development — building, testing, releasing, project layout

License

MIT. See LICENSE.