Mattermost vs Rocket.Chat vs Zulip vs Dock: self-hosted chat compared
How the best-known self-hosted team chat tools differ in message model, setup effort and what is bundled, with advice on choosing.

The short answer
All four can run on your own server. Mattermost feels closest to Slack and leans on integrations. Rocket.Chat reaches many outside channels such as web chat. Zulip organises talk by topic, which suits long discussions. Dock is a workspace: chat plus meetings, docs, tasks and AI agents in one app.
Licences and editions change often. Confirm what is free and what is a paid edition on each project's own site before you decide. We do not quote prices.
Side by side
| Mattermost | Rocket.Chat | Zulip | Dock | |
|---|---|---|---|---|
| Message model | Channels and threads | Channels and threads | Streams and topics | Channels and threads |
| Known for | Slack-like feel, integrations | Many external channels | Topic threading | All-in-one team workspace |
| Beyond chat | Plugins and integrations | Omnichannel features | Chat-focused | Meetings, docs, tables, tasks, drive, AI agents |
| Setup | Check the install docs | Check the install docs | Check the install docs | One Node process, one SQLite file |
| Watch out for | Some features in paid editions | More to operate | A different habit from channels | Younger; smaller integration list |
How to choose
Do you want topics or channels?
If your team writes long, careful threads, try Zulip. If you want a Slack feel, try Mattermost or Dock.
Do you also need meetings and docs?
A workspace avoids paying for and running separate tools.
Do you need many outside channels?
Rocket.Chat is built for that.
Who runs the server?
Count the services you must patch and back up.
Where Dock fits
Dock is a self-hosted team workspace for small teams. It has channels and DMs with threads and search, video meetings in the same app (with recording, transcripts and AI summaries), real-time docs, tables, calendar, tasks and a drive. An MCP server lets AI agents such as Claude Code read and post in your channels, and there is a Lark history import.
It runs as one Node process with one SQLite file, so backups and moves are copying a file. There is no per-seat licence; your cost is your own server. You run the server yourself, and the integration list is smaller than the big hosted tools. Read the head-to-heads: Dock vs Mattermost, Dock vs Rocket.Chat and Dock vs Zulip.
What makes Dock different: it connects to your tools
Dock connects the places your team already works. Notion: connect your Notion pages, then type @notionpage_ in any chat to tag a page; everyone gets a preview card and your AI agents can read it. GitHub: link GitHub read-only, pin repositories to a chat, tag them with @github_ and ask the AI about them. Claude and Codex: use your own Claude or Codex plan inside Dock chats, or connect any MCP agent to your workspace with a token.
All of this sits next to chat, video meetings (with recording, transcripts and AI summaries), docs, tables, calendar, tasks and a drive, in a self-hosted app with no per-seat licence. You run the server yourself, and some integrations are young, so check the setup guides for what each one covers.
Questions
Which self-hosted chat is easiest to run?
Fewer moving parts is easier. Dock runs as one process with one database file; check each project's install docs for the others.
Which is best for a small team?
The one that matches your habits. Run two for a week with a real project.
Do any of them have AI agent access?
Support varies. Dock has an MCP server and Claude and Codex integrations; check the others' docs.