Xepher XMPP plugin for WeeChat — C++23

View on GitHub Documentation Installation
Xepher running in WeeChat showing XMPP chat and microblogging feed

OMEMO Encryption

End-to-end encryption via XEP-0384 (OMEMO:2 + legacy). Keys stored in LMDB, automatic ratchet renegotiation.

Message Archive (MAM)

XEP-0313 history fetch on connect with local LMDB cache. RSM cursor persisted across reconnects.

Microblogging

XEP-0277 / XEP-0472 PubSub social feed — post, reply, boost, retract, comments. Compatible with Movim.

File Upload

HTTP File Upload (XEP-0363) with Stateless File Sharing (XEP-0447). Interactive picker or direct path.

Message Corrections

Edit or retract sent messages (XEP-0308 / XEP-0424). Interactive picker with last 20 messages.

Threaded Replies

XEP-0461 reply context with quoted preview. Fallback body stripping per XEP-0428.

MUC Support

Full XEP-0045 multi-user chat — kick, ban, topic, moderation (XEP-0425), reactions (XEP-0444).

Ad-hoc Commands

XEP-0050 data forms rendered inline. Multi-step sessions with field validation.

Ephemeral Messages

XEP-0466 — send messages that auto-delete after N seconds. Tombstoned locally on both ends.

Automatic Trust Management

XEP-0450 + XEP-0434 — TOFU + manual trust via /omemo approve / /omemo distrust; trust messages encrypted via OMEMO+SCE, batched per XEP-0434 §4, with sender authentication and deferred trust queues.

Encrypted File Sharing

XEP-0448 — AES-256-GCM encrypt files before upload; decrypt on receive automatically.

Installation

git clone --depth 1 git@github.com:ekollof/xepher.git
cd xepher
make install-deps   # detects distro, installs packages
make
make install        # installs to ~/.local/share/weechat/plugins/

Requires WeeChat ≥ 3.0, libstrophe, libxml2, lmdb, libomemo-c, gpgme, libfmt, and GCC ≥ 12 / Clang ≥ 16.

See the Installation wiki page for distribution-specific instructions and BSD notes.

Implemented XEPs

Targeting XMPP Compliance Suite 2022 (XEP-0459).

XEPNameNotes
XEP-0030Service Discovery
XEP-0045Multi-User Chat
XEP-0048Bookmarks
XEP-0050Ad-Hoc Commands
XEP-0054vcard-temp
XEP-0059Result Set ManagementRSM paging for MAM and PubSub
XEP-0060Publish-Subscribe
XEP-0066Out of Band Data
XEP-0071XHTML-IMRendered with WeeChat color codes
XEP-0077In-Band Registration
XEP-0084User Avatar
XEP-0085Chat State Notifications
XEP-0107User Mood
XEP-0108User Activity
XEP-0115Entity Capabilities
XEP-0153vCard-Based Avatars
XEP-0184Message Delivery Receipts
XEP-0191Blocking Command
XEP-0198Stream Management
XEP-0199XMPP Ping
XEP-0224Attention
XEP-0245/me Command
XEP-0249Direct MUC Invitations
XEP-0277Microblogging over XMPP
XEP-0292vCard4 over XMPP
XEP-0308Last Message Correction
XEP-0313Message Archive Management
XEP-0333Displayed Markers
XEP-0363HTTP File Upload
XEP-0372References
XEP-0382Spoiler Messages
XEP-0384OMEMO EncryptionOMEMO:2 + legacy
XEP-0393Message Styling
XEP-0402PEP Native Bookmarks
XEP-0410MUC Self-Ping
XEP-0424Message Retraction
XEP-0425Message Moderation
XEP-0428Fallback Indication
XEP-0433Extended Channel Search
XEP-0394Message MarkupReceive-only; takes precedence over XEP-0393
XEP-0413Order-ByNewest-first ordering for pubsub MAM queries
XEP-0434Trust MessagesEncrypted (OMEMO+SCE), batched key-owners, sender auth gating
XEP-0441MAM Preferences/mam prefs — view and set archiving policy
XEP-0442Pubsub MAMFetch feed history via MAM with RSM cursor persistence
XEP-0444Message Reactions
XEP-0447Stateless File Sharing
XEP-0448Encrypted File SharingAES-256-GCM encrypt/decrypt for OMEMO channels
XEP-0450Automatic Trust ManagementTOFU + manual trust (/omemo approve//omemo distrust//omemo fingerprint) via XEP-0434
XEP-0452MUC Mention NotificationsReceive missed @mention notifications from MUC service
XEP-0461Message Replies
XEP-0466Ephemeral Messages/ephemeral <seconds> <text> — auto-tombstone after timer
XEP-0472PubSub Social Feed
XEP-0490Message Displayed SynchronizationSync read state across own devices
XEP-0492Chat Notification Settings/notify [jid] [always|on-mention|never]
XEP-0511OpenGraph Link Previews