Slack owns your community, Discord owns your gaming guild, and Teams owns your 9-to-5. Matrix is the federated alternative — an open protocol where anyone can run a homeserver, and every homeserver can talk to every other one. If you self-host anything, Matrix is worth a second look: it is one of the few chat platforms where you can own the infrastructure, exactly like you own your mail server, your Git forge, or your Kubernetes cluster.
But there is a practical problem nobody warns you about: discovery. On Slack, someone hands you an invite. On Matrix, thousands of public rooms exist across thousands of servers, and finding the good ones is a skill of its own. This is a field report from a recent exploration — what I queried, what worked, what returned 401, and the rooms that were actually worth the join.
Matrix rooms are addressed by IDs like !qzQdMjBmbTeiKynXFz:kde.org (opaque)
or, more usefully, by canonical aliases like #kde:kde.org (human-readable,
with the homeserver domain as suffix). Any account on any homeserver can join
any public room via federation — you don't need an account per community.
Every homeserver exposes its view of the public room directory through the Client-Server API:
GET /_matrix/client/v3/publicRooms?limit=50
This returns a paginated chunk of rooms with name, alias, topic, member count,
and room_type (regular rooms vs. spaces — spaces are collections of rooms,
and the interesting ones hide their best content in sub-spaces).
Anonymous room discovery: unauthenticated GET requests paginate the directory, local filtering replaces the locked-down search endpoint, and federation delivers the room to any homeserver
I crawled several homeservers to compare their directories. The results were instructive:
The good: GET /publicRooms works without authentication on major
homeservers. One community-run server (tchncs.de) exposed 1,472 unique
public rooms including everything federated through it — a much richer view
than matrix.org's own directory.
The limiting: matrix.org caps anonymous pagination at roughly the top hundred rooms, sorted by member count. The long tail is invisible without an account.
The surprise: the search endpoint (POST /publicRooms with a
generic_search_term filter) returns 401 Unauthorized without a token on
every homeserver I tested — matrix.org, tchncs.de, devhack.net. Per spec,
authentication for this endpoint is optional, but in practice everyone has
disabled anonymous search, presumably to prevent scraping.
The practical takeaway: if you want to explore Matrix before creating an account, plain GET requests against a community homeserver's directory are your best tool:
import json, urllib.request
url = "https://matrix.tchncs.de/_matrix/client/v3/publicRooms?limit=200"
rooms, since = [], None
while True:
with urllib.request.urlopen(url + (f"&since={since}" if since else "")) as r:
data = json.load(r)
rooms += data["chunk"]
since = data.get("next_batch")
if not since:
break
Twenty-five lines and you have a local copy of a federated room directory to grep through. That is the whole discovery stack — no SDK, no auth dance.
Filtering by member count and topic, these stood out for DevOps and self-hosting readers:
| Room | Members | Why |
|---|---|---|
#community:matrix.org | 35,400 | The Matrix space itself — spec, clients, bridges live in sub-rooms |
#kde:kde.org | 7,900 | KDE user help; state your distro and Plasma version |
#matrix:matrix.org | 7,300 | Official Matrix HQ, developers are actually in here |
#element-web:matrix.org | 3,300 | Element Web/Desktop release chatter |
#proxmox:codestorm.net | 2,300 | Unofficial but active Proxmox VE community |
#fractal:gnome.org | 2,100 | GNOME's Matrix client |
#homelabbing:codestorm.net | 1,800 | Self-hosting and homelab general chat |
#twim:matrix.org | 1,600 | "This Week in Matrix" — the ecosystem's changelog as conversation |
#opnsense:codestorm.net | 1,100 | OPNsense firewall community |
#obsidian:matrix.org | 1,050 | Knowledge management |
#cprogramming:matrix.org | 1,000 | C questions, surprisingly civil |
#calibre:mailstation.de | 1,250 | E-book management |
#videogames:zirco.dev | 2,400 | All things video games |
Two community clusters deserve special mention:
hackliberty.org is a whole cypherpunk space with 26,000 members across rooms like #cypherpunks, #anon, #wireless-hacking, and #ai. The flavor is heavy — part privacy engineering, part crypto-adjacent — but the technical discussions in #wireless-hacking are genuinely interesting if you are into SDR and radio.
The bridged-room caveat: a large share of high-member-count rooms are
Discord bridges (look for names like #_discord_...:opensuse.org). They work
fine for reading, but edits duplicate, threads flatten, and features like
polls don't cross the bridge. Join with reduced expectations.
Since federation is the point, your account's homeserver matters less than people fear — any server reaches every public room. Still, three tiers exist:
docker-compose.yml away (conduwuit/tuwunel if you want something
lighter than Synapse). SSO via OIDC against Keycloak works well if you
already have it for other services — I documented that setup in the
openDesk context. The real cost of self-hosting Matrix is not the server;
it is backups, upgrades, and room state growth. Plan for all three.GET is free, POST costs auth. Anonymous directory reads work; anonymous search does not. Design your exploration around pagination, not search.
Different homeservers, different views. A community server's directory exposed 15× more rooms than matrix.org's anonymous view of the same network. Federation means every server sees the network from its own angle.
Anonymous directory reach: matrix.org exposes 93 public rooms without an account, community server tchncs.de exposes 1,472 from the same federated network
Member count is a quality signal only in one direction. 20,000 members can mean 20,000 people chatting — or one RSS feed bot. Read the topic.
Spaces beat rooms for discovery. #community:matrix.org looks like one
room but is a tree. Most projects keep their real rooms inside a space.
Matrix's discovery problem is really a documentation problem: the tools are already there, one HTTP GET away. Crawl a community directory, filter by topic, join through federation from wherever your account lives — and if the mood strikes, point a Synapse container at your existing OIDC provider and become someone else's federated neighbor.
All member counts from October 2026, queried live via
/_matrix/client/v3/publicRooms.