Clear, the xmppd mascot

xmppd Standards Compliance

Every number verified, no marketing rounding

Current release: v0.8.11

← Back to xmppd.org

Verification Summary

Compliance is measured, not asserted. Each row below carries its verification lane: the Smack SINT interop framework, the slixmpp end-to-end suites, or unit-level tests.

360/367SINT RFC 6121
10/10SINT XEP-0198
25XEPs
7 suitese2e, 2 worker modes
full server-side implementation relayed transparent pass-through (spec requires none) partial subset implemented, remainder tracked planned scheduled on the roadmap

Core RFCs

SpecNameStatusNotes
RFC 6120XMPP CorefullStreams, STARTTLS, SASL (PLAIN, SCRAM-SHA-256, EXTERNAL, OAUTHBEARER), resource bindingVerified: SINT full-spec run; dedicated e2e streams suite
RFC 6121XMPP IMfullRoster, presence, subscription state machine, 360/367 Smack SINT (1 remaining failure is an upstream Smack test bug)Verified: SINT 360/367; e2e-subscription 29/29
RFC 6122Address Format (XMPP JID)fullJID parsing and normalization in the shared protocol libraryVerified: unit tests (jid round-trips, edge cases)
RFC 5802 / 7677SCRAM / SCRAM-SHA-256fullServer-side verification with credential cache; channel binding supportedVerified: unit + e2e SASL exchanges
RFC 6698 / 7671DANE TLSA (EE / TA)fullDANE-first federation: TLSA is the primary S2S trust path; PKIX is the fallbackVerified: s2s federation suite with live DANE
RFC 8446TLS 1.3fullVia OpenSSL, with FreeBSD KTLS kernel offload enabledVerified: all suites run over STARTTLS
RFC 7395XMPP over WebSocketplannedxmppd-ws supervised bridge process — v0.10.0

XEPs — Implemented

XEPNameStatusNotes
XEP-0030Service Discoveryfulldisco#info / disco#items; feature list iterated from a single source of truth (audit-fixed)Verified: e2e-quick-wins
XEP-0004Data Formsfulljabber:x:data — MUC room configuration forms and in-band registration formsVerified: muc-test + e2e-register-invite
XEP-0203Delayed Deliveryfullurn:xmpp:delay stamps on archived (MAM replay) and offline-delivered stanzasVerified: e2e-mam / offline suites
XEP-0045Multi-User ChatfullRooms (transient + persistent), admin ops, sharded across workersVerified: muc-test 12/12 at workers=1 and workers=4
XEP-0054vcard-tempfullIncl. anti-harvesting: other-user misses are indistinguishable (§3.3 v1.3.0)Verified: e2e suites
XEP-0077In-Band RegistrationfullOptional invite-gated registration (codes with max-uses), change-password, account deletion cascadeVerified: e2e-register-invite 6/6; SINT IBR provisioning
XEP-0084User Avatar (PEP)fullData + metadata nodes, Gravatar fallbackVerified: unit + e2e
XEP-0085Chat State NotificationsfullRouted; typing-only states honour Client State Indication suppressionVerified: e2e-chat
XEP-0092Software VersionfullAnswers with the release version (single source in build.zig)Verified: e2e-quick-wins
XEP-0115Entity CapabilitiesfullPre-built caps hash (SHA-1) injected into presence; node-based disco verification; hash self-consistency fixed in v0.8.9 auditVerified: e2e + audit
XEP-0160Offline Message StoragefullQueued on delivery miss, drained on presenceVerified: e2e-chat (offline path)
XEP-0163Personal Eventing ProtocolfullPEP subset powering avatars (XEP-0084) and bookmarks (XEP-0402), incl. contact notificationsVerified: e2e suites
XEP-0191Blocking CommandfullBlocklists enforced at routingVerified: unit + e2e
XEP-0198Stream ManagementfullEnable/ack/resume with detached-session replay; ack requests before queue overflow; session failed loudly (resource-constraint) rather than silently losing stanzas. Cross-worker resume (state handoff between threads) on master, ships with v0.9.0Verified: SINT 10/10; e2e-sm-resume 29/29 at workers=1 and workers=4
XEP-0199XMPP PingfullC2S ping answered; kept dead connections cleanVerified: e2e-quick-wins
XEP-0220Server DialbackfullFallback federated auth where SASL EXTERNAL/DANE is unavailable; Prosody interop-testedVerified: s2s-federation suite vs Prosody
XEP-0280Message CarbonsfullMulti-resource sync incl. cross-worker deliveryVerified: e2e-chat at workers=4
XEP-0313Message Archive ManagementpartialC2S archives (1:1 + MUC participant view) with RocksDB-backed store, paging. Remaining: MUC room-archive query routing (T112)Verified: e2e-mam 7/7
XEP-0333Chat MarkersfullRouted with stanza-id stampingVerified: e2e-chat
XEP-0334Message Processing Hintsfullstore/no-store honoured at archive decisionVerified: unit tests
XEP-0352Client State IndicationfullActive/inactive queue suppression for mobile clientsVerified: e2e suites
XEP-0359Unique Stanza IDsfullServer assigns stanza-id on delivery (origin ID preserved)Verified: e2e-chat stanza-id assertions
XEP-0402PEP Native BookmarksfullBookmarks over PEP notificationsVerified: e2e suites
XEP-0440SASL Channel-Binding Type CapabilityfullChannel binding announcement over tls-server-end-pointVerified: unit tests
XEP-0012Last ActivitypartialImplemented since v0.8.0; full per-user last_online store + offline elapsed tracking pending (T164)

XEPs — Relayed (Pass-Through)

These specs need no server-side state: stanzas route end-to-end unchanged.

XEPNameStatusNotes
XEP-0184Message Delivery ReceiptsrelayedReceipts pass through routing untouchedVerified: e2e-chat
XEP-0308Last Message Correctionrelayedreplace payloads routed (archival stores latest)Verified: e2e-chat

Planned

SpecNameStatusTarget
XEP-0363HTTP File Uploadplannedv0.10.0 — xmppd-httpupload daemon
RFC 7395XMPP over WebSocketplannedv0.10.0 — xmppd-ws supervised bridge
XEP-0060Publish-Subscribeplannedv0.10.0 — real pubsub service (service identity is deliberately not advertised before this lands)
XEP-0049Private XML Storageplannedv0.10.0
XEP-0357Push NotificationsplannedPost-v1.0 — mobile background delivery (T41)
XEP-0124 / 0206BOSHplannedPost-v1.0 — legacy web clients (only if asked)
XEP-0166Jingle (A/V)plannedPost-v1.0 — with TURN/STUN relaying

Not Implemented

Notably absent and not currently scheduled. Stanzas for unknown extensions route end-to-end unchanged, so most client-side extensions work anyway; the rows here are things that would require server behavior.

SpecNameWhy not
XEP-0136Message ArchivingSuperseded by XEP-0313; deliberately skipped rather than dual-implemented
XEP-0050Ad-Hoc CommandsAdministration lives in the xmppctl CLI and the supervisor, not in-band
XEP-0065 / 0231 / 0265SOCKS5 Bytestreams / BoB / Out-of-BandServer-mediated file/P2P transfer — superseded by planned XEP-0363 (v0.10.0)
XEP-0380Explicit Message EncryptionMarkers relay unmodified; encryption claims per provider not tracked server-side
XEP-0369 / 0376MIXMUC successor spec; no implementation planned — investment stays on XEP-0045
XEP-0055Jabber SearchNo user directory/presence browsing by design (anti-harvesting posture)

OMEMO (XEP-0384) key distribution over PEP is in the post-v1.0 backlog; the PEP plumbing it needs is already implemented.

Method

Numbers on this page come from the test lanes that gate every release:

  • zig build test — all unit suites (currently 800+ tests across 100+ build steps)
  • Seven slixmpp end-to-end suites against a throwaway instance, at workers=1 and again in the workers=4 cross-worker lane
  • Smack SINT (smack-sint-server-extensions jar) — 360/367 for RFC 6121, 10/10 for XEP-0198
  • Interop runs against Prosody, Gajim, Dino, Conversations, and profanity