Calab · open source · on your server

Voice, chat and screen sharing for your team

A team messenger that lives on your server: voice rooms, Telegram-style chat, screen sharing. One docker compose up, no external services and no per-seat subscriptions. Written by AI from the first line.

  • Source on GitHub
  • macOS · Windows · Linux · Web
  • Written by AI
Calab: a voice room with members and a live stream next to the team chat

This is Calab: the desktop app and the web version share one codebase

Voice

Join a room and hear your team right away

Discord-style rooms: members and speakers are visible right in the room list, one-click join, call timer. No "schedule a meeting" and no hour-long links.

  • Push-to-talk or voice activationAny key, including Caps Lock and side mouse buttons; threshold and hysteresis are adjustable.
  • Clean audio without external servicesAEC3 echo cancellation and RNNoise noise suppression run on the device.
  • One-click moderationServer-side mute, drag-and-drop members between rooms, stop someone else's stream.
0.1 kbps
traffic in silence
30–45 kbps
while speaking
20–30
people in voice
Calab onboarding: choosing between voice activation and push-to-talk
Screen sharing

Share your screen and keep the text sharp

A Discord-style picker: apps and screens with previews, presets "Economy · 720p · 1080p · Original", a "Text / Video" mode and system audio where the OS allows it.

  • AV1 + simulcastViewers receive only the layer they actually see; a layer nobody watches is not encoded.
  • Up to three streams per roomA tile in the chat corner, expanded view, a separate window for a second monitor, a "N watching" counter.
  • WebcamA grid of tiles or a small window over the chat, pin someone large with a click, a camera limit per room.
AV1
codec with simulcast
20–300 kbps
for code or documents
3
streams per room
Screen sharing in a Calab voice room: expanded screen of a member and the viewer list
Chat and direct messages

A chat nobody has to learn

Telegram-style bubbles: quoted replies, reactions, mentions, pinned messages, delivery ticks. Files by drag-and-drop or from the clipboard, link and image previews.

  • Search with morphologyWithin a room or across the whole space, plus ⌘K quick switch between rooms, members and messages.
  • Direct messagesA separate section with an unread counter and the same feed as in rooms: files, reactions, pins.
  • Mobile versionA single-column web client: rooms in a drawer, voice and push-to-talk at the bottom, installable on the phone's home screen.
@mentionsreactionspinslink previewssearchper-room notifications
Direct messages in Calab: the conversation list and a dialog with attachments and reactions
Under the hood

Built for teams with an admin, not a DevOps department

Everything you need in one docker compose: Caddy, LiveKit, a Go API, PostgreSQL and Valkey. No external services.

Spaces and permissions

Owner / admin / member / guest roles and 14 permission bits with per-room overrides: write, files, speak, stream, moderate.

Guests by link

A person types a name and lands in the conversation without signing up, seeing only that room. An admin can turn a guest into a member.

Works behind firewalls

UDP → TCP → TURN/TLS on 443 automatically. One public IP, verified from behind VPNs and corporate proxies.

Secure by default

Media over DTLS-SRTP, API over HTTPS/WSS with HSTS and a strict CSP, argon2id, refresh-token rotation, rate limits on login and uploads.

Lossless reconnection

A gateway with event sequencing and RESUME: recovery after laptop sleep or a dropped network, idempotent sending.

Operations

Hardened containers, Let's Encrypt certificates, daily backups with verified restore, Prometheus metrics, client auto-updates served from your own server.

Written by AI

GitHub issues are solved by AI. A human only approves

Calab was written by models from the first line: architecture, code, tests, documentation and the changelog. The same pipeline handles user requests, with a single manual step: approval, so nobody can make the AI harm the project.

GitHub Issues
Execution plan

Cause: Caps Lock is read through the layout, not as a physical key

Change: apps/desktop → hotkeys, read the key code directly

Checks: typecheck, unit, e2e:visual -g settings on three layouts

Risk: low, affects macOS only

Approve execution
Review the plan before starting the agent
Approve and run
Pull request #8 · fix/ptt-capslock-layouts

✓ typecheck · lint · unit

✓ e2e:visual -g settings — 3 of 3

✓ CI: buf lint, go vet, generated code drift check

→ Calab 0.3.1 · changelog updated, builds published

The AI replies inside the issue: cause, plan, estimate.

The plan is tied to the project's docs, not to guesses.

Without approval the agent does not touch the code.

That is how five versions shipped on day one.

Custom development

Your team needs a feature: with a vendor and with Calab

Cloud messengerclosed source
Request

Email to support

Estimate

A quarter in the vendor's backlog

Development

Only if it fits their plans

Verification

Wait for a release for everyone

Outcome

Maybe in a year

Calabopen source + AI
Request

Issue on GitHub

Estimate

AI plan within minutes

Development

Human approves, agent codes

Verification

Tests and review in CI

Outcome

PR and release in days, not quarters

Changes for your processes, such as SSO, integrations, branding or your own infrastructure, are delivered under a GPTunneL commercial licence.

Comparison

Calab versus cloud messengers

CalabDiscord, Slack, Zoomcloud
Where the data livesOn your serverIn the vendor's cloud
SubscriptionsNone: your server, licence on requestMonthly, usually per user
Source codeOpen on GitHubClosed
Custom changesIssue → AI → PROnly from the vendor's roadmap
Voice and streamingRooms, push-to-talk, AV1 streamsAvailable
Air-gapped networkYes, one public IPNo
GuestsBy link, no sign-upDepends on the service

Non-commercial use of Calab is free; commercial use requires a GPTunneL licence.

Your own server

Three commands to a working messenger

You need a Linux host with a public IP, Docker with Compose and a domain with A records for app, rtc and turn.

git clone https://github.com/itrcz/calab.git && cd calab
Step 1

Clone the repository

cp infra/docker/.env.example infra/docker/.env
Step 2

Fill in the domain and secrets

Every variable is described in the file's comments.

infra/docker/deploy.sh
Step 3

Bring the stack up

Caddy, LiveKit, API, PostgreSQL and Valkey. Let's Encrypt certificates are issued automatically.

Ports: 80/443 TCP, 443 UDP, 7881 TCP, 7882 UDP. The first registered user becomes the server owner, everyone else joins by invite. Builds for macOS, Windows and Linux are served from your own server at app.<domain>/download.

Deployment guide
For business

We adapt it to your processes

Open source plus an AI pipeline means "custom" is not a quarter of development but an agreed plan and a few days.

Your own perimeter

We deploy on your servers or inside a closed network, migrate data, set up backups and monitoring.

Integrations

SSO and OIDC, bots and webhooks, connections to your CRM, trackers and knowledge bases.

Branding

Name, logo, domain and your own app builds under your brand.

Support

Updates from your server, restores from backups, a contract and closing documents.

FAQ

Questions about Calab

Yes, from the first line: the architecture, the Go server, the Electron client, tests, documentation and the changelog. A human sets the tasks, makes the architectural decisions and approves execution. Every decision is recorded as an ADR in the repository, next to the version history.
Request

Need Calab for your team?

A commercial licence, deployment inside your perimeter, custom changes and support: leave your details and we will reply within one business day.

What are you interested in?

Set up your own messenger in an evening

The code is open, the server comes up with one command, and changes are made by AI under human supervision.

  • Voice, chat and screen sharing on your server
  • Free for personal and non-commercial use
  • GitHub issues instead of vendor tickets