Private chat, on a standard nobody owns.

Miluven is an end-to-end encrypted chat app for Android built on XMPP. It works with any XMPP server: the one your family, your employer or your provider gave you, or one you run yourself. Miluven runs none โ€” your account is yours.

๐Ÿ‡ช๐Ÿ‡บ Made in Europe, free software under the GPLv3

Creating a poll in a group chat, voting, and the results after the others have voted
Ask the group. A question, a few options, one tap to vote. Nobody sees who chose what, not even the poll service.

A chat app that keeps to itself

Text, photos, files, voice messages and calls, one to one or in groups. Nothing in it phones home.

End-to-end encrypted

Messages, files and calls are encrypted with OMEMO on your phone before they leave it. Your server relays ciphertext; it cannot read what you write, and neither can anyone in between.

Any server, open standard

XMPP is an open, federated protocol with thousands of independent servers. Sign in with the account you already have or host your own, talk to people on other servers and in other apps, and leave whenever you like.

Polls and task lists in every chat

Ask the group a question with up to ten options, one answer or several, with an optional closing time. Votes are anonymous. Or share a task list: everyone can claim a task and tick it off, and title, tasks and names are encrypted before they reach the service.

Free software

Miluven is a fork of Conversations, released under the GPLv3. No subscriptions, no proprietary SDKs, and the source is published with every release.

See it in action

The first five minutes, recorded with demo accounts on a test server: choose a mode, chat, share a photo, find a GIF. The app looks the same with your own server.

The first-start wizard: choosing between Strict and Normal mode, then the welcome screen
Choose how much the app may talk to. Strict keeps it to your XMPP server; Normal adds polls and GIF search. Then sign in with any XMPP account.
A one-to-one chat: a question arrives, a reply is typed, a message is quoted and answered
Chat like you already know. Delivery ticks, quoting a message to answer it, avatars from your contacts' own profiles.
Sharing a photo: the attachment chooser, Android's photo picker, the picture appearing in the chat
Share a photo in three taps. The Android photo picker only hands the app the pictures you choose; the file goes to your own server.
Searching GIPHY for a GIF from the attachment chooser and sending the chosen one
Find a GIF. Normal mode only, with your own GIPHY key: the search term goes to GIPHY, the GIF you pick travels through your own server like any file.

Bring your own account

Miluven does not run a chat server and does not hand out accounts. On first start you sign in with an XMPP address such as you@example.org and a password. That is all it needs.

No account yet? Disroot, a non-profit in Amsterdam, gives out free XMPP accounts.

Coming from Signal? Read Signal vs Miluven, including where Signal is the better choice.

  • Use the account your family, employer or provider gave you.
  • Or run your own server: any XMPP server with modern extensions works, and you decide what it keeps and for how long.
  • Invite links and QR codes bring contacts and group chats in; a lock icon shows when a conversation is encrypted.
  • Move to a different server or a different app whenever you want. Nothing about Miluven locks you in.

Decide on first start how much the app may talk to

A short wizard asks once. You can switch at any time in Settings.

Strict

Nothing but your server.

Text, photos, files, voice messages and calls. The app connects to your XMPP server and to nothing else, ever.

  • No GIF search
  • No polls
  • No third-party services of any kind

Normal

Two extras, clearly marked.

Everything in Strict, plus polls and GIF search. Each extra talks to exactly one service, and the privacy policy says which.

  • Polls through the Miluven poll service, encrypted
  • GIF search through GIPHY, with your own API key, asked for the first time you use it

A question for the group, without a data trail

Start a poll from the attachment chooser in any chat, one-to-one or group: a question, two to ten options, single or multiple answers, and an optional date and time at which it closes. Everyone in the chat votes from their own app; people on other XMPP clients see the question and a link.

How polls are stored
  • Encrypted on your phone. The question and options are encrypted with AES-256-GCM before they are sent. The key travels only inside the chat message, after the # in the link, and never reaches the poll service.
  • Anonymous votes. The service keeps counts per option and a salted, per-poll voter hash so each person counts once. No names, no addresses, no IP addresses stored with a poll.
  • Gone after 90 days. A poll and its votes are deleted 90 days after creation, closed or not.

Conversations did the hard part

Miluven is built on Conversations, the XMPP app Daniel Gultsch has been developing since 2014. I think it is a great application, and its developer is a genuinely cool person who has kept an open, federated chat app alive and excellent for more than a decade.

I did not want to write yet another chat client. I wanted this one, with a few things added that I kept missing in my own family and group chats: polls, task lists, GIF search, a video player. Not everyone needs those, which is why they are optional and stay off in Strict mode.

Everything else, from the encryption to the calls to the reliability, is Conversations' work. Miluven is a personal addition to it, not a replacement: a fork under the GPLv3 that follows upstream closely. I do not take donations for it. If you want to support the app, support the person who built Conversations.

Built on Conversations: what comes with it

  • End-to-end encryption with OMEMO, or OpenPGP if you prefer it, and encrypted audio and video calls.
  • Everything a chat needs: photos and files, voice messages, your location, emoji reactions, quotes, and an indication when your contact has read your message.
  • Private group chats and public conferences, with bookmarks and moderation for admins.
  • Multiple accounts in one inbox, address-book integration and high-resolution contact photos.
  • Syncs with desktop clients such as Gajim and Dino, and works with any XMPP server that has modern extensions.
  • Light on the battery, with an interface that follows Android's Material Design 3, dynamic colours included.

Made in the Netherlands, with every third party named

Miluven is made in Amersfoort. It is built the way European privacy law expects software to be built: collect nothing you do not need, tell people exactly who gets what, and leave them in control of where their data lives.

Nothing collected

No analytics, no crash reporting, no advertising, no tracking, in the app or on this website. This site sets no cookies. The app only sends what the feature you are using needs.

Your messages stay on your server

They live on the server you chose, under its operator's policy. Miluven never holds your account or your messages. Choose an operator you trust, in the country you prefer, or host it yourself.

Third parties only when you ask

GIF search, polls and task lists are off in Strict mode, and GIF search stays off in Normal mode until you enter your own key. The privacy policy lists each service, what is sent and how to keep everything to your server alone.

Hosted in Amsterdam

The little that Miluven does run, this website and the poll service, runs in the Netherlands (Fly.io region ams).