Bots
A bot is a member like everyone else
Create a bot in the workspace settings and give it a role — it uses the same API as the app: chats, tasks, the calendar, members and voice.
Rights come from roles, as for people: a bot sees only the rooms it was let into.
Bots
Chat
Reads and writes messages in every room and DM it can access, replies, reacts, sends files and stickers. Events arrive in real time over WebSocket.
Tasks
Creates and edits tasks on boards, assigns people, comments and searches. A board is visible to a bot the way it is to a person with the same role.
Voice
Joins a voice room through LiveKit: hears the participants and speaks — text to speech, echo, music, recording. On Node, Python or Go.
Calendar
Schedules and moves meetings, checks free/busy and finds a time for several people. The bot is the organiser; emails go out “on behalf of the bot”.
Members
Opens a member’s profile with their open tasks, renames, invites by link and email, awards badges — within the role’s permissions.
Meeting recording
Starts and stops recording of a voice room — the transcript and summary arrive as a card in the chat. Needs the “Recordings” permission.
Commands and buttons
Registers /commands that the composer suggests on “/”, and attaches buttons under messages — a press reaches the bot as an event.
Webhook
No permanent connection: events arrive as a POST with an HMAC signature and retries on failures. Convenient for serverless.
@calaba/bot-sdk
A stand-up bot in TypeScript
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();Bots
Your first bot in 5 minutes
Token, REST, events, webhook, buttons, voice, limits and error codes — in the docs.