Overview | Compatibility | Installation | Quick Start | Usage | FAQ | Development

A cross-platform command-line interface for installing, updating, and managing BetterDiscord.
This repository contains the source code for the BetterDiscord CLI. It is a native Go command-line tool for installing, removing, and maintaining BetterDiscord across supported Discord desktop installations.
- Easy installation and uninstallation of BetterDiscord
- Support for multiple Discord channels (Stable, PTB, Canary)
- Discover Discord installs and suggested paths
- Manage plugins and themes (list, install, update, remove)
- Browse and search the BetterDiscord store
- Cross-platform support (Windows, macOS, Linux)
- Available via brew, npm, and winget for easy distribution
- Fast and lightweight Go binary
| Platform | Minimum Version | Support Status | Notes |
|---|---|---|---|
| Windows | Windows 10+ | ✅ | x64, ARM64, and x86 builds are available. |
| macOS | macOS 11+ (Big Sur) | ✅ | x64 and ARM64 builds are available. |
| Linux | Ubuntu 20.04+ and Debian 11+, openSUSE 16.2+, Fedora Linux 32+ | ✅ | See Linux install support notes below. |
Linux install support:
- Native Discord install: ✅ Supported
- Flatpak Discord install: ✅ Supported
- Snap Discord install: ❌ Unsupported due to upstream Snap packaging/runtime changes
brew install betterdiscord/tap/bdclinpm install -g @betterdiscord/cligo install github.com/betterdiscord/cli@latestwinget install betterdiscord.cliDownload the latest release for your platform from the releases page.
# Install BetterDiscord to Discord Stable
bdcli install --channel stable
# Check installation details
bdcli info
# Update BetterDiscord
bdcli update
# Uninstall from a specific channel
bdcli uninstall --channel stableUse bdcli [command] --help for command-specific flags and examples.
| Command | Purpose | Example |
|---|---|---|
install |
Install BetterDiscord to Discord | bdcli install --channel stable |
uninstall |
Remove BetterDiscord from Discord | bdcli uninstall --channel stable |
update |
Update BetterDiscord to latest | bdcli update |
info |
Show installation state and metadata | bdcli info |
discover |
Discover installs, paths, and addons | bdcli discover installs |
plugins |
Manage BetterDiscord plugins | bdcli plugins list |
themes |
Manage BetterDiscord themes | bdcli themes list |
store |
Search and inspect store entries | bdcli store search <query> |
completion |
Generate shell completion scripts | bdcli completion zsh |
version |
Print CLI version | bdcli version |
Common Workflows
# Install / update / inspect
bdcli install --channel stable
bdcli update
bdcli info
# Uninstall from one channel
bdcli uninstall --channel stable
# Discover installed targets
bdcli discover installs
# Basic addon workflow
bdcli plugins list
bdcli themes listAdvanced Workflows
# Install or uninstall by explicit path
bdcli install --path /path/to/Discord
bdcli uninstall --path /path/to/Discord
# Global removal modes
bdcli uninstall --all
bdcli uninstall --full
# Check-only updates
bdcli update --check
bdcli plugins update <name|id> --check
bdcli themes update <name|id> --check
# Store browsing
bdcli store search <query>
bdcli store plugins show <id|name>
bdcli store themes show <id|name>
# Shell + automation
bdcli completion zsh
bdcli --silent install --channel stable
BDCLI_SILENT=1 bdcli updateShow Full Root Help Output
A cross-platform CLI for installing, updating, and managing BetterDiscord.
Usage:
bdcli [flags]
bdcli [command]
Available Commands:
completion Generate shell completions
discover Discover Discord installations and related data
help Help about any command
info Displays information about BetterDiscord installation
install Installs BetterDiscord to your Discord
plugins Manage BetterDiscord plugins
store Browse and search the BetterDiscord store
themes Manage BetterDiscord themes
uninstall Uninstalls BetterDiscord from your Discord
update Update BetterDiscord to the latest version
version Print the version number
Flags:
--silent Suppress non-error output
-h, --help help for bdcli
Use "bdcli [command] --help" for more information about a command.
Yes. Flatpak Discord installs are supported.
Discord Snap packaging/runtime changes prevent the CLI from supporting Snap installs.
- Grant the Flatpak app access to the BetterDiscord config directory:
flatpak --user override com.discordapp.Discord --filesystem=xdg-config/BetterDiscord:rw- Symlink the BetterDiscord folder into the Flatpak app config:
ln -s "${XDG_CONFIG_HOME:-$HOME/.config}/BetterDiscord" "$HOME/.var/app/com.discordapp.Discord/config/BetterDiscord"Replace com.discordapp.Discord with your Discord Flatpak app ID if it differs on your system.
- Go 1.26 or higher
- Task (optional)
- GoReleaser (optional, release builds)
# Install dependencies
task setup
# Run locally
task run -- install stable
# Test + build
task test
task buildClone the repository and install dependencies:
git clone https://github.com/BetterDiscord/cli.git
cd cli
task setup # Or: go mod downloadAdditional Tasks And Release Flow
# Task catalog
task --list-all
# Useful checks
task coverage
task coverage:html
task check
# Multi-platform builds
task build:all
# Release helpers
task release:snapshot
task releaseRelease outline:
- Create and push a new tag.
- GitHub Actions starts to build and draft all releases.
- Build binaries for Windows, macOS, and Linux.
- Publish to package managers (Homebrew, npm, winget, etc.).
- Generate release notes on GitHub.
- Verify releases.
- Verify pull request to
wingetis valid - Verify successful commit to homebrew tap
- Verify successful publish to npm
- Verify pull request to
- Manually cleanup and finish any steps missed by automation
Show Project Structure
.
├── cmd/ # Cobra commands
│ ├── install.go # Install command
│ ├── update.go # Update command
│ ├── info.go # Info command
│ ├── discover.go # Discover command
│ ├── plugins.go # Plugins commands
│ ├── themes.go # Themes commands
│ ├── store.go # Store commands
│ ├── uninstall.go # Uninstall command
│ ├── version.go # Version command
│ └── root.go # Root command
├── internal/ # Internal packages
│ ├── betterdiscord/ # BetterDiscord installation logic
│ ├── discord/ # Discord path resolution and injection
│ ├── models/ # Data models
│ └── utils/ # Utility functions
├── main.go # Entry point
├── Taskfile.yml # Task automation
└── .goreleaser.yaml # Release configurationContributions are welcome! Please feel free to submit a Pull Request.
- Fork the repository
- Create your feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'feat: add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
For information on contributing to this project, please see CONTRIBUTING.md.
Made with ❤️ by the BetterDiscord Team