Chatto: Rebuilding Team Chat From First Principles
Slack has 2,400 employees. Discord runs on millions of dollars of infrastructure. What if a team chat server for 50 people could be a single binary file you run on a $5 VPS?
1. The Infrastructure Problem
Modern team chat tools have an infrastructure problem. When you use Slack:
- Redis clusters handle real-time message routing
- PostgreSQL stores message history
- Kubernetes orchestrates microservices
- CDNs serve file attachments
Mattermost requires: PostgreSQL + Redis + Go binary + Nginx
Rocket.Chat requires: MongoDB + Node.js + Nginx (2GB RAM minimum)
Chatto asks: what's the minimum viable architecture for a team chat server?
The answer: one Go binary, one port, zero external dependencies.
2. Technical Architecture
2.1 Storage: SQLite Embedded Database
Chatto uses SQLite embedded directly in the binary. No separate database server.
| Feature | Implementation |
|---------|---------------|
| Messages | SQLite tables with FTS5 full-text search |
| User data | SQLite with bcrypt password hashing |
| File uploads | Local filesystem with configurable paths |
| Sessions | In-memory with SQLite persistence |
2.2 Real-time: WebSocket + SSE Fallback
- Primary: WebSocket for real-time message delivery
- Fallback: Server-Sent Events (SSE) for restrictive networks
- Polling: Last resort for very old browsers
2.3 Single Binary Design
# Download one file
wget https://github.com/example/chatto/releases/latest/download/chatto-linux-amd64
Make executable
chmod +x chatto-linux-amd64
Run on port 8080
./chatto-linux-amd64 --port 8080
That's it. Server is running.
Memory usage: ~30-50MB for 50 users
Disk usage: ~10MB binary + SQLite database
CPU usage: Minimal for typical chat workloads
3. Features
Core Features
- Channels — Public and private channels
- Direct Messages — 1:1 and group DMs
- File Sharing — Upload and share files
- Search — Full-text search across messages
- User Management — Admin panel for user management
- Markdown — Basic markdown support in messages
What's Missing
- No voice/video calls
- No screen sharing
- No bot platform (yet)
- No mobile apps (web only)
- No integrations (Slack bots, etc.)
4. Deployment
4.1 Basic Setup
# Linux
./chatto --port 8080 --data-dir /opt/chatto/data
Docker
docker run -d -p 8080:8080 -v chatto-data:/data chatto:latest
Systemd service
[Unit]
Description=Chatto Chat Server
After=network.target
[Service]
ExecStart=/opt/chatto/chatto --port 8080
Restart=always
[Install]
WantedBy=multi-user.target
4.2 Reverse Proxy (Nginx)
server {
listen 443 ssl http2;
server_name chat.example.com;
location / {
proxy_pass http://localhost:8080;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $host;
}
}
4.3 Backup
Since everything is in one directory:
# Backup
tar czf chatto-backup-$(date +%Y%m%d).tar.gz /opt/chatto/data
Restore
tar xzf chatto-backup-20260716.tar.gz -C /opt/chatto/
5. Cost Analysis
| Solution | Monthly Cost (50 users) | Infrastructure |
|----------|------------------------|----------------|
| Chatto (self-hosted) | $5 VPS | 1 binary |
| Slack Pro | $450 | SaaS |
| Mattermost | $5 VPS + admin time | 4-5 services |
| Discord | Free | Limited control |
For a 50-person team:
- Slack: $9/user/month × 50 = $450/month
- Chatto: $5/month VPS + 30 min setup
Annual savings: $5,340
6. Use Cases
✅ Good For
- Small teams (10-100 people)
- Privacy-conscious organizations
- Low-budget projects
- Simple requirements (chat + file sharing)
- DevOps-minimal environments
❌ Not For
- Large enterprises (1000+ users)
- Voice/video requirements
- Compliance needs (HIPAA, SOC2)
- Integration-heavy workflows
- Mobile-first teams
7. Verdict
Chatto represents a growing trend in software: single-binary applications that prioritize simplicity over feature count.
What makes it significant:
- Proves you don't need complex infrastructure for basic chat
- SQLite is sufficient for small-team workloads
- Go produces efficient, portable binaries
Honest limitations:
- No mobile apps is a real gap in 2026
- No voice/video limits use cases
- Single-server = no high availability
Bottom line:
If you have a small team that just needs text chat and file sharing, and you don't want to manage a complex infrastructure or pay $9/user/month, Chatto is worth trying.
It's the kind of tool that makes you question why every chat app needs to be a platform.
Try it: https://github.com/example/chatto
Comments (0)
No comments yet. Be the first to comment!