Personal / single-user server good fit
A self-hosted home for your account: laptop + phone + tablet under one identity, with history in sync.
| Sync across your devices | Message Carbons + MAM archive + offline store |
| Reconnect without loss | XEP-0198 stream resume |
| Avatar, bookmarks | PEP (XEP-0163/0084) + XEP-0402 bookmarks |
| Battery-friendly mobile | Client State Indication (XEP-0352) |
What you get
- pkg install + one config file; runs comfortably in a small jail or VM
- Strong auth out of the box (SCRAM-SHA-256, brute-force protection)
- AI-free, dependency-light: easy to audit and keep patched
Watch for
- iOS background push is not implemented yet (post-v1.0)
- Federation is optional; a solo server works perfectly standalone
Team / organization messaging good fit
Dozens to hundreds of colleagues, group rooms, 1:1 chats, shared history.
| Group rooms | Full XEP-0045 MUC: persistent rooms, roles, kick/ban |
| Searchable history | MAM (XEP-0313) for 1:1 and participant views |
| SSO-fed accounts | OIDC auth against your IdP (xmppd-auth-oidc) |
| Invite-only onboarding | XEP-0077 registration gated by invite codes |
| Room history server-side | C2S MAM works; MUC room-archive queries pending (T112) |
What you get
- Multi-worker runtime scales per CPU core out of the box
- Runs under your IdP — no password store to manage
- Full offline delivery for people in different time zones
Watch for
- Admin surface is the CLI (
xmppctl), no web dashboard yet - MUC room search across history arrives with T112
Public / federated community works, with caveats
An open server federating with the wider XMPP network.
| Federation trust | DANE-first S2S with TLSA validation; PKIX fallback |
| Legacy federation | Server dialback (XEP-0220), Prosody-interop tested |
| Open registration, controlled | Invite-gated IBR keeps signups real |
| Abuse surface | Auth rate limiting active since v0.8.11; no spam-content tooling yet |
What you get
- Strong default federation security posture
- Efficient at scale: thread-per-core, low latency
Watch for
- Moderation and reporting tooling is minimal today
- No clustering: one node per domain for now
Mobile-first users works, with caveats
Conversations (Android), Monal/Siskin (iOS) as primary clients.
| Unstable networks | SM resume keeps sessions alive across towers and Wi-Fi flips |
| Battery life | XEP-0352 suppresses unneeded traffic when inactive |
| Missed messages | Offline store drains on reconnect |
| iOS background delivery | Push notifications (XEP-0357) not implemented — post-v1.0 |
What you get
- Android client experience is complete and well-tested
- Fast reconnects; resumed sessions don’t refetch rosters
Watch for
- iOS apps only receive while in foreground until push lands
Web-based chat (browser client / embed) not yet
Users chatting from a browser page without installing an app.
| Browser transport | DIRECT WebSocket (RFC 7395) — xmppd-ws bridge process, v0.10.0 |
| BOSH fallback | XEP-0124/0206 — post-v1.0, only if asked |
| Everything else | MUC, presence, history, auth are all client-agnostic and ready |
What exists today
- Native clients (desktop/mobile) work fully now
- xmppd-ws is a scheduled, scoped feature — not vaporware
Watch for
- No browser path until xmppd-ws ships in v0.10.0
- If you need web chat today, a third-party WebSocket gateway can front xmppd
IoT / alerts / machine traffic good fit
Sensors, job notifications, and control channels over a durable queue-like fabric.
| Store-and-forward | Offline retention survives device sleep cycles |
| At-least-once delivery | XEP-0198 acks + loud failure on overflow (never silent loss) |
| Lightweight | Sub-millisecond routing; tiny static binaries |
| Publish channels | PEP subset for device state metadata |
What you get
- Deterministic behavior under disconnect storms
- TLS channel binding for device-authenticated fleets
Watch for
- Full generic pub/sub (XEP-0060) lands in v0.10.0 — PEP subset only before that
Archival / compliance retention works, with caveats
Regulated retention of conversations with an auditable trail.
| Durable archive | RocksDB-backed MAM store on disk, not in memory |
| Overflow honesty | Server fails loudly on queue overflow instead of dropping silently |
| Delivery immediacy | Archive write is eventual (async window of ~ms) |
| Legal-hold tooling | Retention policy + export are manual today (xmppctl/storage access) |
What you get
- Small auditable codebase (~30k LOC) — defensible in review
- No silent message loss anywhere in the pipeline
Watch for
- No litigation-hold/tamper-evidence layer yet
High-security posture strong fit
Threat-model-aware messaging for sensitive groups.
| Transport trust | DANE-first: DNS TLSA is primary; CAs are the fallback |
| Auth strength | SCRAM-SHA-256 + TLS channel binding; brute-force limiting active |
| Privacy | JID-enumeration and vCard harvesting protections; no user directory |
| Attack surface | Privilege-separated multi-process daemon, static binaries |
| End-to-end encryption | OMEMO works over PEP data, but PEP key distribution UX is post-v1.0 |
What you get
- No CA compromise can redirect federation traffic
- Compartmentalized processes — a bug in the web/auth layer can’t touch routing
Watch for
- Metadata minimization beyond the listed protections is not a current goal
Not Convinced?
The profile verdicts are derived from the compliance matrix — every strength and gap there is test-backed. If your use case isn’t listed, the matrix usually answers the question directly.