Перейти к содержимому
Calab

Calab

От голоса до интеграций

Голос и видео

Зашли в комнату — и говорите

Голосовые комнаты всегда открыты: один клик — и вы в разговоре. Камеры, показ экрана и звонки один на один — там же, без отдельных ссылок и приложений.

  • Шумоподавление RNNoise и эхоподавление AEC3 — чисто даже без наушников
  • Push-to-talk и активация голосом, в том числе в фоне
  • Показ экрана в AV1 или аппаратном H.264, указка и рисование поверх стрима
  • Камера с размытием или картинкой вместо фона
  • Запись встречи с транскриптом и саммари прямо в чат
Звонок один на один в личных сообщениях: «Звонок · 00:00» и кнопка «Завершить» в шапке, внизу панель голоса

Качество звука

Голос без компромиссов

Качество звука задаёт комната — вплоть до «Отличного»: Opus 64 кбит/с в полной полосе до 20 кГц. Слышно тембр и детали голоса, с хорошим микрофоном разница заметна сразу.

  • Четыре уровня комнаты: от 8 кбит/с для плохой связи до 64 кбит/с в полной полосе
  • Каждый может поставить личный потолок и экономить трафик, когда связь хуже
  • Шумоподавление RNNoise включается по желанию; пока оно выключено, работает встроенное шумоподавление Chromium
  • Звук стрима идёт без обработки: музыка и демонстрации звучат как есть, а голоса собеседников в стрим не попадают (macOS 14.2+, Windows 11)
  • В паузах голос почти не расходует канал: 0,1 кбит/с, пока микрофон молчит

Для музыкантов

Режим музыканта

Качество звука очень высокое, а шумоподавление можно полностью отключить — поэтому можно играть на музыкальных инструментах или петь вживую без потери качества. Эхоподавление, шумоподавление и автоусиление выключены, а микрофон уходит в музыкальном профиле Opus: 128 кбит/с моно или 192 кбит/с стерео, с защитой от потерь и без вырезания тишины. Нужны наушники — приложение предупредит. Остальные видят значок гитары рядом с вашим именем. Доступно на тарифе Team и выше.

Уровни качества комнаты

Чем шире полоса, тем больше обертонов слышит собеседник.

  1. Низкое8 кбит/с

    Полоса: до 4 кГц

  2. Нормальное16 кбит/с

    Полоса: до 8 кГц

  3. Хорошее32 кбит/с

    Полоса: до 12 кГц

  4. Отличное64 кбит/с

    Полоса: до 20 кГц

Звонки на телефон

Позвоните на любой номер — прямо из комнаты

Подключите своего SIP-провайдера, и из голосовой комнаты можно набрать городской или мобильный номер. Абонент появляется в комнате участником с иконкой трубки — и его слышат все.

  • Статус виден всем: «Набираем… → Звонит… → В разговоре 02:14»
  • «Позвонить на номер» — в шапке комнаты и в меню «…»; номер можно вставить как есть, с пробелами и скобками
  • Завершить звонок могут звонивший и модераторы; гудки слышит только звонящий
  • Настройки провайдера: сервер, порт, логин, Caller ID, разрешённые направления
  • «Проверить подключение» — пробный звонок на ваш Caller ID; журнал звонков — кто, когда, куда, чем закончилось
  • Право «Звонить на номера» по умолчанию ни у кого; один звонок на комнату, до 20 в час на пространство

Звонки оплачиваются у вашего SIP-провайдера.

Голосовая комната, поповер «Позвонить на номер» с введённым номером и кнопкой «Позвонить»
Набор номера
Список участников голосовой комнаты: среди людей строка телефонной линии с иконкой трубки, номером и статусом «В разговоре 2:14»
Абонент в комнате
Настройки пространства, вкладка «Телефония»: SIP включён, сервер, транспорт, логин, пароль и Caller ID
Настройки провайдера
Вкладка «Телефония»: кнопка «Проверить подключение» с результатом и журнал звонков с номерами и итогами
Проверка и журнал

Чат

Чат как в Telegram

У каждой комнаты свой чат: ответы, реакции, пересылка, стикеры, голосовые, файлы с превью, закрепы и поиск. Галочки прочтения — как вы привыкли.

  • Пересылка сразу в несколько чатов
  • Стикерпаки пространства
  • Голосовые, музыка и видео со встроенным плеером
  • Упоминания, уведомления на комнату, поиск по пространству
Канал «общий»: макет с реакциями, ответ на него, стикер и список участников в сети

Календарь и встречи

Встречи там же, где разговор

Календарь встроен в приложение: день с встречами, приглашения, ответы участников, комната встречи с кнопкой «Перейти» и напоминания за 15 минут.

  • Приглашения .ics

    Письмо с invite.ics добавляет встречу в Apple, Google, Outlook или Яндекс. Внешние участники отвечают по ссылке и входят гостем.

  • Подобрать время

    Колонки занятости коллег, общие свободные окна и ближайшие слоты — клик создаёт встречу.

  • CalDAV

    Подключите календарь Яндекса, iCloud, Fastmail или Nextcloud: занятость учитывается, встречи Calab появляются в нём сами.

Календарь на день: встречи бок о бок, красная линия «сейчас» и карточка встречи «Планёрка по релизу» с участниками
«Подобрать время» для четырёх человек: колонки занятости, зелёное общее окно и выбранный слот

Доски задач

Задачи рядом с разговором

Канбан, список и таймлайн в духе Linear — без отдельного сервиса. Задачу можно создать из любого сообщения, а ссылка на неё разворачивается в чате карточкой.

  • Статусы, приоритеты, лейблы, вехи и сроки
  • Несколько исполнителей, подзадачи и связи
  • Комментарии как в чате: реакции, стикеры, голосовые
  • Фильтры, сохранённые виды и горячие клавиши

На Free — 3 доски, на Team — 30, на Business — 50, на Enterprise — без ограничений.

Доска «Продукт» канбаном: колонки статусов с карточками задач, лейблами, сроками и исполнителями
Таймлайн доски: полосы задач по датам, линия «сегодня» и веха «Релиз 1.1»
Панель задачи: подзадачи, связь «блокирует», история и комментарии как в чате

Заметки

Личные полки для всего важного

До 20 полок со своими названиями и эмодзи — как «Избранное» в Telegram, только несколько. Полку видите только вы.

  • Перетащите сообщение на полку или перешлите его
  • Файлы из Finder и Проводника — прямо на полку
  • Закрепы и поиск, как в обычном чате
«Заметки»: полки «Идеи», «Ссылки», «К релизу» и открытая полка с заметками и пересланным сообщением

Гости

Гости без регистрации — с вашего разрешения

Гостевая ссылка ведёт прямо в комнату: гость вводит имя и оказывается в разговоре. Нужен контроль — включите подтверждение: организатор увидит «просит войти» и нажмёт «Пустить».

  • Гость видит только свою комнату
  • Подтверждение для комнаты или отдельной ссылки
  • Звук и счётчик ожидающих у организатора
Экран гостя: «Ожидаем подтверждения организатора…» с названием комнаты и кнопкой «Отменить»

Веб-приложения

Ваши сервисы — в одном окне со звонком

Администратор закрепляет в левой панели ярлыки сайтов — Grafana, вики, CRM. Клик — и сайт открывается прямо в Calab на всё окно, а звонок продолжается.

  • Ярлык — картинка, название и адрес; до 20 приложений на пространство
  • Звонок не прерывается: островок с микрофоном остаётся внизу
  • Логины на сайтах сохраняются отдельно для каждого приложения и не смешиваются с Calab
  • Камера и микрофон сайту — только после вашего разрешения
  • Порядок — перетаскиванием; правый клик — изменить, открыть в браузере, перезагрузить, удалить
  • Видят все участники, кроме гостей; добавляют и меняют те, у кого есть право на интеграции
Окно Calab: в левой панели под пространством три ярлыка (Grafana, Вики, CRM), открыт дашборд Grafana на всё окно, внизу остаётся панель идущего звонка

Боты и SDK

Бот — такой же участник

Бот работает через тот же API, что и приложение, и видит ровно то, что разрешено его ролям. Bot API v2 покрывает почти всё, что делает человек.

  • Читает и пишет в чатах, которые ему доступны, отвечает на /команды
  • Работает с задачами: создаёт, меняет, комментирует
  • Голос через LiveKit: слышит всех и говорит сам
  • Календарь: создаёт встречи, смотрит «свободно/занято», подбирает время
  • Профили участников, переименование, приглашения и бейджи
  • Запускает запись встречи
  • События по WebSocket или webhook, кнопки под сообщениями, SDK на TypeScript
Подробнее о 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();

Свой сервер и безопасность

Ваш сервер, ваши данные

Calab ставится на ваш Linux-сервер одной командой и не зависит от внешних сервисов.

  1. Шаг 1. Поднимите сервер

    Linux-хост с Docker и доменом. Одна команда — и через минуту всё работает, сертификаты Let’s Encrypt выпускаются сами.

    infra/docker/deploy.sh
  2. Шаг 2. Установите приложение

    macOS, Windows или Linux. Или просто откройте Calab в браузере — ничего ставить не нужно.

  3. Шаг 3. Пригласите команду

    Отправьте ссылку-приглашение. Гостям на одну встречу аккаунт не нужен.

  • Шифрование в пути

    API и сигнализация — по TLS, голос и видео — DTLS-SRTP.

  • Данные у вас

    Сообщения, файлы и записи хранятся только на вашем сервере.

  • Работает за VPN

    UDP закрыт — TURN/TLS через 443, для сети это обычный HTTPS.

  • Права на всё

    Роли и права на каждую комнату и доску проверяет сервер.

Производительность

Лёгкий — и это измерено

Мы меряем процессор на реальной машине и публикуем цифры, в том числе те, что нас не радуют.

Без звонка

Средняя нагрузка, % одного ядра: Calab и Discord на одном Mac, подряд, в одинаковых условиях.

Окно видно

Calab

0,05 %

Discord

0,97 %

Окно скрыто

Calab

0,20 %

Discord

0,85 %

Что мы ускорили

  • Голос, тихая комната

    Шумодав RNNoise работает по требованию и засыпает в паузах.

    было

    15,0 %

    стало

    6,9 %
  • Видео при скрытом окне

    Скрытое окно больше не декодирует видео.

    было

    17,5 %

    стало

    7,0 %
  • Видео под открытым меню

    Стекло и размытие убраны: материалы сплошные.

    было

    17,2 %

    стало

    11,4 %
  • Индикатор записи

    Пульсирует три раза и замирает, а не мигает часами.

    было

    59,1 %

    стало

    11,7 %
  • Установщик macOS

    Убрали лишние языки Chromium: −16,3 МБ.

    было

    146,2 МБ

    стало

    130,0 МБ

Звонки Discord мы не измеряли, поэтому по голосу не сравниваем.

Методика. MacBook Air (Apple M4, 10 ядер, 24 ГБ), macOS 27, Discord 0.0.413. CPU — сумма по всем процессам приложения (top, выборка раз в 5 с, 3 минуты, первая отброшена), один прогон на сценарий. «Было» и «стало» — один и тот же Calab до и после правки: для голоса и видео это релиз 0.5.1 и его бандл с оптимизациями (стенд app.calab.ru, фейковый микрофон, издатель lk), для меню и индикатора записи — сборка на мок-сервере и локальном LiveKit, размер установщика — docs/18. Инструмент — tools/energy-bench.py, исходные CSV — в репозитории. Все замеры и условия — docs/14-energy.md