Native XMPP desktop messenger — pure Rust using iced.
ReXisCe (pronunciation: /ˈʁe.xiʃ.se/ — "ré-xis-sê")
The name comes from the acronym RXC (R → Rust, X → XMPP, C → Client), transformed into a pronounceable word:
- Re — "R" (pronunciado "ré" em português)
- Xis — "X" (pronunciado "xis" em português)
- Ce — "C" (pronunciado "sê" em português)
This solves a common problem: pure acronyms are hard to speak. ReXisCe turns the abbreviation into a name.
| Item | Name |
|---|---|
| Project | ReXisCe |
| Meaning | Rust XMPP Client |
| CLI binary | rexisce |
| Lib crate | rexisce |
| Config dir | ~/.config/rexisce/ |
- Rust 1.80+ —
rustup update stable - Linux:
sudo apt install libdbus-1-dev pkg-config libssl-dev - macOS / Windows: no extra deps
git clone https://github.com/owner/rexisce
cd rexisce
make runThat's it. The first run compiles everything and opens the app.
make setup # update Rust toolchain
make run # compile (debug) and run
make build # compile release binary → target/release/rexisce
make run-release # compile release and run
make test # run the full test suite
make lint # clippy (warnings = errors)
make fmt # auto-format source files
make clean # delete build artifactsFor verbose XMPP logging:
RUST_LOG=rexisce=debug make runThe tests/critical_flows.rs file covers end-to-end flows across modules (login → connect, MAM catchup, presence transitions, blocking, etc.):
make test-integration| Layer | Crate |
|---|---|
| GUI | iced 0.13 |
| XMPP | tokio-xmpp + xmpp-parsers |
| Async | tokio |
| TLS | rustls |
| Storage | SQLite via sqlx |
| Keychain | keyring |
| i18n | fluent-rs |
| Notifications | notify-rust |
- XEP-0030 — Service Discovery
- XEP-0115 — Entity Capabilities (CAPS)
- XEP-0153 — vCard-Based Avatar
- XEP-0191 — Simple Communications Blocking
- XEP-0198 — Stream Management
- XEP-0245 — /me Command in Chat Messages
- XEP-0280 — Message Carbons
- XEP-0313 — Message Archive Management (MAM)
- XEP-0363 — HTTP File Upload
- XEP-0079 — Advanced Message Processing (AMP)
- XEP-0085 — Chat State Notifications (typing indicators)
- XEP-0184 — Message Delivery Receipts
- XEP-0245 — /me Actions
- XEP-0308 — Message Correction
- XEP-0333 — Chat Markers (read receipts)
- XEP-0424 — Message Retraction
- XEP-0444 — User Mood
- XEP-0445 — Message Reactions
- XEP-0461 — Reply to Messages
- XEP-0393 — Message Styling
- XEP-0178 — Presence Subscribe (Approved)
- XEP-0252 — Client State Indication (auto-away)
- Custom Status Message
- Delivery Receipts toggle
- Typing Indicators toggle
- Read Markers toggle
- XEP-0084 — PubSub Avatar (PEP metadata)
- XEP-0410 — Self-Ping (MUC keepalive)
- XEP-0352 — Client State Indication (CSI) — outgoing queue priority
- OMEMO (XEP-0440 + Signal-style double ratchet) — end-to-end encryption
- MUC Affiliation Management (bans, admins, owners)
- MUC Role Management (moderator, participant, visitor)
- MUC Room Configuration (data forms)
- MUC Voice Request (request/toggle speaking permission)
- MUC Admin (full)
- XEP-0004 Data Forms Renderer (for ad-hoc commands, room config, registration)
- Privacy Lists (XEP-0016 / XEP-0191 extended)
- Bookmark Sync (XEP-0048 via PepPublish)
- Message Synchronization (XEP-0313 with full sync controls)
- Roster Item Exchange (XEP-0144)
- In-Band Registration (XEP-0077)
- Service Discovery Browser (XEP-0030 extended)
- Personal Event Publishing (XEP-0163 / PEP)
- User Tune (XEP-0118)
- User Location (XEP-0080)
- File Transfer (XEP-0065 + ICE-UDP)
- Audio/Video Calls (Jingle / XEP-0167)
- Multi-account support
- Remember-Me (AUTH-1)
- Account migration/export
- XMPP login (SASL PLAIN / SCRAM-SHA-256, STARTTLS / Direct TLS)
- Contact roster with presence indicators
- 1:1 chat with message history (MAM)
- Group chat / MUC with roles, moderation, bookmarks
- Message corrections, retractions, reactions
- File upload with image thumbnails
- Avatars (vCard-temp + PEP)
- Stream Management / session resumption
- Message Carbons (sync across devices)
- Entity Capabilities + Service Discovery
- Blocking with server-side blocklist
- Ad-Hoc Commands (partial)
- Auto-away after inactivity
- Dark / light theme
- i18n (en-US, pt-BR)
- Desktop notifications
- Privacy toggles (receipts, typing, read markers)
- MAM archiving preferences
- Remember Me (password persistence in keychain)
- macOS, Linux, Windows
See CONTRIBUTING.md.
MIT
Built with vibecoding, using other XMPP clients as reference (Halloy, Dino, Gajim).
