Local Development
- Auth bypass (auto-authenticated as developer)
- Verbose error messages
- CORS permissive headers
- Hot reload
Production
Bun Runtime
Diminuendo runs as a single Bun process:Docker
Data Persistence
All state is in SQLite databases underDATA_DIR:
- Mount
DATA_DIRon a persistent volume (EBS, EFS) - Configure Litestream for S3 replication
- Per-tenant database isolation makes backup/restore trivial
Scaling
Diminuendo scales by tenant routing:- Each instance handles a subset of tenants
- A load balancer routes WebSocket connections by tenant ID (sticky sessions)
- No shared state between instances — tenant databases are independent
- To migrate a tenant: copy its data directory to a new instance
| Resource | Budget per Instance |
|---|---|
| WebSocket connections | ~10,000 |
| Active sessions | ~5,000 |
| SQLite databases | ~500 open (LRU) |
| Memory | ~2GB |