This document lists the XMPP Extension Protocols (XEPs) and related RFCs implemented in Fluux.
RFC
Name
Status
Notes
RFC 6120
XMPP Core
✅ Implemented
TCP binding with STARTTLS, direct TLS, SASL authentication, XML streams, stanzas. Web uses xmpp.js over WebSocket; desktop also supports native TCP
RFC 6121
XMPP IM
✅ Implemented
Instant messaging, presence, roster management
RFC 7622
XMPP Address Format
✅ Implemented
JID parsing and validation
RFC 7395
XMPP over WebSocket
✅ Implemented
WebSocket transport for browser connectivity. Desktop Rust proxy bridges WebSocket (RFC 7395) framing to native TCP (RFC 6120) framing
RFC 5122
XMPP URI Scheme
✅ Implemented
Deep linking support for xmpp: URIs - opens conversations and joins rooms from external links
RFC 7590
Use of TLS in XMPP
✅ Implemented
WSS for WebSocket connections, direct TLS and STARTTLS for native TCP connections (desktop), HTTPS for XEP-0156 discovery
XEP
Name
Status
Notes
XEP-0156
Discovering Alternative XMPP Connection Methods
✅ Implemented
Auto-discovers WebSocket endpoint via host-meta (HTTPS-only for security)
XEP-0198
Stream Management
✅ Implemented
Session resumption, message delivery reliability, ack tracking
XEP-0199
XMPP Ping
✅ Implemented
Responds to server/contact pings, uses ping for connection liveness checks
XEP-0202
Entity Time
✅ Implemented
Responds to queries; queries contacts and displays local time in chat header and contact popover
XEP-0280
Message Carbons
✅ Implemented
Sync messages across multiple connected clients
XEP-0368
SRV Records for XMPP over TLS
✅ Implemented
Desktop: SRV lookup for _xmpps-client._tcp (direct TLS) and _xmpp-client._tcp (STARTTLS) via Rust proxy
XEP-0388
Extensible SASL Profile (SASL2)
✅ Implemented
Modern authentication with inline features (bind2, FAST). Falls back to SASL1 if server doesn't support it
XEP-0484
Fast Authentication Streamlining Tokens (FAST)
✅ Implemented
Token-based reconnection without password (web: 14-day localStorage persistence, HT-SHA-256-NONE mechanism)
XEP
Name
Status
Notes
XEP-0030
Service Discovery
✅ Implemented
disco#info queries, server feature discovery on connect
XEP-0059
Result Set Management
✅ Implemented
Pagination for MAM queries
XEP-0115
Entity Capabilities
✅ Implemented
Feature discovery, capability hash, PEP notifications, client identification from caps node with device tooltips
XEP
Name
Status
Notes
XEP-0077
In-Band Registration
✅ Implemented
Password change from profile view
XEP
Name
Status
Notes
XEP-0084
User Avatar
✅ Implemented
PEP-based avatar display, publishing (256×256 JPEG with crop/resize), and removal
XEP-0153
vCard-Based Avatars
✅ Implemented
Legacy avatar support with SHA-1 hash caching
XEP-0172
User Nickname
✅ Implemented
Publish, retrieve, and clear own nickname via PEP
XEP-0191
Blocking Command
✅ Implemented
Block/unblock JIDs, fetch blocklist, push notifications
XEP-0012
Last Activity
✅ Implemented
Lazy query of offline contact last activity with caching, negative caching, and auto-invalidation on presence
XEP-0319
Last User Interaction in Presence
✅ Implemented
Idle time display and publishing
XEP
Name
Status
Notes
XEP-0085
Chat State Notifications
✅ Implemented
Typing indicators for 1:1 and MUC (throttled for rooms < 30 occupants)
XEP-0359
Unique and Stable Stanza IDs
✅ Implemented
Message deduplication using stanza-id and origin-id
XEP-0393
Message Styling
✅ Implemented
Bold, italic, strikethrough, monospace, block quotes
XEP-0428
Fallback Indication
✅ Implemented
Used with message replies for client compatibility
XEP-0444
Message Reactions
✅ Implemented
Emoji reactions on messages in 1:1 and MUC
XEP-0461
Message Replies
✅ Implemented
Reply-to with quoted preview and fallback body
XEP-0308
Last Message Correction
✅ Implemented
Edit last sent message with validation
XEP-0424
Message Retraction
✅ Implemented
Delete own messages with sender verification
XEP-0425
Message Moderation
✅ Implemented
Moderators can retract other users' messages in MUC rooms, with reason display
XEP-0363
HTTP File Upload
✅ Implemented
File upload with drag-and-drop, progress indicator, automatic service discovery
XEP-0066
Out of Band Data
✅ Implemented
File URL sharing with thumbnails
XEP-0245
The /me Command
✅ Implemented
Action messages displayed in italic with sender name
XEP-0264
Jingle Content Thumbnails
✅ Implemented
Thumbnail element (urn:xmpp:thumbs:1) used with OOB file sharing — no Jingle dependency
XEP-0446
File Metadata Element
✅ Implemented
Original image/video dimensions for proper layout reservation
XEP-0422
Message Fastening
✅ Implemented
Link previews with OGP metadata attached to messages
XEP-0203
Delayed Delivery
✅ Implemented
Offline message timestamps
XEP-0297
Stanza Forwarding
✅ Implemented
Used by Message Carbons
XEP-0313
Message Archive Management
✅ Implemented
History fetch for 1:1 chats and MUC rooms with scroll-up lazy loading, IndexedDB caching with MAM fallback, RSM pagination
XEP-0334
Message Processing Hints
✅ Implemented
<no-store/> hint for transient messages (Quick Chat rooms), chat states and reactions
XEP
Name
Status
Notes
XEP-0060
Publish-Subscribe
✅ Implemented
PubSub event handling for avatars, nicknames, bookmarks, and settings
XEP-0163
Personal Eventing Protocol
✅ Implemented
PEP notifications for avatars (XEP-0084), nicknames (XEP-0172), bookmarks (XEP-0402), appearance settings (XEP-0223)
XEP-0223
Persistent Storage of Private Data via PubSub
✅ Implemented
Private PEP storage for appearance settings, conversation list sync, and per-room ignored users
XEP
Name
Status
Notes
XEP-0045
Multi-User Chat
✅ Implemented
Join/leave rooms, messaging, occupant list with presence tooltips, roles/affiliations, mediated invitations
XEP-0054
vCard-temp
✅ Implemented
Room avatar retrieval and display, contact vCard info in popover (full name, org, email, country)
XEP-0317
Hats
✅ Implemented
Custom role badges in occupant panel and messages, hat management UI (define, assign, unassign via ad-hoc commands)
XEP-0392
Consistent Color Generation
✅ Implemented
Deterministic colors for avatars, nicknames, and hat badges based on identifier
XEP-0249
Direct MUC Invitations
✅ Implemented
Receive room invitations with Accept/Decline in Events view
XEP-0372
References
✅ Implemented
@mention notifications with position-based highlighting
XEP-0398
User Avatar to vCard-Based Avatars Conversion
✅ Implemented
MUC occupant avatars via vCard conversion
XEP-0402
PEP Native Bookmarks
✅ Implemented
Room bookmarks with autojoin, custom extensions for notification preferences
XEP-0421
Anonymous Unique Occupant Identifiers
✅ Implemented
Stable occupant identifiers for anonymous MUC rooms
XEP
Name
Status
Notes
XEP-0004
Data Forms
✅ Implemented
Dynamic form rendering for admin commands
XEP-0050
Ad-Hoc Commands
✅ Implemented
Command execution with multi-step flows
XEP-0133
Service Administration
✅ Implemented
Admin panel for user management, server stats, announcements
XEP
Name
Status
Notes
XEP-0453
DOAP Usage in XMPP
✅ Implemented
Machine-readable project description with supported XEPs (fluux-messenger.doap)
The following XEPs are planned for future implementation:
XEP
Name
Category
XEP-0184
Message Delivery Receipts
Messaging
XEP-0333
Chat Markers
Messaging
XEP-0384
OMEMO Encryption
Security
Fluux uses custom extensions across several namespaces:
Bookmark Extensions (urn:xmpp:fluux:0)
Room notification preferences : Stored in XEP-0402 bookmark extensions to enable per-room notification settings (mentions only vs. all messages)
@all mentions : Room-wide mention indicator (urn:fluux:mentions:0) for notifying all participants
Quick chat marker : <quickchat xmlns="urn:xmpp:fluux:0"/> element included in MUC invitations to indicate the room is a temporary quick chat (non-persistent, auto-destroys when empty)
Private PEP Storage (XEP-0223)
Namespace
Purpose
urn:xmpp:fluux:appearance:0
Theme and appearance settings sync across devices
urn:xmpp:fluux:conversations:0
Conversation list sync (active and archived 1:1 conversations) with debounced publishing and merge-on-reconnect
urn:xmpp:fluux:ignored-users:0
Per-room ignored users list, stored as one PEP item per room
Namespace
Purpose
urn:fluux:easter-egg:0
Easter egg animations triggered by specific message content
ejabberd Business Edition Extensions
Fluux supports the following proprietary extensions from ejabberd Business Edition:
Extension
Namespace
Status
Notes
Web Push (VAPID)
p1:push / p1:push:webpush
✅ Implemented
VAPID service discovery, browser push subscription via W3C Push API, registration with XMPP server. Enables OS-level notifications when the browser tab is closed (web only, not Tauri)