Atrium is open-source team chat with a quiet, Linear-style interface. Channels, threads, apps, federation, and a Mac app — self-hosted on one box, with no database to run.
Node ≥ 22.5 · npm install && npm start · that's the whole install
Everything a team needs
The full chat surface — without the noise, and without a fleet of services underneath.
Public & private channels, group DMs, threads, reactions, pins, saved items — starred and muted views of it all.
Bot tokens, incoming webhooks, slash commands, and HMAC-signed events. Build bots and agents on the same API users get.
Full-text search with filters, highlighted snippets, and jump-to-message.
A native-window shell with dock badges and notifications — pointed at any Atrium server you like.
Reviewed, tested, and documented — hardened before it was ever public.
A platform, not just a product
Everything the client can do, your code can do. No separate “app platform” — one API, one token model.
# post from your deploy pipeline $ curl -X POST https://chat.example.com/hooks/$TOKEN \ -H 'Content-Type: application/json' \ -d '{"text":"Deploy to prod finished ✅"}' # or drive the API as a bot $ curl https://chat.example.com/api/v1/channels/$CH/messages \ -H "Authorization: Bearer xatb-…" \ -d '{"text":"bot speaking"}' 201 ✓ delivered
Slack Connect, but yours
Every Atrium server is sovereign. Connect two of them with a single-use invite code, and workspaces can share channels and DM across the wire — signed, rate-limited, and revocable.
HMAC-signed relay · single-use invite · revocable at either end
One channel, two servers. Messages relay both ways with per-server identity intact.
Message people on federated servers directly — no shared account, no shared database.
Either side can sever the link at any time. Signing keys rotate; history stays local.
Deploy
Atrium ships as a single Node process with SQLite built in. No Postgres, no Redis, no SMTP, no build step. A €5 VPS and a domain is the whole bill.
Any 1 vCPU / 1 GB VPS, or a container host. Ubuntu 24.04 works out of the gate.
One A record. Caddy issues TLS automatically — federation requires it.
docker compose up -d or npm install && npm start. Migrations run at boot.
Open the URL: setup wizard, then create a workspace or join with an invite link.
$ git clone https://github.com/atrium/atrium && cd atrium $ npm install && npm start ✓ migrations applied — sqlite at ./data/atrium.db ✓ atrium listening on https://chat.example.com — that's it. no database server, no build step.
Node ≥ 22.5 or Docker · persistent disk for ./data · TLS for public use · a domain (or a free PaaS subdomain)
Database server · SMTP / email provider · object storage · build tooling · license server
Fork it, host it, build on it. Your server, your data, your rules — MIT licensed.