Cooperative chat & messaging tools you can self-host. A public shelf over the FOSS chat catalog — 19 self-hostable open-source messaging tools across team chat, Matrix, XMPP, peer-to-peer and video & voice — plus the 2 chat instances already running in this lab. Not products to buy, but software to run, own and adapt.
catalog.foss.systems — INgest, don't duplicate: it points, the upstreams own the code.
Every card is a self-hostable FOSS chat or messaging tool from
catalog.foss.systems/chat — grouped by how you talk. The first group,
running in this lab, points at the two chat services already live here;
the rest point out at each project's own homepage or repository. Nothing
here is embedded or owned. Pick one, run it yourself.
Chat instances already running live in this lab
Full team-chat platform (channels, threads, DMs, voice/video, integrations) running live in this lab at chat.labs.ooo. Community server core is MIT.
Federated Matrix homeserver with the Element web client, running live in this lab at element.labs.ooo. Decentralised, end-to-end-encrypted messaging.
Self-hosted team / community chat (Slack- and Discord-style)
Self-hosted Slack-style team messaging with channels, threads, integrations and playbooks. Team Edition core is AGPL-3.0 (enterprise dir is non-FOSS).
Threaded team chat organised by topics inside streams, keeping large conversations readable; fully self-hostable server.
Self-hostable Discord-style chat with servers, channels, roles and voice. Formerly Revolt; the project rebranded to Stoat (stoatchat org).
Matrix homeservers and native calling
Reference Matrix homeserver — the federated, end-to-end-encrypted backend you run to host your own Matrix identity and rooms.
Second-generation Matrix homeserver written in Go — lighter-weight alternative to Synapse for smaller self-hosted deployments.
Native Matrix group video and voice calling (MatrixRTC) you can self-host alongside a homeserver; end-to-end encrypted.
XMPP servers and clients (federated, standards-based)
Lightweight, extensible XMPP server in Lua — easy to run for federated instant messaging, groupchat and presence.
Battle-tested, massively scalable Erlang XMPP/MQTT/SIP server; the community edition is GPL-2.0 and fully self-hostable.
Opinionated, easy-to-self-host XMPP distribution (Prosody + apps) packaged for simple, private group messaging for families and communities.
Web-based social and group-chat front end for XMPP — a modern browser client you host to talk to any XMPP server.
Polished, battery-friendly XMPP chat client for Android with OMEMO end-to-end encryption. Canonical repo now on Codeberg.
Peer-to-peer and privacy-first secure messengers
Messaging with no user identifiers at all — privacy-first, no phone number or account; you can run your own SMP/XFTP relays.
Chat over email/chatmail infrastructure with autocrypt end-to-end encryption — no central chat server needed; the core is MPL-2.0.
Fully peer-to-peer, serverless messaging and video calling built on a distributed hash table — no accounts, no central infrastructure.
Distributed, encrypted peer-to-peer messaging protocol and core library; no central servers — the network is the users themselves.
Cross-platform desktop client for the Tox P2P network (the maintained TokTok successor to the archived qTox/qTox) with chat, file transfer and calls.
Self-hosted video and voice conferencing
Self-hostable, browser-based group video conferencing — no account needed, screen sharing, recording and end-to-end encryption.
Chat, voice and video calling inside Nextcloud — private, self-hosted conversations and web meetings; runs as an app on a Nextcloud instance.
Low-latency, high-quality voice chat server and client (mumble-server / murmur) originally built for gaming; simple to self-host.
This page is thin by construction. A portal is render(iCatalog, lens=<category>) — one shared catalog, filtered to a single category and drawn as a shelf. Point the chat lens at the catalog and you get this. Point a different lens and you get agents, cal, maps or task. Same move, different filter.
It lives at rooms.labs.ooo rather than the bare
chat.labs.ooo on purpose: that name is already a running
Rocket.Chat instance, and a shelf must never evict a live service. So the
two apps already talking in this lab — Rocket.Chat and
Matrix / Element — are the shelf's honest first group, linked as the
real sovereign instances they are.
One catalog, many category renderings — the shelf is data, not a bespoke app.
A portal = render(iCatalog, lens). The chat shelf is not an exception to that rule — it is the rule, filtered to lens=chat, with the lab's own running rooms as its first shelf.