← Back
itrcz

itrcz/calab

OpenSource team chats and video conferences inspired with Discord, Telegram & Zoom

View on GitHub ↗https://calab.ru ↗
livekitmessagersfustreamingvoipwebrtc
Stars
42
Forks
5
Watchers
42
Open issues
8
Contributors
7
Language
TypeScript
License
Other
Default branch
main
Created Sep 26, 2026Updated Oct 1, 2026

Star growth

Today—
This week—
This month—

Star history will appear here once this repo has been tracked for a couple of days.

README

English · Русский · Español · 简体中文

Calab

Calab

Your whole team in one window: voice rooms, chat, meetings and tasks — on your own server.
Self-hosted voice-first team messenger. macOS · Windows · Linux · Web.

License: BUSL-1.1 CI Electron Go LiveKit calab.ru

Calab during a planning meeting: a shared slide on the stage, participants’ cameras, the workspace rooms


What it is

Calab is a team messenger where voice comes first. Join a room and you hear your colleagues right away; next to it is a Telegram-style chat, a calendar with meetings and Linear-style task boards. Everything runs on your own server: one docker compose, PostgreSQL and LiveKit inside, no external services or subscriptions.

It is built for teams of up to 20–30 people in voice at once and up to 3 screen shares per room. The client is light: 0.05 % CPU outside a call and ≈ 7 % in voice on a MacBook Air M4.

Features

🎙 Voice and video

A one-on-one call in direct messages

  • Voice rooms — one click to join; who is talking is visible right in the room list; room status, timer and member limit.
  • Clean sound — AEC3 echo cancellation and RNNoise noise suppression (no external services), Opus with DTX; voice activation or push-to-talk on any key, even in the background.
  • Musician mode — a personal toggle that turns off echo cancellation, noise suppression and auto gain and switches Opus to a music profile (128 kbps mono / 192 kbps stereo, FEC, no DTX): play an instrument or sing live without the processing eating the sound. Headphones required; others see a guitar icon next to your name. Team and above.
  • Screen sharing in AV1 or hardware H.264 with simulcast — each viewer gets the quality their connection allows; viewers can point and draw on top of the stream.
  • Camera with background blur or a picture (built-in and workspace backgrounds).
  • One-on-one calls in direct messages, with ringing, camera and screen sharing.
  • Meeting recordings — the server records, GPTunneL transcribes; a card with the summary, audio and full transcript arrives in the room chat.
  • Soundboard, moderation (server mute, disconnect, move by drag and drop), statuses.
  • Phone calls (SIP) — connect your own SIP provider and dial a landline or mobile number from a voice room; the callee joins as a participant, everyone sees “Dialling → Ringing → On the call”. Provider settings, a call log, a “Place calls” permission that nobody has by default (ADR-0046).
  • Temporary rooms — a room for an hour or a day with a ready guest link and an optional calendar meeting: a Zoom replacement that disappears by itself (ADR-0044).

💬 Chat

The “general” room: a mockup with reactions, a reply and a sticker

  • Bubbles like Telegram: replies, reactions, forwarding to several chats, stickers, voice messages, files with previews, pins, read ticks.
  • Mentions, per-room notifications, workspace search with morphology, ⌘K quick switcher.
  • Direct messages with an archive; the web app adapts to phones and installs to the home screen.

📅 Calendar and meetings

The day view with a meeting card Find a time for four people
  • A day view with meetings side by side, the meeting card with attendees and answers, the room with a “Go” button, recurring meetings, reminders.
  • Invitations by email with invite.ics — the meeting lands in Apple, Google, Outlook or Yandex calendars; external attendees answer by link and join as guests.
  • Find a time — colleagues’ busy columns, shared free windows and the nearest slots within everyone’s work hours.
  • CalDAV — connect Yandex, iCloud, Fastmail or Nextcloud: your busy time counts, Calab meetings appear there by themselves.

✅ Task boards

The Product board as a kanban

The board timeline The task panel with comments
  • Kanban, list and timeline (Gantt with milestones and a “today” line), in the spirit of Linear, with its keyboard shortcuts.

  • Statuses, priorities, labels, milestones, due dates; several assignees with a lead, subtasks and relations.

  • Comments like chat — reactions, stickers, voice messages — mixed with the change history.

  • Filters, saved views, bulk actions; create a task from any message; a task link unfolds into a card in the chat.

  • Approvals — assign approvers and how many approvals are needed (all or N of M); a task can’t move on until it is approved (ADR-0049).

📝 Notes

Notes shelves

Up to 20 private shelves with your own names and emoji — like Saved Messages in Telegram, only several. Drag messages and files onto a shelf, forward to it, pin and search.

🚪 Guests and approval

A guest waiting for the organizer’s approval

A guest link leads straight into a room — no sign-up. With approval turned on (per room or per link), the guest waits on this screen until the organizer clicks “Let in”.

🧩 Web apps

An admin pins site shortcuts (Grafana, the wiki, the CRM) under the workspace icon in the left rail. A click opens the site full-window inside Calab and the call keeps going; logins are kept separately per app, camera and microphone only with your permission (ADR-0050).

🤖 Bots and SDK

A bot is a member with a token: the same REST and gateway as the app, rights through roles. It reads and writes chat, answers /commands, talks in voice rooms (LiveKit, Node / Python / Go) and works with boards within its rights; events arrive over WebSocket or a webhook with an HMAC signature. Bot API v2 adds the calendar (meetings, free/busy, finding a time), member profiles, invitations, badges, guest admission and meeting recording, plus buttons under messages (ADR-0051).

import { Bot } from '@calaba/bot-sdk';

const bot = new Bot(process.env.BOT_TOKEN, { server: 'https://app.calab.ru' });
bot.on('message', (m) => bot.reply(m, m.content));
await bot.start();

SDK — packages/bot-sdk, examples — examples/bots (echo, voice echo, TTS, Python), docs — docs/19-bot-api.en.md · Русский.

🔒 Self-hosted and secure

  • Works everywhere: UDP → ICE/TCP → TURN/UDP 443 → TURN/TLS 443 automatically; one public IP; tested behind VPNs.
  • Media — DTLS-SRTP; API — HTTPS/WSS, HSTS, strict CSP, HttpOnly/SameSite=Strict cookies for the web, argon2id, refresh-token rotation with reuse detection, rate limits. No end-to-end encryption yet: media goes through your own media server.
  • Every right (rooms, boards, calendar) is checked on the server; the LiveKit grant mirrors the rights.
  • Roles by function — separate rights for boards, members, bots, integrations, journals, events and recordings; private and closed rooms and boards that even administrators can’t see (ADR-0048).
  • Docker Compose with hardened containers, automatic Let’s Encrypt certificates, daily backups with verified restore, Prometheus metrics; PostgreSQL 17 or 18.

Roadmap

Planned, not available yet:

  • Voice AI assistant — a voice AI assistant in rooms (in testing).
  • IVR — a voice menu and internal extension numbers for phone calls (SIP).
  • Wiki — a team knowledge base.
  • Disk — shared file storage for the workspace.

Quick start

Your own server

You need a Linux host with a public IP, Docker + Compose and a domain with A records for app, rtc, turn (and @ for the site).

git clone https://github.com/itrcz/calab.git && cd calab
cp infra/docker/.env.example infra/docker/.env   # DOMAIN, secrets — see the comments
infra/docker/deploy.sh                            # Caddy, LiveKit, API, Postgres, Valkey

Ports: 80/443 TCP, 443/UDP, 7881/TCP, 7882/UDP. The first registered user becomes the server owner; everyone else joins by invitation. The full guide, backups and hardening — docs/06-deployment.md.

The app

Builds for macOS, Windows and Linux are at calab.ru and on your server at https://app.<domain>/download/; the web app is at https://app.<domain>. What’s new in each version — CHANGELOG.md (in Russian; the same text goes into GitHub Releases).

Development

corepack enable && pnpm install && make gen       # protobuf → Go + TS
pnpm infra:dev                                    # Postgres, Valkey, LiveKit --dev
cd apps/server && go run ./cmd/server serve       # API on :3000
pnpm -F @calaba/desktop dev                       # Electron

Checks: make test (Go + TS), make test-integration, visual tests per screen (pnpm -F @calaba/desktop e2e:visual -g "<screen>"). Architecture: overview · media · network · data model and rights · realtime protocol · design system · ADR.

Plans

Free Team Business Enterprise (your own server)
Voice room up to 5 people up to 15 people up to 50 people unlimited
Workspace members up to 50 up to 100 up to 500 unlimited
Audio quality up to “Normal” any, up to “Excellent” any any
Screen sharing and camera quality up to 720p / 15 fps no quality limits no quality limits no quality limits
Screen shares at once in a room 1 2 5 unlimited
Cameras at once in a room 3 10 25 unlimited
Files 5 GB per workspace 300 GB per workspace 1 TB per workspace unlimited
Bots 1 5 20 unlimited
Sticker packs 1 unlimited unlimited unlimited
Task boards 3 30 50 unlimited
Calendar ✓ ✓ ✓ ✓
CalDAV sync — ✓ ✓ ✓
Task approvals ✓ ✓ ✓ ✓
Embedded web apps ✓ ✓ ✓ ✓
Telephony (SIP) ✓ ✓ ✓ ✓
White-label — — — ✓
Support — support priority —
Price free on request (it@gptunnel.ai) on request (it@gptunnel.ai) free for non-commercial use (BSL 1.1, “Powered by GPTunneL”); commercial licence on request

Free, Team and Business are cloud plans of a workspace (ADR-0024); Enterprise is your own server with no plan limits. CalDAV belongs to a person: it works if any of their workspaces is on Team or above. Details — calab.ru/en/#pricing and COMMERCIAL-LICENSE.md.

Licence

Business Source License 1.1 — LICENSE.

  • Non-commercial use (personal, non-profits, education, evaluation up to 30 days) is free, with “Powered by GPTunneL” in the interface and the NOTICE kept.
  • Commercial use — under a GPTunneL licence: COMMERCIAL-LICENSE.md, it@gptunnel.ai.
  • Every version becomes Apache-2.0 four years after its release.

Calab and GPTunneL names and logos are trademarks, see TRADEMARKS.md.

Contributing and security

Pull requests are welcome with a CLA — CONTRIBUTING.md. Report vulnerabilities privately to it@gptunnel.ai, see SECURITY.md.

© 2026 GPTunneL · Powered by GPTunneL