rooms.labs.ooo · the chat shelf

rooms.labs.ooo

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.

A promotion surface over catalog.foss.systems — INgest, don't duplicate: it points, the upstreams own the code.

The shelf — 21 chat tools

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.


How it works

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.

POINT, DON'T OWN

INgest, not duplicate

The upstream projects own the chat-server code. This surface holds a pointer + a render — source links resolve to each project's own repo or to the live instance.

ONE GENERATOR

render(iCatalog, lens)

The same builder that emits agent.labs.ooo and task.labs.ooo emits this. Change the lens filter, get another category portal.

RUNNING, NOT JUST LISTED

two live instances

chat.labs.ooo (Rocket.Chat) and element.labs.ooo (Matrix) are not screenshots — they are sovereign services in this lab, linked from their own category door.

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.