DEV Community

Cover image for marchat v0.2.0: Terminal Chat Now With Plugins and Encryption
Cody Marsengill
Cody Marsengill

Posted on • Originally published at github.com

marchat v0.2.0: Terminal Chat Now With Plugins and Encryption

marchat server starting, showing the banner and clients connecting/disconnecting marchat client connecting, sending and receiving messages, showing mentions, and exitingA 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
Enter fullscreen mode Exit fullscreen mode

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
Enter fullscreen mode Exit fullscreen mode

Example Usage

Start Server

export MARCHAT_ADMIN_KEY=your-key
export MARCHAT_USERS=admin1

./marchat-server
Enter fullscreen mode Exit fullscreen mode

Connect Client

./marchat-client --username admin1 --admin --admin-key your-key --server ws://localhost:8080/ws
Enter fullscreen mode Exit fullscreen mode

Encryption Support

To enable end-to-end encryption:

./marchat-client \
  --username alice \
  --e2e \
  --keystore-passphrase your-passphrase \
  --server ws://localhost:8080/ws
Enter fullscreen mode Exit fullscreen mode

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)