Clear, the xmppd mascot

xmppd for Your Deployment

Pick the closest match. The answer is honest.

Current release: v0.8.11

← Back to xmppd.org

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 devicesMessage Carbons + MAM archive + offline store
Reconnect without lossXEP-0198 stream resume
Avatar, bookmarksPEP (XEP-0163/0084) + XEP-0402 bookmarks
Battery-friendly mobileClient 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 roomsFull XEP-0045 MUC: persistent rooms, roles, kick/ban
Searchable historyMAM (XEP-0313) for 1:1 and participant views
SSO-fed accountsOIDC auth against your IdP (xmppd-auth-oidc)
Invite-only onboardingXEP-0077 registration gated by invite codes
Room history server-sideC2S 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 trustDANE-first S2S with TLSA validation; PKIX fallback
Legacy federationServer dialback (XEP-0220), Prosody-interop tested
Open registration, controlledInvite-gated IBR keeps signups real
Abuse surfaceAuth 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 networksSM resume keeps sessions alive across towers and Wi-Fi flips
Battery lifeXEP-0352 suppresses unneeded traffic when inactive
Missed messagesOffline store drains on reconnect
iOS background deliveryPush 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 transportDIRECT WebSocket (RFC 7395) — xmppd-ws bridge process, v0.10.0
BOSH fallbackXEP-0124/0206 — post-v1.0, only if asked
Everything elseMUC, 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-forwardOffline retention survives device sleep cycles
At-least-once deliveryXEP-0198 acks + loud failure on overflow (never silent loss)
LightweightSub-millisecond routing; tiny static binaries
Publish channelsPEP 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 archiveRocksDB-backed MAM store on disk, not in memory
Overflow honestyServer fails loudly on queue overflow instead of dropping silently
Delivery immediacyArchive write is eventual (async window of ~ms)
Legal-hold toolingRetention 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 trustDANE-first: DNS TLSA is primary; CAs are the fallback
Auth strengthSCRAM-SHA-256 + TLS channel binding; brute-force limiting active
PrivacyJID-enumeration and vCard harvesting protections; no user directory
Attack surfacePrivilege-separated multi-process daemon, static binaries
End-to-end encryptionOMEMO 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.