A lot has changed since I first introduced marchat.
What started as a minimalist, terminal-first group chat has evolved into a more secure, extensible platform for real-time messaging — still fully self-hosted and still built for the command line.
This update brings plugin support, optional end-to-end encryption, a revamped admin system, and better deployment tooling.
What’s New in v0.2.0-beta.3
- Plugin ecosystem (
:plugin
,:store
) - Optional end-to-end encryption (X25519/ChaCha20-Poly1305)
- Docker and Docker Compose support
- New admin commands:
:ban
and:kick
- SQLite-based local persistence with improved config handling
- Updated themes, user list display, and security hardening
Overview
marchat is a self-hosted, terminal-based group chat application designed for developers who prefer the command line. It offers real-time messaging over WebSockets, a full-featured TUI client, and optional encryption — all backed by a local SQLite database.
It now supports a plugin system that makes it easy to extend the experience with community-built enhancements like ANSI image sharing, text filters, or custom commands.
Key Features
Feature | Description |
---|---|
Terminal UI | Built with Bubble Tea, fully keyboard-navigable |
Real-time Chat | WebSocket-based, low-latency communication |
Plugin System | Install via :plugin install , browse with :store
|
E2E Encryption | Optional encryption with X25519/ChaCha20 |
File Sharing | Transfer files up to 1MB using :sendfile
|
Admin Controls | Kick, ban, wipe database, manage users |
Docker Support | Run easily with Docker or Docker Compose |
Cross-platform | Linux, macOS, and Windows binaries available |
Getting Started
You can get started using prebuilt binaries or the Docker image.
For full instructions, see the GitHub README.
Binary Installation
# Linux
wget https://github.com/Cod-e-Codes/marchat/releases/download/v0.2.0-beta.3/marchat-v0.2.0-beta.3-linux-amd64.zip
unzip marchat-v0.2.0-beta.3-linux-amd64.zip
# macOS
wget https://github.com/Cod-e-Codes/marchat/releases/download/v0.2.0-beta.3/marchat-v0.2.0-beta.3-darwin-amd64.zip
unzip marchat-v0.2.0-beta.3-darwin-amd64.zip
Docker
docker pull codecodesxyz/marchat:v0.2.0-beta.3
docker run -d \
-p 8080:8080 \
-e MARCHAT_ADMIN_KEY=$(openssl rand -hex 32) \
-e MARCHAT_USERS=admin1,admin2 \
codecodesxyz/marchat:v0.2.0-beta.3
Example Usage
Start Server
export MARCHAT_ADMIN_KEY=your-key
export MARCHAT_USERS=admin1
./marchat-server
Connect Client
./marchat-client --username admin1 --admin --admin-key your-key --server ws://localhost:8080/ws
Encryption Support
To enable end-to-end encryption:
./marchat-client \
--username alice \
--e2e \
--keystore-passphrase your-passphrase \
--server ws://localhost:8080/ws
Use commands like :showkey
, :addkey
, and :encrypt
to manage keys.
Plugin Ecosystem
The new plugin system allows for on-demand extensibility without changing core code.
Available commands:
:plugin list
:plugin install <name>
:plugin uninstall <name>
-
:store
(to browse available plugins)
Security Best Practices
- Generate a secure admin key using
openssl rand -hex 32
- Do not use the default
changeme
key - Restrict access to production instances
- Use
wss://
when exposing marchat over the internet - Secure config and database files with appropriate file permissions
Contributing
marchat is open source under the MIT license.
Whether you want to report bugs, suggest features, or build plugins, contributions are welcome.
GitHub repo: https://github.com/Cod-e-Codes/marchat
Plugin starter guide: PLUGIN_ECOSYSTEM.md
Final Thoughts
marchat v0.2.0 is the first step toward making terminal chat collaborative, secure, and truly customizable. If you enjoy self-hosted tools or want to build your own chat plugins, give it a spin and let me know what you think.
Top comments (0)