Skip to content
Calab

Calab

From voice to integrations

Voice and video

Join a room and start talking

Voice rooms are always open: one click and you’re in the conversation. Cameras, screen sharing and one-on-one calls live right there — no separate links or apps.

  • RNNoise noise suppression and AEC3 echo cancellation — clean even without headphones
  • Push-to-talk and voice activation, even in the background
  • Screen sharing in AV1 or hardware H.264, with a pointer and drawing on top
  • Camera with background blur or a picture
  • Meeting recordings with a transcript and summary right in the chat
A one-on-one call in direct messages: “Call · 00:00” and the “End” button in the header, the voice panel at the bottom

Sound quality

Voice without compromise

A room sets its own audio quality, all the way up to “Excellent”: Opus at 64 kbps, full band up to 20 kHz. You hear the timbre and the detail of a voice, and with a good microphone the difference is obvious.

  • Four room levels: from 8 kbps for a poor connection to 64 kbps in full band
  • Everyone can set a personal ceiling to save data when the connection is worse
  • RNNoise noise suppression is optional; while it is off, Chromium’s built-in suppression works
  • Screen-share sound is sent unprocessed: music and demos sound as they are, and the other participants’ voices stay out of the stream (macOS 14.2+, Windows 11)
  • In pauses a voice barely uses the link: 0.1 kbps while the microphone is silent

For musicians

Musician mode

The sound quality is very high, and noise suppression can be switched off completely, so you can play an instrument or sing live without losing quality. Echo cancellation, noise suppression and auto gain are off, and the microphone goes out in the Opus music profile: 128 kbps mono or 192 kbps stereo, with error correction and without silence cutting. Headphones are required, and the app warns you about it. Others see a guitar icon next to your name. Available on Team and above.

Room quality levels

The wider the band, the more overtones the listener hears.

  1. Low8 kbps

    Bandwidth: up to 4 kHz

  2. Normal16 kbps

    Bandwidth: up to 8 kHz

  3. Good32 kbps

    Bandwidth: up to 12 kHz

  4. Excellent64 kbps

    Bandwidth: up to 20 kHz

Phone calls

Call any number — straight from the room

Connect your own SIP provider and dial a landline or mobile number from a voice room. The callee joins the room as a participant with a phone icon, and everyone hears them.

  • The status is visible to everyone: “Dialling… → Ringing… → On the call 02:14”
  • “Call a number” sits in the room header and in the “…” menu; paste the number as it is, with spaces and brackets
  • The caller and moderators can hang up; only the caller hears the ringback
  • Provider settings: server, port, login, Caller ID, allowed destinations
  • “Test connection” places a trial call to your Caller ID; the call log shows who called, when, where and how it ended
  • The “Place calls” permission is given to nobody by default; one call per room, up to 20 an hour per workspace

Calls are billed by your SIP provider.

A voice room with the “Call a number” popover: a number typed in and the Call button
Dialling
The voice room’s participant list: among the people, a phone line with a handset icon, a number and the status “On the call 2:14”
The callee in the room
Workspace settings, the Telephony tab: SIP enabled, server, transport, login, password and Caller ID
Provider settings
The Telephony tab: the Test connection button with its result and the call log with numbers and outcomes
Test and call log

Chat

Chat like Telegram

Every room has its own chat: replies, reactions, forwarding, stickers, voice messages, files with previews, pins and search. Read ticks, just as you’re used to.

  • Forward to several chats at once
  • Workspace sticker packs
  • Voice messages, music and video with a built-in player
  • Mentions, per-room notifications, workspace search
The “general” room: a mockup with reactions, a reply to it, a sticker and the members online

Calendar and meetings

Meetings where the conversation is

The calendar is built into the app: your day of meetings, invitations, attendees’ answers, the meeting room with a “Go” button and reminders 15 minutes before.

  • .ics invitations

    An email with invite.ics adds the meeting to 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 — one click creates the meeting.

  • CalDAV

    Connect Yandex, iCloud, Fastmail or Nextcloud: your busy time counts, and Calab meetings show up there by themselves.

The day view: meetings side by side, the red “now” line and the “Release planning” meeting card with attendees
“Find a time” for four people: busy columns, the green shared window and the picked slot

Task boards

Tasks next to the conversation

Kanban, list and timeline in the spirit of Linear — without another service. Create a task from any message; a link to it unfolds into a card in the chat.

  • Statuses, priorities, labels, milestones and due dates
  • Several assignees, subtasks and relations
  • Comments like chat: reactions, stickers, voice messages
  • Filters, saved views and keyboard shortcuts

Free has 3 boards, Team 30, Business 50 and Enterprise has no limit.

The “Product” board as a kanban: status columns with task cards, labels, due dates and assignees
The board timeline: task bars by date, the “today” line and the “Release 1.1” milestone
The task panel: subtasks, a “blocks” relation, history and chat-like comments

Notes

Private shelves for everything important

Up to 20 shelves with your own names and emoji — like Saved Messages in Telegram, only several. Only you can see a shelf.

  • Drag a message onto a shelf or forward it
  • Drop files from Finder or Explorer straight onto a shelf
  • Pins and search, as in any chat
Notes: the “Ideas”, “Links” and “For the release” shelves and an open shelf with notes and a forwarded message

Guests

Guests without sign-up — with your approval

A guest link leads straight into the room: the guest types a name and joins the conversation. Want control? Turn on approval: the organizer sees “asks to join” and clicks “Let in”.

  • A guest sees only their room
  • Approval per room or per link
  • A sound and a waiting counter for the organizer
The guest’s screen: “Waiting for the organizer’s approval…” with the room name and a “Cancel” button

Web apps

Your services in the same window as the call

An admin pins site shortcuts to the left rail — Grafana, the wiki, the CRM. One click opens the site inside Calab, full window, and the call keeps going.

  • A shortcut is a picture, a name and an address; up to 20 apps per workspace
  • The call is not interrupted: the island with your microphone stays at the bottom
  • Site logins are kept separately for each app and never mix with Calab
  • Camera and microphone for a site — only with your permission
  • Drag to reorder; right-click to edit, open in the browser, reload or delete
  • Everyone except guests sees them; people with the integrations permission add and change them
The Calab window: three shortcuts (Grafana, Wiki, CRM) under the workspace in the left rail, a Grafana dashboard open full window and the active call panel still at the bottom

Bots and SDK

A bot is a participant like any other

A bot uses the same API as the app and sees exactly what its roles allow. Bot API v2 covers almost everything a person can do.

  • Reads and writes the chats it can see and answers /commands
  • Works with tasks: creates, edits, comments
  • Voice through LiveKit: hears everyone and speaks
  • Calendar: creates meetings, checks free/busy, finds a time
  • Member profiles, renaming, invitations and badges
  • Starts meeting recording
  • Events over WebSocket or webhook, buttons under messages, a TypeScript SDK
More about the Bot API
standup.ts
import { Bot } from '@calaba/bot-sdk';const bot = new Bot(process.env.BOT_TOKEN, {  server: 'https://app.calab.io',});await bot.commands([{ name: 'standup', description: 'Start' }]);// "/standup" → a message with a buttonbot.on('command', (c) =>  bot.send(c.message.roomId, {    text: 'Stand-up time. Record it?',    inlineKeyboard: { rows: [{ buttons: [      { id: 'rec', label: 'Record', data: 'standup' },    ] }] },  }),);// pressed → start the meeting recordingbot.on('callback', (cb) => {  if (cb.buttonId === 'rec') bot.recording.start(cb.roomId);});await bot.start();

Self-hosted and secure

Your server, your data

Calab installs on your Linux server with one command and depends on no external services.

  1. Step 1. Set up the server

    A Linux host with Docker and a domain. One command and it’s running within a minute; Let’s Encrypt certificates are issued automatically.

    infra/docker/deploy.sh
  2. Step 2. Install the app

    macOS, Windows or Linux. Or just open Calab in your browser — nothing to install.

  3. Step 3. Invite your team

    Send an invite link. Guests joining a single meeting don’t need an account.

  • Encrypted in transit

    The API and signaling use TLS; voice and video use DTLS-SRTP.

  • Your data stays yours

    Messages, files and recordings are stored only on your server.

  • Works behind a VPN

    UDP blocked? TURN/TLS over 443 — to the network it’s ordinary HTTPS.

  • Rights for everything

    Roles and per-room and per-board rights are checked by the server.

Performance

Light — and measured

We measure CPU on a real machine and publish the numbers, including the ones we are not happy with.

Without a call

Average load, % of one core: Calab and Discord on the same Mac, back to back, in the same conditions.

Window visible

Calab

0.05%

Discord

0.97%

Window hidden

Calab

0.20%

Discord

0.85%

What we sped up

  • Voice, quiet room

    RNNoise noise suppression runs on demand and sleeps in pauses.

    before

    15.0%

    after

    6.9%
  • Video, window hidden

    A hidden window no longer decodes video.

    before

    17.5%

    after

    7.0%
  • Video under an open menu

    Glass and blur are gone: materials are solid.

    before

    17.2%

    after

    11.4%
  • Recording indicator

    It pulses three times and settles instead of blinking for hours.

    before

    59.1%

    after

    11.7%
  • macOS installer

    Unused Chromium languages removed: −16.3 MB.

    before

    146.2 MB

    after

    130.0 MB

We did not measure Discord in a call, so we make no voice comparison.

Method. MacBook Air (Apple M4, 10 cores, 24 GB), macOS 27, Discord 0.0.413. CPU is the sum over all of the app’s processes (top, a sample every 5 s, 3 minutes, the first sample dropped), one run per scenario. “Before” and “after” are the same Calab before and after a change: for voice and video, release 0.5.1 and its bundle with the optimisations (the app.calab.ru stand, a fake microphone, an lk publisher); for the menu and the recording indicator, a build on a mock server and a local LiveKit; installer size from docs/18. Tool: tools/energy-bench.py, raw CSVs are in the repository. All measurements and conditions: docs/14-energy.md