Murmur speaks XMPP and uses these standards from the XMPP Standards Foundation:
Nothing yet. Click a preview in a chat to keep it here.
When the limit is reached, the oldest images are removed to make room.
Checking that other computers can reach your links…
This is usually the macOS firewall blocking incoming connections for this app. To allow it:
), and set it to Allow incoming connections.Or in Terminal:
If you rebuild the app, macOS may ask again. If your computer is on a different network from the people you're sharing with, a local address can't be reached at all: use a public address below instead.
Useful if your computer's address changes, or you reach it through a hostname or reverse proxy. If you're on a different network, other people can't reach a local address.
Links point at this server, so anyone you send one to can open it.
Only people with permission in the room can change it; the room tells you if you can't.
Applies to this room only.
Nothing matches.
No messages found.
Type at least two letters.
A Jabber server doesn't tell other people where someone's connection comes from. What each device reports about itself is shown here.
This room hides real addresses, so aliases and blocking aren't available for this person.
Their server shared nothing else about them.
Aliases are private to you and win over names from your contact list or the company directory.
No rooms match.
Images are cropped to a square and shared with your contacts. The account must be online.
The password is stored in your macOS keychain, never in the config file.
You're signed in as . Your settings, contacts, aliases and history belong to this account only. To use a different Jabber account, sign out and sign in again.
No accounts yet.
Do-not-disturb silences alerts except for watch rules marked urgent.
How much each room may alert you. This applies at once; it doesn't wait for Save.
You haven't joined any rooms yet.
Rules watch incoming messages. When one matches, it can pop up an alert, play a sound, highlight the message, add it to your Alerts list, or reply for you.
Click an example to use it. Matching ignores upper/lower case unless a case-sensitive option is ticked. (Go regex: no lookahead or back-references.)
No rules yet. Try one that watches for “urgent” or “deploy failed”.
Murmur
This build can tell you an update exists but can't install it (a development build, or built without the release signing key). Download the new version from your distribution point.
Updates are signed. Murmur checks the signature and checksum before replacing itself and keeps the previous copy next to it until the next start. Save settings after changing the address.
Links to images on these hosts get a preview in chat. This app downloads the image for you, so the other site never sees your address. Clicking a preview opens it full size and keeps it in Attachments. Nothing is fetched from hosts that aren't listed (https only).
Pinned attachments never expire. Previews you don't click are removed after two days.
With a service set, links are handed to it instead of being fetched here: it answers with the title, picture and details. Use this for sites that block simple fetching (shops, property portals).
Only public internet addresses are ever fetched. Local and private addresses are always refused. Messages from bots and automated feeds, and anything older than three days, are not previewed.
Switch on the kinds of value you want to be clickable in chat and in output boxes. Clicking one offers lookups (and Copy). Nothing is sent anywhere until you choose a lookup.
Organisation-specific links belong in an add-on file (see README). When what you type matches a pattern, a small card appears above the message box. The first (…) group is the value, e.g. ticket\D{0,24}(\d{6,9}). Link template: https://helpdesk.example.com/t/{value}.
Bots and notifications can be kept out of the conversation and collected in an “Automated” section above it, with a count, a quick look, and an optional AI summary. Automated messages never trigger regular alerts (watch rules still can). Tip: hover any room message and click the robot icon to add its sender here.
Mark a contact with the bot button in the contact list, or add an address here. Their messages are drawn smaller and lighter. For a room participant use room@conference.example.org/nick.
Click an example to use it. Matching ignores upper/lower case unless a case-sensitive option is ticked. (Go regex: no lookahead or back-references.)
Click an example to use it. Matching ignores upper/lower case unless a case-sensitive option is ticked. (Go regex: no lookahead or back-references.)
Click an example to use it. Matching ignores upper/lower case unless a case-sensitive option is ticked. (Go regex: no lookahead or back-references.)
No feeds yet.
Cleaned every 10 minutes. Finished Alerts go after a day, and resolved automated messages after an hour. Messages that appeared in the chat are never removed.
Favorites sit at the top of your contact list. When one of them writes, their tab turns into a glowing star until you read it, even in rooms you've muted. Star a contact in the list to add them; a rule here can match several people at once. Matching looks at their name, nickname and address.
Nobody yet. Add your manager, an on-call lead, or anyone whose messages you can't miss.
Uses a model running on this Mac (Ollama or LM Studio). Transcripts are only ever sent to a local address, never to the internet.
/summarize 12 hours — summarize the last 12 hours (minutes, hours, days; default 24 hours)/summarize 2 days focus on the deploy — summarize with a focus/ask 6 hours what did Bob decide? — answer a question from the transcript/summarize feed 12 hours — summarize only the automated messagesRead receipts: this client doesn't send or show “delivered” or “read” confirmations.
Blocked people can't message you or see when you're online. You can block a person from their info card, or add an address (or a whole domain like spam.example) here. If your server doesn't support blocking, messages are ignored on this device only.
You haven't blocked anyone.
Rules, automated-message feeds, favorites, aliases, pins, saved items and preferences. Passwords are never included. Handy for moving to another computer or for sharing a rule set.
No people file found. Put a people.csv (email,name per line) in the folder you start the app from, or start it with -directory FILE, and real names will appear everywhere automatically.
Open a conversation and use the button in its header to export it as Markdown, plain text or JSON. Exports include everything stored for that chat, not just what is on screen.
One .zip with your settings, saved chat history and profile pictures. History keeps its current storage mode: encrypted history requires its passphrase; unencrypted history is readable in the zip.
Download backupTo restore: quit the app, copy the backup's files into , then start it again.
Keep a copy of your conversations on this Mac so they're here next time, and so /summarize can look further back. Choose encrypted storage with a passphrase, or readable unencrypted storage.
Anyone with access to the data files or backups can read unencrypted history.
Saved on this server, encrypted with a key made from your sign-in password, so it unlocks by itself each time you sign in. If you change your password you'll be asked once for the old one to read older history.
Change storage mode while keeping all saved messages. Unlock encrypted history before converting it. Existing exports and backups keep their original format.
Conversion removes the previous files, but cannot erase copies in backups or guarantee secure deletion from disk.
Forgot your passphrase, or want to start over? This permanently deletes all saved history and the key, then lets you choose a new passphrase. It can't be undone.
You can only catch up on what your server kept for you: messages sent while you were offline and each room's recent history. Turn on saved history to keep more.
Favorites keep their existing order. Name sorting uses the display name; for names without a comma, the last word is treated as the last name.
Other messages show as plain text, so a line like “# not a heading” stays as typed. Messages you send with the M↓ button or a leading /md are marked as Markdown for people using this client; everyone else just sees the text.