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).
| XEP | Name | Notes |
|---|---|---|
| XEP-0030 | Service Discovery | |
| XEP-0045 | Multi-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-0048 | Bookmarks | |
| XEP-0050 | Ad-Hoc Commands | |
| XEP-0054 | vcard-temp | |
| XEP-0059 | Result Set Management | RSM paging for MAM and PubSub |
| XEP-0060 | Publish-Subscribe | |
| XEP-0066 | Out of Band Data | |
| XEP-0071 | XHTML-IM | Rendered with WeeChat color codes |
| XEP-0077 | In-Band Registration | |
| XEP-0084 | User Avatar | |
| XEP-0085 | Chat State Notifications | |
| XEP-0107 | User Mood | |
| XEP-0108 | User Activity | |
| XEP-0115 | Entity Capabilities | |
| XEP-0153 | vCard-Based Avatars | |
| XEP-0184 | Message Delivery Receipts | |
| XEP-0191 | Blocking Command | |
| XEP-0198 | Stream Management | |
| XEP-0199 | XMPP Ping | |
| XEP-0224 | Attention | |
| XEP-0245 | /me Command | |
| XEP-0249 | Direct MUC Invitations | |
| XEP-0277 | Microblogging over XMPP | |
| XEP-0292 | vCard4 over XMPP | |
| XEP-0308 | Last Message Correction | |
| XEP-0313 | Message Archive Management | |
| XEP-0333 | Displayed Markers | |
| XEP-0363 | HTTP File Upload | |
| XEP-0372 | References | |
| XEP-0382 | Spoiler Messages | |
| XEP-0384 | OMEMO Encryption | legacy axolotl only (no OMEMO:2) |
| XEP-0393 | Message Styling | |
| XEP-0402 | PEP Native Bookmarks | |
| XEP-0410 | MUC Self-Ping | |
| XEP-0424 | Message Retraction | |
| XEP-0425 | Message Moderation | |
| XEP-0428 | Fallback Indication | |
| XEP-0433 | Extended Channel Search | |
| XEP-0394 | Message Markup | Receive-only; takes precedence over XEP-0393 |
| XEP-0413 | Order-By | Newest-first ordering for pubsub MAM queries |
| XEP-0437 | Room Activity Indicators | Subscribe on connect; activity notifications in account buffer |
| XEP-0441 | MAM Preferences | /mam prefs — view and set archiving policy |
| XEP-0442 | Pubsub MAM | Fetch feed history via MAM with RSM cursor persistence |
| XEP-0444 | Message Reactions | |
| XEP-0231 | Bits of Binary | Receive: inline urn:xmpp:bob + XHTML-IM cid IQ-fetch; send: plaintext /upload images ≤8 KiB; caps + IQ hosting |
| XEP-0447 | Stateless File Sharing | |
| XEP-0448 | Encrypted File Sharing | AES-256-GCM encrypt/decrypt for OMEMO channels |
| XEP-0449 | Stickers | Receive with SFS payloads; inline via icat |
| XEP-0452 | MUC Mention Notifications | Receive missed @mention notifications from MUC service |
| XEP-0461 | Message Replies | |
| XEP-0466 | Ephemeral Messages | /ephemeral <seconds> <text> — auto-tombstone after timer |
| XEP-0472 | PubSub Social Feed | |
| XEP-0490 | Message Displayed Synchronization | Sync read state across own devices |
| XEP-0492 | Chat Notification Settings | /notify [jid] [always|on-mention|never] |
| XEP-0511 | OpenGraph Link Previews | |
| XEP-0514 | Emoji Markup | Custom 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
Support on Ko-fi