You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
GET/PUT/POST /api/v1/sessions/{sid}/tags, DELETE .../tags/{tag}, GET /api/v1/tags, GET /api/v1/sessions?tag=
SSE event tail (filter by session / event)
GET /api/v1/events/tail
List Edge-TTS voices
GET /api/v1/voices
TTS voice preview (returns MP3)
GET /api/v1/tts/preview?text=&voice=
Instance-lock file (single-writer safety)
on-boot
FD-limit warning at start (nofile < 65536)
on-boot
JWT + static Bearer auth, per-token IP allowlist (planned)
header
NATS JetStream event fan-out (optional)
env NATS_URL
Storage backends
Feature
Notes
SQLite (default, single-binary friendly)
WA_DB=sqlite:///path.db
Postgres (recommended for prod, > 50 sessions)
WA_DB=postgres://…
MySQL
WA_DB=mysql://…
Known limitations
Gap
Why
Group voice call
Blocked upstream — whatsapp-rust has no multi-party relay/SFU client at all (single-peer engine only). Not a waxum-side gap; would need its own library-level project in whatsapp-rust first.
Encryption at rest
Not implemented. libsqlite3-sys (shared with whatsapp-rust-sqlite-storage) would need a bundled-sqlcipher build, which pulls in OpenSSL and breaks single-binary/cross-compile builds. Use OS/disk-level encryption (LUKS, BitLocker, encrypted volumes) instead — the standard approach for encryption at rest, and zero code changes.
Console
Server-rendered ops dashboard baked into the binary. Point a browser at
http://<host>:3451/, sign in with your SUPERADMIN_TOKEN, and you land
on the fleet overview. Click any session for the per-session playground
covering 60+ REST endpoints — send messages, drive calls, manage groups,
inspect webhooks, all without leaving the tab.