# Discordo: A Go-Based Discord TUI Client for the Terminal

> Discordo is an open-source Discord client for the terminal, written in Go and licensed under GPL-3.0. It supports password, QR code, and token-based login, configures via a TOML file, and is available for Linux, macOS, and Windows. The README explicitly warns that it is heavily work in progress and that using it involves the Discord Terms of Service risk for self-bots.

**ayn2op/discordo** — A lightweight, secure, and feature-rich Discord terminal (TUI) client.

- Repository: https://github.com/ayn2op/discordo
- Stars: 5,799 · Forks: 230
- Language: Go
- License: GPL-3.0
- Published: 2026-09-22 · Updated: 2026-09-22 · Language: en
- Canonical page: https://hysenlabs.com/projects/ayn2op-discordo

## A Terminal Client for Discord

Discordo is a terminal UI application that lets you use Discord from the command line. It targets developers and power users who spend most of their time in a terminal and want to read and send Discord messages without switching to a browser or an Electron application.

The README opens with a disclaimer: automated user accounts, also called self-bots, are against Discord's Terms of Service, and the project author is not responsible for any loss caused by using them. This is the central legal constraint for any potential user. Discordo connects as a user account, not as a bot account registered through Discord's developer portal. Discord defines this as a Terms of Service violation, and the risk is account suspension.

The README describes the client as lightweight, secure, and feature-rich, and notes it is heavily work in progress with breaking changes expected. These two statements are in direct tension: feature-rich suggests completeness, but work in progress means the surface is unstable. Taking the README at face value, the current state covers core messaging functionality while remaining subject to changes that may break configurations or workflows.

## Architecture: Go, TUI, and the Discord API

Discordo is written entirely in Go. The go.mod file reveals the dependency structure. The Discord API layer uses arikawa (ayn2op's fork of a Go Discord library) and ningen for Discord state management. The terminal UI layer uses tview (also an ayn2op fork) and gdamore/tcell for terminal rendering.

For message rendering, goldmark handles markdown parsing and chroma provides syntax highlighting for code blocks within messages. Configuration is read from a TOML file via BurntSushi/toml. Authentication tokens are stored using go-keyring, which integrates with the system's native keyring (macOS Keychain, Windows Credential Manager, and Linux keyring services). QR code login uses go-qrcode. Fuzzy search is available via the sahilm/fuzzy package.

The TLS client uses tls-client with custom TLS fingerprinting (bogdanfinn/tls-client), which suggests effort has been put into making the client's network requests look similar to a legitimate Discord client rather than presenting a generic Go HTTP client signature. This is relevant to the ToS risk discussion: the project attempts to reduce the detection surface, though it cannot eliminate the risk.

## Installing Discordo on Linux, macOS, and Windows

Discordo is available through several package managers. On Arch Linux, the AUR provides a package.

```
yay -S discordo-git
```

On Gentoo, it is available on the guru overlay as a live ebuild.

```
emerge net-im/discordo
```

On FreeBSD, it can be installed from the pkg repository or the ports system.

```
pkg install discordo
```

On NixOS, add pkgs.discordo to `environment.systemPackages` or `home.packages`. On Windows, the Scoop package manager is the documented path: add the community bucket first, then install.

```sh
scoop bucket add vvxrtues https://github.com/vvirtues/bucket
scoop install discordo
```

Prebuilt binaries for Windows, macOS, and Linux are also available from nightly.link, which serves the CI build artifacts for the main branch. Building from source requires Go 1.27 or newer, as specified in go.mod.

```bash
git clone https://github.com/ayn2op/discordo
cd discordo
go build .
```

## Logging In: Four Authentication Methods

Discordo supports four login paths. The Password method is the recommended approach: run the discordo executable, open the Password tab in the login UI, enter your email address or E.164-formatted phone number and password, and click Login.

The QR code method shows a QR code in the terminal that you scan with the Discord mobile app, following the same flow that Discord's web login uses for mobile authentication.

The Token method lets you paste a Discord user token directly into the login UI. The token is stored by the application using the system keyring.

For automated or scripted use, the token can be supplied as an environment variable. The README provides this example.

```sh
DISCORDO_TOKEN="OTI2MDU5NTQxNDE2Nzc5ODA2.Yc2KKA.2iZ-5JxgxG-9Ub8GHzBSn-NJjNg" discordo
```

The README advises that the token example shown is not a real credential, but the pattern shows how to inject the authentication token at launch time without storing it in the config file. Using the environment variable path instead of the UI login is useful for running Discordo in a container or a headless environment.

## Configuration File: Keybindings, Theme, and Behavior

Discordo reads its configuration from a TOML file. The path depends on the operating system.

On Unix, the file is at `$XDG_CONFIG_HOME/discordo/config.toml` or `$HOME/.config/discordo/config.toml` if XDG_CONFIG_HOME is not set. On macOS (Darwin), the path is `$HOME/Library/Application Support/discordo/config.toml`. On Windows, the path is `%AppData%/discordo/config.toml`.

The README notes that Discordo uses its built-in default configuration if no config file exists at these paths, but it does not write the default config to disk automatically. If you want to customise settings, you create the file manually. The README links to the default configuration file at `./internal/config/config.toml` in the repository for reference.

The configuration covers three areas: behavior (how the application acts), keybindings (which keys trigger which actions), and theme (visual styling of the TUI). The README does not enumerate the full list of configurable options in the available text; the internal/config/config.toml file in the repository is the authoritative reference.

## The Work-in-Progress Caveats and Real Risks

The README's opening disclaimer is not legal boilerplate. Discord's Terms of Service section on automated accounts covers user accounts that operate through third-party clients, not only bots that automate actions. Using Discordo exposes your Discord account to detection and potential suspension. The README acknowledges this directly, which is more transparent than some unofficial clients that omit the risk.

Beyond the ToS risk, the README warns that breaking changes should be expected. Discordo has no GitHub releases. The main branch receives ongoing commits, and the nightly.link builds track the latest state. There is no stable release branch with a defined feature set. Users who update to a new nightly build may find that configuration keys have changed, keybindings work differently, or features that worked before no longer function.

The feature set is not fully documented in the README. The capabilities described are authentication methods and configuration options. Which Discord features are implemented (voice, video, threads, forum channels, reactions) is not specified in the available text. Teams or developers who depend on specific Discord features should verify support before adopting Discordo for regular use.

## Discordo vs. the Official Discord Client

The official Discord client is an Electron application available as a desktop download and as a web application at discord.com. The fundamental difference from Discordo is the environment: the official client runs in a browser engine and renders a graphical interface, while Discordo renders entirely in the terminal using text-mode UI.

The practical case for choosing Discordo is the environment constraint. On a remote server accessed via SSH, on a minimal Linux installation, or within a workflow where all tools run in the terminal, the official client is not available. Discordo fills that gap. For users who prefer to keep all communication tools accessible from the same terminal environment as their development tools, the TUI model removes a context switch.

The official client is the only client that Discord officially supports and has committed not to terminate for ToS violations. Any unofficial client, including Discordo, operates in a grey zone. The GPL-3.0 licence means the Discordo source code is freely available and modifiable, but the licence does not affect Discord's ability to act on self-bot usage under its own Terms of Service.

## Conclusion

Discordo is the right tool for developers and power users who want to access Discord from a terminal environment and accept both the work-in-progress state and the Discord Terms of Service risk that comes with self-bot usage. It is the wrong choice for anyone who needs a stable, production-ready client, for enterprise environments where ToS violations carry business risk, or for users who rely heavily on Discord features not yet implemented. Before adopting it, read Discord's Terms of Service position on user self-bots, and confirm Discordo supports the specific servers, channels, and message types your workflow depends on, since the README does not enumerate the complete feature set.

## FAQ

### Where is the Discordo configuration file stored?

The README documents three paths by operating system. On Unix, it is `$XDG_CONFIG_HOME/discordo/config.toml` or `$HOME/.config/discordo/config.toml`. On macOS, it is `$HOME/Library/Application Support/discordo/config.toml`. On Windows, it is `%AppData%/discordo/config.toml`. The default configuration is not written to disk automatically; you create the file to override defaults.

### Is Discordo available as a prebuilt binary without building from source?

Yes. The README links to prebuilt binaries at nightly.link for Windows, macOS, and Linux, served from the CI builds. Package manager installs are also available for Arch Linux (AUR), Gentoo (guru overlay), FreeBSD (pkg), NixOS (pkgs.discordo), and Windows (Scoop with the vvxrtues bucket).

### Does Discordo support voice channels?

The README does not mention voice channel support in the available text. It describes the client as feature-rich but does not enumerate which Discord features are implemented. Voice requires audio hardware access and real-time encoding, which is a significantly different implementation from text messaging.

## Sources

- [ayn2op/discordo on GitHub](https://github.com/ayn2op/discordo)
- [Issues](https://github.com/ayn2op/discordo/issues)
- [License: GPL-3.0](https://github.com/ayn2op/discordo/blob/main/LICENSE)
- [README](https://github.com/ayn2op/discordo/blob/main/README.md)

---

Hysen Labs editorial analysis, written from the project's own repository and release notes. Cite the canonical page: https://hysenlabs.com/projects/ayn2op-discordo
