update
May 9, 2026
By Teun
Concord brings a full Discord client to the terminal
Concord is a terminal user interface client for Discord that supports browsing servers, reading and sending messages, reactions, polls, file uploads, and image previews. The project can be installed with Homebrew, Cargo, Nix, or a shell installer, and it stores Discord tokens in plain text under ~/.concord/credential.
Concord is a terminal user interface client for Discord that aims to provide a full Discord experience inside a terminal. The project was posted as a Show HN item by its author and is available as an open source Rust application under the GPL-3.0-only license.
The client supports Discord login through an existing token, email and password, or QR code scanning from the mobile app. According to the project notes, email and QR logins can trigger Discord CAPTCHA checks, so the author strongly recommends token authentication instead. Tokens are saved in plain text at ~/.concord/credential.
Installation options cover several common workflows. Users can install it with Homebrew via brew install chojs23/tap/concord, with Cargo using cargo install concord, or directly from the Git repository with cargo install --git https://github.com/chojs23/concord. The project also provides Nix-based install and development options, plus a shell installer for the latest release.
Concord is built around a four-pane Discord-like layout: guilds, channels, messages, and members. Navigation is designed for keyboard use, with vim-style movement, pane switching, action menus, and shortcuts for message editing, deletion, replies, and other common tasks. Mouse support is also available for selecting rows, opening items, and scrolling.
On the feature side, Concord covers most of the core Discord workflow. It can browse servers with guild folder grouping, navigate text channels, threads, and forum channels, show pinned messages, track unread counts and mentions, and display full message history with pagination. It also supports rich content such as embeds, attachments, stickers, mentions, custom emoji, poll votes, and reaction browsing.
The client can send, edit, and delete messages, reply to specific messages, and view or add emoji reactions. It also supports mention autocomplete while composing messages, plus drag-and-paste style file uploads by copying files from a file manager into the composer. Pending uploads are shown before sending, and users can remove the last attachment with Ctrl+Backspace.
Concord also includes inline image previews and a full-screen image viewer. Image rendering uses ratatui-image and can fall back across several terminal graphics protocols, including Kitty Graphics Protocol, iTerm2 inline images, Sixel, and halfblock rendering when no graphics protocol is available. Users can turn image viewing on or off in the config file, and preview quality can be tuned for attachments, embeds, and the image viewer.
The project tries to keep resource usage low for terminal use. The author says typical memory use is about 20-40 MB, though image-heavy screens can temporarily rise higher while decoding media. Concord limits preview sizes, caps attachment downloads, restricts concurrency, and uses small caches to keep memory and network use bounded.
Notifications are included as well. According to the project notes, Concord shows desktop notifications for Discord messages that pass the user’s Discord notification settings, while suppressing alerts for the channel already in view. On macOS, it also plays one explicit notification sound so a focused terminal window does not swallow audible alerts.
Concord’s configuration lives in ~/.concord/config.toml, where users can toggle avatars, custom emoji, inline image previews, desktop notifications, and quality settings for previews. The options can also be changed from the in-app menu, which writes them back to the config file.
The author says the client is still unofficial and warns that using unofficial clients, automated user accounts, or self-bots can violate Discord’s terms of service. They also note that one DM-related path previously triggered a temporary account block and has since been removed. Issues, pull requests, and feedback are open on the project’s GitHub repository.