Skip to content

Repository files navigation

RoundChat

Your email inbox, reimagined as a modern messenger.

RoundChat is a desktop chat app that works directly with your existing email account — no new account to create, no proprietary server, no data stored anywhere except your own inbox. Open it in your browser and chat the way you already do, just with a familiar messenger interface.


Screenshots

Sign in Conversations Chat
Sign-in screen Conversation list Chat bubbles
Contacts Files
Contacts list File manager

What you get

  • 💬 Conversations — your email threads displayed as chat bubbles, grouped by contact or group
  • ✉️ Send & receive — reply directly from the chat view; messages are real emails under the hood
  • 👤 Contacts — browse your address book pulled from CardDAV
  • 📁 Files — upload, download, and delete files stored on your WebDAV server
  • 🔔 Real-time updates — new messages appear automatically without refreshing

Getting started

1 · Download

Grab the latest pre-built binary for your platform from the Actions → Artifacts tab (Linux x86-64 or Windows x86-64).

2 · Configure

Copy the example configuration file and fill in your email server details:

cp .env.example .env

Open .env in any text editor and set at minimum:

Setting What to put here
IMAP_HOST Your mail server (e.g. imap.gmail.com)
SMTP_HOST Your outgoing server (e.g. smtp.gmail.com)

See .env.example for the full list of options including POP3, CardDAV and WebDAV.

3 · Run

./roundchat serve          # Linux
roundchat.exe serve        # Windows

RoundChat opens your default browser at http://127.0.0.1:7979 automatically. Sign in with your email address and password (or app-specific password).

To see all available commands and environment variables:

./roundchat help

Run as a system service (Linux)

To keep RoundChat running in the background and start automatically on boot, install it as a systemd service.

1 · Place the binary and config

cp roundchat /usr/local/bin/roundchat
chmod +x /usr/local/bin/roundchat
cp .env /etc/roundchat.env

2 · Create the unit file

Save the following to /etc/systemd/system/roundchat.service:

[Unit]
Description=Roundchat
Wants=network.target

[Service]
Type=simple
EnvironmentFile=/etc/roundchat.env
ExecStart=/usr/local/bin/roundchat serve
Restart=on-failure
RestartSec=5

[Install]
WantedBy=multi-user.target

3 · Enable and start

systemctl daemon-reload
systemctl enable --now roundchat

Check the status at any time with:

systemctl status roundchat
journalctl -u roundchat -f

Docker deployment (air-gapped server)

When the server has no internet access to GitHub Container Registry, deploy via Docker tarball.

CI workflow

Pushing a v* tag triggers the Build and Push Docker Image workflow which:

  1. Builds the Docker image and pushes it to ghcr.io/tayyebi/roundchat
  2. Exports the image as roundchat-docker.tar
  3. Attaches the tarball to the GitHub release

Deploy to an air-gapped server

# 1. Download the tarball from the release
gh release download v1.0.0 --pattern "roundchat-docker.tar"

# 2. Upload to the server
scp roundchat-docker.tar root@your-server:/root/roundchat/

# 3. Load and run on the server
ssh root@your-server
cd /root/roundchat
docker load -i roundchat-docker.tar
docker tag <loaded-image-id> ghcr.io/tayyebi/roundchat:v1.0.0
docker compose up -d

Server directory layout

/root/roundchat/
├── .env                     # environment configuration
├── docker-compose.yml       # service definition
└── roundchat-docker.tar     # pre-built Docker image (loaded with docker load)

Set IMAP_TLS_INSECURE=true in .env when the IMAP server uses a self-signed certificate.


Privacy & security

  • No cloud, no accounts — RoundChat runs entirely on your machine and talks directly to your own mail/DAV servers.
  • No data leaves your control — messages are your normal emails; contacts and files live on your own server.
  • TLS on by default — all connections to mail and DAV servers use TLS.

Developer notes

Stack

Layer Technology
Backend Rust (axum, tokio)
Frontend HTML5 + CSS3 + pure JS (embedded in the binary)
Protocols IMAP / POP3, SMTP, CardDAV, WebDAV

Build from source

# Debug run
cargo run

# Release (opens browser automatically)
cargo run --release

# Cross-compile
cargo build --release --target x86_64-unknown-linux-gnu
cargo build --release --target x86_64-pc-windows-msvc

GitHub Actions builds both targets on every push and uploads artifacts.

Configuration reference

Variable Description Default
IMAP_HOST IMAP server hostname
IMAP_PORT IMAP port 993
IMAP_TLS Enable TLS true
IMAP_TLS_INSECURE Skip TLS certificate verification (self-signed certs) false
POP3_HOST POP3 server (used when IMAP_HOST is unset)
POP3_PORT POP3 port 995
POP3_TLS Enable TLS true
POP3_TLS_INSECURE Skip TLS certificate verification (self-signed certs) false
POP3_POLL_INTERVAL Polling interval in seconds 30
SMTP_HOST SMTP server hostname localhost
SMTP_PORT SMTP port 465
SMTP_TLS Enable TLS true
CARDDAV_URL CardDAV address book URL ({email} placeholder)
WEBDAV_URL WebDAV file storage URL ({email} placeholder)
ROUNDCHAT_PORT Local HTTP server port 7979

About

Chat built on the universal language of the internet: email.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages