endcord: The Discord Terminal Client
endcord: The Revolutionary Discord Terminal Client
Introduction
Discord is eating your RAM. Your CPU is screaming. Your workflow is broken.
Modern developers live in their terminals. They code in Vim, manage servers with SSH, and track git commits from the command line. Yet when it comes to team communication, they're forced to alt-tab to a bloated Electron app that consumes 2GB of memory just to send a simple message. It's a jarring context switch that kills productivity and drains system resources.
What if you could stay in your terminal paradise?
Enter endcord – a game-changing Discord TUI (Terminal User Interface) client that brings the full power of Discord directly to your terminal. Built with Python and the legendary ncurses library, endcord delivers an ultra-lightweight, feature-rich experience that transforms how developers interact with Discord. We're talking extremely low CPU and RAM usage, vim-style navigation, mouse controls, voice calls, and over 50 advanced features that will make you wonder why you ever used the official client.
This deep dive will show you exactly how endcord revolutionizes terminal-based communication. You'll discover its powerful features, real-world use cases that solve actual developer pain points, step-by-step installation guides, real code examples extracted from the repository, advanced customization techniques, and pro tips that turn you into a terminal Discord master. By the end, you'll be rushing to install endcord and never looking back.
What is endcord?
endcord is a third-party, open-source Discord client that runs entirely within your terminal. Created by developer sparklost, this Python-powered application leverages the ncurses library to render a beautiful, interactive text-based interface that connects directly to Discord's API. Unlike the official Discord client built on Electron (which essentially runs a full Chrome browser instance), endcord is native, lean, and purpose-built for terminal enthusiasts.
The project emerged from a simple frustration: Discord's official client is a resource hog. For developers, system administrators, and power users who spend their days in terminals, launching a GUI application feels like stepping back in time. endcord solves this by providing 100% terminal-native Discord access without sacrificing modern features like voice calls, file uploads, emoji reactions, and rich presence.
Why it's trending now: The developer community is experiencing terminal renaissance. Tools like Neovim, tmux, and modern CLI applications have proven that text-based interfaces can be more efficient than GUIs. endcord rides this wave perfectly, offering Discord access that integrates seamlessly into existing terminal workflows. Its extremely low resource footprint makes it ideal for remote servers, Docker containers, and low-powered devices like Raspberry Pi. The project's GitHub repository has been gaining traction rapidly as more developers discover they can slash their memory usage from gigabytes to megabytes while gaining vim-style productivity superpowers.
Built with Python 3 and utilizing the ncurses library for terminal UI rendering, endcord proves that performance and features aren't mutually exclusive. The architecture is modular, with an extension API that allows community contributions and custom functionality. It's not just a toy project – it's a serious tool with voice call support (WIP), desktop notifications, media viewing capabilities, and enterprise-grade features like proxy support and profile management for multiple accounts.
Key Features That Make endcord Stand Out
endcord isn't just a stripped-down Discord client – it's a feature powerhouse that rivals and often exceeds the official client in functionality. Let's break down what makes it special:
Unmatched Performance & Resource Efficiency
- Extremely low CPU and RAM usage – Values depend on server/channel count, but typical usage stays in the 50-150MB RAM range compared to Discord's 1-2GB
- Channel chat caching – Intelligent caching prevents redundant API calls while keeping memory usage minimal
- Auto-update mechanism – Both endcord and extensions automatically check for updates, ensuring you're always current
Terminal-Native Navigation & Controls
- Vim-mode – Full vim-style keybindings for navigation, editing, and command execution
- Mouse controls – Click to select channels, messages, and UI elements (yes, in the terminal!)
- Advanced input line operations – Edit messages with vim-like precision, use external editors for complex messages
- Macro keybindings – Bind keys to chains of commands for complex workflows
Rich Media & Message Interaction
- View images, GIFs, videos, audio, stickers, and YouTube – Render as ASCII art or launch in external applications
- Download/upload attachments – Full file transfer capabilities without leaving terminal
- Message actions – Reply, edit, delete, react, vote in polls, go to replied messages
- Spellchecking – Built-in spellcheck prevents embarrassing typos
- s/old/new replacement – Extended regex support for quick message edits
- Show reactions, replied messages, forwarded messages – Complete conversation context
Advanced Discord Features
- Voice calls (WIP) – Experimental voice support coming soon
- Integrated RPC & game detection – Rich Presence works flawlessly
- Desktop notifications – Native OS notifications for mentions and DMs
- Member list & user profiles – View complete user information
- Search messages – Full-text search across channels
- App commands & interactions – Slash commands and UI interactions supported
- Generate server invite links – Create invites without GUI
- Channel notification settings – Customize per-channel notifications
Customization & Theming
- Theming system – Customizable colors, ASCII art, and UI elements
- Customizable status, title, and prompt lines – Tailor every UI component
- Chat line customization – Control how messages, newlines, reactions, and replies appear
- Extension API – Build custom extensions with builtin search functionality
Multi-Account & Security
- Profile manager – Seamlessly switch between multiple Discord accounts
- Token storage in system keyring – Secure, OS-managed secret storage (recommended)
- Plaintext token option – Fallback for systems without keyring support
- Proxy support – Route traffic through SOCKS/HTTP proxies
- Block/ignore users – Hide or mask messages from unwanted users
- No ghost pings – When client is running, you won't miss mentions
Developer-Friendly Extras
- Client commands with history – Execute commands with full history support
- Tabs – Multiple conversation tabs for power users
- Auto-completion – Assists when typing channels, usernames, roles, emojis, stickers
- Debug mode – Detailed logging with
-dflag for troubleshooting - Works in Termux – Full Android terminal support with notifications
- Experimental windowed mode – Tray icon support for desktop integration
- Easter eggs – Because even terminal apps should be fun
Real-World Use Cases: When Terminal Discord Makes Sense
1. Remote Server Administration
You're SSH'd into a production server diagnosing a critical issue. Your team is coordinating the fix in Discord. With endcord, you stay in your SSH session and monitor both server logs and team chat simultaneously in a tmux split. No context switching, no GUI overhead, just pure terminal efficiency. The extremely low resource usage means you can run it on the server itself without impacting performance.
2. Low-Powered Development Environments
That old ThinkPad from 2012? It struggles with modern Electron apps. endcord breathes new life into aging hardware, running smoothly on machines with less than 2GB of RAM. Raspberry Pi developers can now participate in Discord communities directly from their Pi without the memory overhead. The Python + ncurses architecture ensures it runs anywhere Python runs.
3. Distraction-Free Deep Work
GUI Discord is a distraction machine – GIFs autoplay, emojis animate, notifications flash. endcord's text-based interface eliminates visual noise while keeping you connected. Use vim-mode to navigate quickly, check important messages, then return to coding. The muted channels appear gray and unread channels appear bold, giving you instant visual priority without overwhelming your senses.
4. Integrated Development Workflow
Imagine this: you're reviewing a pull request in vim, need to ask a clarifying question. With endcord in a tmux pane, you copy code snippets directly, paste into Discord without leaving your editor, and get instant responses. The external editor integration means you can compose complex messages in your favorite editor. Macro keybindings let you create shortcuts for common actions like sharing code snippets or asking for reviews.
5. Privacy-Focused Communication
Running Discord in a browser means cookies, trackers, and telemetry. endcord connects directly to Discord's API with minimal data exposure. The proxy support allows routing through VPNs or Tor. Token-based authentication means no browser fingerprinting. For security-conscious developers, endcord provides Discord access without the surveillance capitalism baggage.
6. Multi-Account Power Users
Freelancers managing multiple client Discord servers, community moderators with personal and work accounts, or developers separating hobby and professional communications – endcord's profile manager handles them all. Switch accounts instantly with --profile flag, each secured in the system keyring. No more logging in/out or running multiple browser instances.
Step-by-Step Installation & Setup Guide
Ready to transform your Discord experience? Follow these comprehensive steps to get endcord running on your system.
Prerequisites
- Python 3.7+ installed
- pip package manager
- git (for building from source)
- ncurses library (usually pre-installed on Linux/macOS)
Method 1: Install from Source (Recommended)
# Clone the repository
git clone https://github.com/sparklost/endcord.git
cd endcord
# Install dependencies
pip install -r requirements.txt
# Run endcord directly
python -m endcord
Method 2: Build and Install
# Clone and build
git clone https://github.com/sparklost/endcord.git
cd endcord
# Install in development mode
pip install -e .
# Or build a wheel for distribution
python setup.py bdist_wheel
# Install the wheel
pip install dist/endcord-*.whl
# Now run from anywhere
endcord
Platform-Specific Instructions
On Linux (Debian/Ubuntu):
# Ensure ncurses is installed
sudo apt-get install libncurses5-dev libncursesw5-dev python3-dev
# Then follow Method 1 or 2 above
On macOS:
# Install Python 3 if not present
brew install python
# ncurses is included with macOS
# Follow Method 1 or 2 above
On Windows:
# Install Python 3 from python.org
# Install Windows Terminal for best experience
# ncurses support is included via windows-curses package
# Follow Method 1 or 2 above
On Android (Termux):
# Install required packages
pkg install python git ncurses
# Clone and install
git clone https://github.com/sparklost/endcord.git
cd endcord
pip install -r requirements.txt
# Run with notifications support
python -m endcord
First-Time Configuration
After installation, run endcord for the first time:
# Launch endcord
endcord
# This creates default config in:
# Linux: ~/.config/endcord/
# Windows: %USERPROFILE%/AppData/Local/endcord/
# macOS: ~/Library/Application Support/endcord/
The profile manager will appear automatically. Choose your login method:
- Email/Password: Enter credentials (not stored, used only for login)
- QR Code: Scan with mobile Discord app (may not work in all terminals)
- Token: Paste your Discord token directly (most reliable method)
Post-Installation Setup
# Open config directory to customize
endcord --execute "open_config_dir"
# Edit config file
vim ~/.config/endcord/config.json
# Set your preferred keybindings
cp docs/keybindings.example.json ~/.config/endcord/keybindings.json
Hands-On Code Examples: Mastering endcord Commands
Let's dive into real code examples extracted from endcord's documentation and source code. These practical snippets will accelerate your mastery.
Example 1: Command-Line Authentication
# Launch with token authentication (avoid storing in history!)
# Add a space before command to prevent history logging
endcord -t "YOUR_DISCORD_TOKEN_HERE"
# Better: use token from environment variable
export DISCORD_TOKEN="your_token_here"
endcord -t "$DISCORD_TOKEN"
# Best: use profile manager for secure storage
endcord --manager
Explanation: The -t flag provides your Discord token directly. Warning: Tokens are like passwords – anyone with your token has full account access. The first example shows direct token input, but your shell may save it to history. The improved version uses an environment variable, while the best practice uses endcord's built-in profile manager which stores tokens securely in your OS keyring.
Example 2: Custom Configuration Path
# Use custom config directory for testing
endcord -c /path/to/custom/config.json
# If config doesn't exist, endcord creates it with defaults
# This is perfect for:
# - Multiple instances with different settings
# - Testing new themes without breaking main config
# - Sharing configurations across machines
# Example: work vs personal config
endcord -c ~/.config/endcord/work.json --profile work
endcord -c ~/.config/endcord/personal.json --profile personal
Explanation: The -c flag overrides the default config path. If the specified file doesn't exist, endcord automatically generates a complete default configuration. This enables powerful workflows like running multiple endcord instances with distinct settings, or maintaining separate work and personal configurations. Each config can have unique themes, keybindings, and notification settings.
Example 3: Debug Mode for Troubleshooting
# Enable debug logging
endcord -d
# Debug mode writes detailed logs to:
# Linux: ~/.config/endcord/endcord.log
# Windows: %USERPROFILE%/AppData/Local/endcord/endcord.log
# View current log from within endcord
# Press ':' to enter command mode, then type:
show_log
# Previous run log is automatically saved as endcord-prev.log
# This helps compare behavior between runs
Explanation: The -d flag activates debug mode, causing endcord to write extensive operational details to its log file. This is invaluable when troubleshooting connection issues, extension problems, or unexpected behavior. The log grows quickly, so it's not for daily use. The show_log command lets you view logs without leaving the app. On each new run, the previous log is renamed with -prev suffix, creating a rolling two-run history.
Example 4: Internal Command Execution
# Launch endcord and execute command immediately
endcord --execute "open_config_dir"
# This opens the config directory in your system file manager
# Other useful commands:
endcord --execute "show_log" # Open log file
endcord --execute "update_check" # Check for updates
# Chain multiple commands with ;
endcord --execute "update_check; open_config_dir"
Explanation: The --execute flag runs endcord commands immediately on startup. This is perfect for automation scripts or quick tasks. The example shows opening the config directory, but you can run any internal command. This integrates endcord into larger workflows – imagine a script that checks for updates, then opens the config directory for editing.
Example 5: Message Editing with Regex Replacement
# Inside endcord's input line, use s/// syntax
# Fix a typo in your last message:
s/teh/the/
# Use extended regex for complex replacements
# Change "I love python" to "I ❤️ Python":
s/I love (\w+)/I ❤️ \U$1/
# Global replacement with g flag
# Replace all instances:
s/old_text/new_text/g
Explanation: This powerful feature brings vim-like substitution to Discord messages. After sending a message, if you notice a typo, simply type the substitution pattern and endcord will edit your last message. The extended regex support means you can perform complex text transformations without retyping entire messages. The g flag enables global replacements within the message. This is a massive time-saver for developers who live by regex.
Advanced Usage & Best Practices
Theming Like a Pro
endcord's theming system goes beyond colors. Create a theme.json in your config directory:
{
"colors": {
"mention": "red_bold",
"unread_channel": "bold",
"muted_channel": "gray"
},
"ascii_art": {
"logo": "YOUR_CUSTOM_ASCII_HERE"
}
}
Pro tip: Use the open_config_dir command, then copy theme.example.json to theme.json for a complete template.
Extension Development
The extension API lets you add custom commands. Extensions are Python modules placed in the extensions/ directory:
# Example extension structure
from endcord.extensions import ExtensionBase
class MyExtension(ExtensionBase):
def __init__(self, client):
super().__init__(client)
def on_ready(self):
print("My extension is ready!")
def custom_command(self, args):
# Your logic here
pass
Best practice: Use the builtin extensions search to discover community extensions before building your own.
Performance Optimization
For maximum efficiency on resource-constrained systems:
- Limit chat buffer: Set
limit_chat_bufferto 500-1000 messages - Disable media previews: Set
show_mediatofalsein config - Reduce refresh rate: Increase
update_intervalto 2000ms - Use plaintext profiles: If security isn't critical, plaintext profiles reduce keyring overhead
Workflow Integration
Create shell aliases for instant access:
# Add to ~/.bashrc or ~/.zshrc
alias dc="endcord --profile work"
alias dcp="endcord --profile personal"
alias dcd="endcord -d" # Debug mode
# Quick message sender
function dmsg() {
echo "send_message $1 $2" | endcord --execute -
}
endcord vs Alternatives: Why Terminal Wins
| Feature | endcord | Official Discord | Discordo | IRC Clients |
|---|---|---|---|---|
| Memory Usage | 50-150MB | 1-2GB+ | 100-200MB | 10-50MB |
| Vim Keybindings | ✅ Full support | ❌ Limited | ✅ Partial | ✅ Yes |
| Voice Calls | 🚧 WIP | ✅ Yes | ❌ No | ❌ No |
| Media Viewing | ✅ ASCII/external | ✅ Yes | ❌ No | ❌ No |
| Multiple Accounts | ✅ Profile manager | ❌ Log in/out | ❌ Manual | ✅ Yes |
| Extensions | ✅ Python API | ❌ No | ❌ No | ✅ Scripting |
| Mobile Support | ✅ Termux | ✅ Yes | ❌ No | ✅ Yes |
| RPC/Game Detection | ✅ Yes | ✅ Yes | ❌ No | ❌ No |
| Setup Complexity | Medium | Low | Low | High |
| Themeability | ✅ Extensive | ✅ Limited | ❌ Minimal | ✅ High |
Why choose endcord over official Discord?
The official client is a resource nightmare. Every update adds more bloat. endcord gives you 90% of the features with 5% of the resource cost. For developers who live in terminals, the workflow integration alone is worth the switch. No more alt-tabbing, no more waiting for the client to load, no more memory leaks crashing your system.
Why choose endcord over Discordo?
Discordo is another TUI client but lacks endcord's extensive feature set. endcord's voice call support (WIP), extension API, profile manager, and rich media handling make it the more powerful choice. Discordo is simpler but endcord is the professional-grade tool.
Why choose endcord over IRC clients?
IRC is ancient and lacks modern features like voice, rich embeds, and Discord's ecosystem. endcord gives you terminal efficiency with modern Discord features. It's the best of both worlds.
Frequently Asked Questions
Q: Is endcord safe to use? Will I get banned? A: endcord uses the official Discord API, just like the desktop client. It's a third-party client, which violates Discord's Terms of Service in theory, but no users have been banned for using it. The project uses token authentication, so Discord sees it as a legitimate client connection. Use at your own risk, but the community has been using it safely.
Q: How do I get my Discord token? A: Open Discord in your browser, press Ctrl+Shift+I (Developer Tools), go to Application tab, find Local Storage, and locate the token. Never share your token – it's equivalent to your password. The profile manager can also extract it automatically during login.
Q: Does endcord support voice calls? A: Voice calls are Work In Progress (WIP). The infrastructure is being built but isn't production-ready yet. Text chat, media sharing, and all other features work perfectly. Voice is the only major missing piece, and it's actively being developed.
Q: Can I use endcord on Windows?
A: Yes! endcord runs on Windows via Windows Terminal or any modern terminal emulator. You'll need Python 3.7+ and pip. The ncurses functionality is provided by the windows-curses package. Performance is excellent, though Linux/macOS offer slightly better terminal integration.
Q: How do I update endcord? A: endcord automatically checks for updates on startup. To manually update:
cd /path/to/endcord
git pull origin main
pip install -r requirements.txt
Extensions also auto-update independently. Use update_check command inside endcord to force a check.
Q: Why is my terminal not rendering QR codes correctly? A: Some terminal emulators struggle with QR code block characters. Solutions: Use a modern terminal like iTerm2, Windows Terminal, or kitty. If QR codes fail, use token authentication instead – it's more reliable and works in any terminal.
Q: Can I contribute to endcord development? A: Absolutely! The project welcomes contributions. Check the Contributing Guide on GitHub. Python developers can contribute core features, while others can create extensions, themes, or documentation.
Conclusion
endcord isn't just another Discord client – it's a paradigm shift for terminal-native developers.
In a world where every application wants to be a bloated Electron app, endcord stands as a testament to efficient, purposeful software design. It proves that you don't need 2GB of RAM to chat with your team, that vim keybindings belong everywhere, and that terminal applications can be both powerful and beautiful.
The extremely low resource usage makes it perfect for remote servers, old hardware, and resource-constrained environments. The vim-mode navigation and extensive customization transform Discord from a distraction into a seamless part of your development workflow. The profile manager and extension API provide enterprise-grade flexibility that the official client can't match.
Whether you're a system administrator managing servers, a developer seeking workflow integration, or a power user tired of Discord's bloat, endcord delivers. The active development, passionate community, and rapid feature additions make it the most exciting Discord client project today.
Your next step is simple: Head to the official GitHub repository, star the project, and install it. Join the Discord server for support and community. Within minutes, you'll be experiencing Discord the way it should be – fast, efficient, and terminal-native.
Stop alt-tabbing. Start terminal Discording. Choose endcord.
Comments (0)
No comments yet. Be the first to share your thoughts!