Standalone Binary
Chatto ships as a single binary with an embedded NATS server and built-in Let’s Encrypt TLS. No reverse proxy, no external database — just one process serving everything. Alternatively, spin it up on any port and use your existing reverse proxy to wire things up and terminate TLS.
Architecture
Section titled “Architecture”The Chatto binary includes an embedded NATS server with JetStream for storage. It expects a chatto.toml configuration file (you can generate one using chatto init), and stores all data in a ./data/ directory.
Prerequisites
Section titled “Prerequisites”- A server with Chatto installed. Use
brew install chattocorp/tap/chattoon macOS or Linux with Homebrew, or download the binary from GitHub Releases. - A domain pointing to your server (e.g.,
chat.example.com) - Firewall allowing inbound TCP 80 and 443
Please refer to the Quick Start guide for details on initializing your chatto.toml configuration file.
For production use, please review the file and at least:
- configure SMTP credentials
- set
webserver.urlto your public URL - review
webserver.tlsif you want Chatto to terminate TLS
It is also strongly recommended that you:
- review the
[core.assets.s3]section if you want to use an external object store for uploaded files (optional, but recommended; you can enable this later if you wish) - make a decision to either enable
auth.direct_registrationor configure at least one SSO provider (you can use both together!) - review the
[push]section if you want to support native push notifications - review the
[video]section if you want to support video uploads - review the
[livekit]section if you want to support voice and video calls (requires LiveKit)
Running as a systemd Service
Section titled “Running as a systemd Service”For production use on Linux, create a systemd unit to manage the process:
[Unit]Description=ChattoAfter=network-online.targetWants=network-online.target
[Service]Type=simpleUser=chattoGroup=chattoWorkingDirectory=/opt/chattoExecStart=/opt/chatto/chatto run -c chatto.tomlRestart=alwaysRestartSec=5AmbientCapabilities=CAP_NET_BIND_SERVICE
[Install]WantedBy=multi-user.targetsudo systemctl enable --now chattoAdding Voice and Video Calls
Section titled “Adding Voice and Video Calls”The standalone binary doesn’t include LiveKit. To add voice and video calls, you have two options:
- Switch to Docker Compose (recommended) — the Docker Compose guide includes LiveKit out of the box.
- Run LiveKit separately — install and run a LiveKit server alongside Chatto, then configure the LiveKit environment variables.