Xepher XMPP plugin for WeeChat — C++23

Download packages View on GitHub Join MUC Documentation Installation Support on Ko-fi
Xepher running in WeeChat showing XMPP chat and microblogging feed

OMEMO Encryption

End-to-end encryption via XEP-0384 using the legacy axolotl namespace only (`eu.siacs.conversations.axolotl`). OMEMO:2 (`urn:xmpp:omemo:2`) is not supported. Works for direct messages and non-anonymous MUCs (multi-recipient). MUC OMEMO is experimental and untested (see docs/planning-muc-omemo.md).

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 — /create (instant + --reserved), IRC-style admin (/kick, /ban, /voice, /devoice, /op, /deop), owner config (/setmodes, /affiliation, /destroy), registration (/mucregister), direct and mediated invites (/invite, /decline), topic, moderation (XEP-0425), reactions (XEP-0444). IRC-style mode display in the status bar (+miP).

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.

BTBV Trust Model

Blind Trust Before Verification TOFU — new devices auto-trusted for first JID, subsequent devices marked UNDECIDED. Manual trust via /omemo trust / /omemo distrust with per-device granularity.

Room Activity Indicators

XEP-0437 — subscribe to MUC activity notifications on connect, display room activity in account buffer when away.

Encrypted File Sharing

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

Inline Images & Stickers

Kitty terminal graphics via vendored icat.py — SFS/SIMS/OOB uploads, XEP-0449 stickers, XEP-0514 custom emoji, and XEP-0231 BoB (cid:…@bob.xmpp.org) for Movim stickers and small plaintext /upload images (≤8 KiB).

Installation

Pre-built packages for Debian, Fedora, Arch, Void, and Alpine are on GitHub Releases (latest: v0.9.0). Use v0.8.1+ — v0.8.0 RPM/APK had a packaging bug.

# Debian/Ubuntu
sudo dpkg -i xepher_0.9.0-1_amd64.deb

# Fedora
sudo dnf install ./xepher-0.9.0-1.fc*.x86_64.rpm

# Arch
sudo pacman -U xepher-0.9.0-1-x86_64.pkg.tar.zst

Or build from source:

git clone --depth 1 git@github.com:ekollof/xepher.git
cd xepher
make install-deps   # detects distro, installs packages
make DEBUG=1        # 123 doctests (plain make skips them)
make install        # installs to ~/.local/share/weechat/plugins/

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

See the Installation wiki page for all platforms, BSD notes, and package details.

Implemented XEPs

Targeting XMPP Compliance Suite 2022 (XEP-0459).

XEPNameNotes
XEP-0030Service Discovery
XEP-0045Multi-User Chat/create (instant + reserved), IRC-style admin (/voice, /op, …), owner config (/setmodes, /affiliation, /destroy), /mucregister, invites (/invite, /decline); partial — no full roomconfig UI
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 Encryptionlegacy axolotl only (no OMEMO:2)
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-0437Room Activity IndicatorsSubscribe on connect; activity notifications in account buffer
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-0231Bits of BinaryReceive: inline urn:xmpp:bob + XHTML-IM cid IQ-fetch; send: plaintext /upload images ≤8 KiB; caps + IQ hosting
XEP-0447Stateless File Sharing
XEP-0448Encrypted File SharingAES-256-GCM encrypt/decrypt for OMEMO channels
XEP-0449StickersReceive with SFS payloads; inline via icat
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
XEP-0514Emoji MarkupCustom emoji spans resolved against SFS/SIMS hashes; icat

Community

The official Xepher MUC is the place to ask questions, share tips, and follow announcements.

JID: xepher@conference.hackerheaven.org · Click to join

From the plugin, once any account is connected: /xmpp enter xepher@conference.hackerheaven.org