This is the full developer documentation for Bakulai # Bakulai Docs > One business, four doors. Pick the one you are standing at. Bakulai Agent A desktop office of AI agents that read your email and WhatsApp, run scheduled jobs and write **drafts** into Bakulai. [Start here →](/agent/) ERP — erp.bakulai.com Sales, purchasing, stock, accounting, the AI assistant in the Desk and the MCP connector for Claude and ChatGPT. [Open →](/erp/) POS — pos.bakulai.com The point of sale that keeps selling when the internet drops, with Bluetooth receipts and a phone layout. [Open →](/pos/) Aspri — aspri.bakulai.com The owner’s voice and text assistant: ask for numbers, drafts and imports in plain language. [Open →](/aspri/) For AI agents Every page is also plain Markdown: append `index.md` to any URL, or read [`/llms.txt`](/llms.txt) and [`/llms-full.txt`](/llms-full.txt). Bakulai Agent ships the same content as the `bakulai-app-guide` skill. # Bakulai Agent > A desktop office of AI agents that read your email and WhatsApp, run scheduled jobs and write drafts into Bakulai. Bakulai Agent is a desktop app (macOS and Windows) for **Pro and Max** plans. It shows your business as a small 3D office: every desk is an AI agent with a name, a role and its own memory, and every room is a department with its own automations and a daily meeting. Three rules hold everywhere: 1. **Agents write drafts, never final documents.** Everything an agent creates in Bakulai (a quotation, an invoice, a leave application) is a draft. Submitting stays with you, in the ERP. 2. **Agents work while the app is open.** Close the app and every agent stops; open it again and they catch up on what they missed. 3. **Keys and numbers stay on your computer.** Model keys, WhatsApp pairing and social logins live in the app on your desktop — never on a server, never in an agent’s chat. [What is Bakulai Agent?](/agent/start/what-is-bakulai-agent/)Rooms, agents, roles and automations in five minutes. [Install and sign in](/agent/start/install-and-sign-in/)From download to a running office. [The first-office wizard](/agent/start/first-office-wizard/)A team for your kind of business in one screen. [Add an agent](/agent/office/add-an-agent/)Name, room, role — and what happens next. [Link WhatsApp with a QR code](/agent/channels/whatsapp-qr/)Give one agent its own number. [The Review tab](/agent/review/review-tab/)Every draft your agents wrote, in one list. ## Chapters [Section titled “Chapters”](#chapters) * **Start** — what it is, requirements, install, the wizard. * **Office** — rooms, agents, awake and asleep, moving and removing, the company brief. * **Channels** — WhatsApp, Telegram, email; who may chat; one number for a whole room. * **Automations** — how scheduled and event-driven jobs work; keeping the office running. * **Review** — the drafts your agents wrote in Bakulai. # Keeping the office running > Launch at login, keep the computer awake, and what happens to jobs and follow-ups missed while the app was closed. **Who this is for:** an owner who wants the morning briefing to arrive without opening the app by hand. Agents only work while the app is open. Two settings and one catch-up routine keep that from becoming a problem. ## Steps [Section titled “Steps”](#steps) 1. Open **Settings → Office**. The Launch at login and Keep the computer awake switches — `agent/automations/always-on.png` 2. Switch on **Launch at login**. The app registers itself with macOS/Windows and starts with your session; agents that were awake come back. 3. Switch on **Keep the computer awake while agents are awake** on a computer that stays on a desk. It prevents *idle sleep* while at least one agent runs. The display may still turn off; a closed laptop lid still sleeps the machine. ## What happens after the app was closed [Section titled “What happens after the app was closed”](#what-happens-after-the-app-was-closed) | Missed while closed | What the app does on the next start | | ----------------------------------------- | ----------------------------------------------------------------------------------------------------- | | a scheduled job, less than a day late | runs it once, marked **Ran late** in Activity | | a scheduled job, more than a day late | skipped; the next regular run stands | | a customer follow-up, up to 12 hours late | re-sent a few minutes after start with a short apology (between 21:00 and 07:00 it waits until 07:00) | | a customer follow-up, older | dropped; you get a note with its text | | a daily meeting, less than 3 hours late | held now | Note Sleeping agents are woken about three minutes before each of their jobs and put back to sleep by the idle timer — you do not have to keep everyone awake. ## Ask your agent [Section titled “Ask your agent”](#ask-your-agent) ## Limits & safety [Section titled “Limits & safety”](#limits--safety) * Launch at login is an OS setting: if the system’s login items are cleaned, the switch turns itself off at the next start. * Keep-awake holds a power assertion only while an agent is awake; nothing runs when all agents sleep. ## Troubleshooting [Section titled “Troubleshooting”](#troubleshooting) * **The app did not start with the computer** — check the switch again (the OS may have removed the login item), and on macOS System Settings → General → Login Items. * **A job shows “Ran late” every day** — the computer sleeps at that hour; enable keep-awake or move the computer’s sleep schedule. ## Related [Section titled “Related”](#related) [Awake and asleep](/agent/office/awake-and-sleeping/) · [How automations work](/agent/automations/how-automations-work/) # How automations work > Scheduled and event-driven jobs per room — switching them on, running one now, and what they produce. **Who this is for:** an owner who wants to know what the office does on its own, and how to change it. ## Kinds of automations [Section titled “Kinds of automations”](#kinds-of-automations) The catalog has about forty automations, grouped by department. Each is one of: * **Scheduled** — runs on a fixed schedule in the room’s time zone (every morning, weekdays at 09:00, the 25th of the month). One agent per office owns each scheduled job. * **Incoming email / Incoming WhatsApp** — reacts to what arrives in the agent’s channel (a prospect’s email becomes a draft Lead; a receipt photo becomes a draft expense). * **On request** — you or an agent trigger it (a poster, a design brief). Switching an automation on also gives the agent the ERP tools that job needs, and nothing more. ## What they produce [Section titled “What they produce”](#what-they-produce) Drafts in Bakulai (listed in the [Review tab](/agent/review/review-tab/)), reports and reminders delivered to you (the agent’s channel or your desk), and social proposals in the Marketing queue. Never a submitted document, never a sent post. ## Steps [Section titled “Steps”](#steps) 1. Click an agent, open its desk (gear) → **Automations**. Automations are grouped by department; the ones outside the agent’s room are shown but marked. The Automations tab of an agent — `agent/automations/list.png` 2. Flip a switch to enable or disable. A scheduled job owned by another agent cannot be switched on twice. 3. Press **Run now** on a scheduled job to run it immediately (the report arrives the same way as a scheduled run). 4. The **Activity** tab of the panel shows, per room, each automation’s last and next run — and a **Ran late** badge when a run happened after the computer came back on. ## Which are on by default [Section titled “Which are on by default”](#which-are-on-by-default) A new agent gets its room’s automations switched on, except: * social-media jobs — they need a linked account and, in browser mode, your approval; * on-request jobs; * **Monthly payroll drafts** — you switch it on yourself. Note Schedules are fixed per automation (the catalog decides “weekdays at 09:00”); agents in the same room are staggered a few minutes apart so they do not all run at once. The room’s time zone moves them. ## Ask your agent [Section titled “Ask your agent”](#ask-your-agent) ## Limits & safety [Section titled “Limits & safety”](#limits--safety) * Jobs run only while the app is open and the agent is awake — the app wakes a sleeping agent shortly before its job. * Enabling a job through an agent asks for your confirmation; disabling does not. ## Troubleshooting [Section titled “Troubleshooting”](#troubleshooting) * **Nothing ran at the scheduled time** — the app was closed. It runs the job once on the next start if less than a day has passed (**Ran late**). * **The report said “blocked (configuration)”** — the job’s delivery channel (usually email) is not set up on that agent; link a mailbox or change the delivery route. * **“Run now” is greyed** — the automation is off, or it is an event-driven one. ## Related [Section titled “Related”](#related) [Keeping the office running](/agent/automations/always-on/) · [Awake and asleep](/agent/office/awake-and-sleeping/) · [The Review tab](/agent/review/review-tab/) # One number per room > Let a whole Customer Service room answer one WhatsApp number — the holder forwards, the colleague's answer goes back to the customer. **Who this is for:** an owner with one business number and several agents who should serve it. ## How it works [Section titled “How it works”](#how-it-works) WhatsApp allows one number per agent, so the number lives on **one** agent — usually the Customer Service lead or the receptionist. With the automation **One number, the whole team** switched on, that agent: 1. answers what it can read from Bakulai itself (order status, deliveries, invoices); 2. asks a colleague a quick question and waits (up to four minutes) when the answer is short; 3. hands longer questions (a price, a stock check for several items) to the right colleague **for the customer** — and tells the customer once that the answer follows in this chat. The colleague’s answer is sent to the customer **from the same number**, by the office, without another round through the holder. If a colleague has not answered after 15 minutes, you get a note on your phone. The Tasks tab showing a customer question handed to Sales — `agent/channels/one-number.png` ## Steps [Section titled “Steps”](#steps) 1. Link the number to the agent that will hold it — see [Link WhatsApp with a QR code](/agent/channels/whatsapp-qr/) — and set it **Public**. 2. Make sure the specialists exist: a Sales agent for prices, an Operations agent for stock, a Finance agent for invoices. Colleagues answer even while asleep. 3. Open the holder’s desk → **Automations** and switch on **One number, the whole team**. The automation toggle on the Customer Service agent — `agent/channels/one-number-automation.png` Handed-over questions appear in the panel’s **Tasks** tab with a **customer · name** chip; the reply shows in the customer’s transcript under **Inbox**. Note The holder must be awake to relay (it is, since it just received the message). If it fell asleep in between, the colleague’s answer lands in the holder’s inbox instead and it sends it by hand. ## Ask your agent [Section titled “Ask your agent”](#ask-your-agent) ## Limits & safety [Section titled “Limits & safety”](#limits--safety) * The colleague writes **for the customer**: no internal data (cost, margin, colleague notes), no promises beyond what Bakulai shows. * One question goes to one colleague; the holder does not re-ask before 15 minutes. * Complaints are logged as tickets (the **Complaint → ticket** automation) and get a one-line acknowledgement, never a promise. ## Troubleshooting [Section titled “Troubleshooting”](#troubleshooting) * **The customer got nothing after “the answer follows”** — check the Tasks tab: *delivered* = the colleague is still working; you get an escalation at 15 minutes. * **The colleague answered in the holder’s inbox instead** — the holder was asleep at relay time; wake it, the message shows how to send. ## Related [Section titled “Related”](#related) [Take over a chat](/agent/inbox-tasks/take-over-a-chat/) · [Who can chat](/agent/channels/who-can-chat/) # Channels overview > WhatsApp, Telegram and email — one account per platform per agent, and where each is set up. **Who this is for:** an owner deciding which numbers and mailboxes to give to which agents. ## The rule [Section titled “The rule”](#the-rule) **One account per platform per agent.** An agent can hold one WhatsApp number, one Telegram bot and one mailbox at the same time — but two agents cannot share a number. A second WhatsApp number means a second agent. To let a whole room answer one number, see [One number per room](/agent/channels/one-number-per-room/). ## Channels [Section titled “Channels”](#channels) | Channel | How it links | Best for | | ---------------------------------------------------- | ------------------------------------------- | ------------------------------------------------------ | | **WhatsApp — Unofficial (QR)** | scan a QR code like WhatsApp Web | quick start; a dedicated number you can afford to lose | | **WhatsApp — Official (Cloud API)** | Meta Business tokens + the Bakulai relay | a verified business number, no ban risk | | **Telegram** | a bot token from @BotFather | staff and owner channels, public support bots | | **Email** | an IMAP/SMTP mailbox dedicated to the agent | prospects, supplier invoices, reports | | **Other** (LINE, SMS/Twilio, Microsoft Teams, WeCom) | webhooks through the Bakulai relay | special cases | All of them live in **Settings → Accounts**, one list per channel, one row per agent. Settings, Accounts lists — `agent/channels/accounts.png` ## Who can chat [Section titled “Who can chat”](#who-can-chat) Every channel row has a **Who can chat** choice: **Public — anyone** (customer service) or **Private — listed ids only** (your own number, your staff). Strangers writing to a private channel are ignored silently. See [Who can chat](/agent/channels/who-can-chat/). Caution A WhatsApp number linked by QR uses an unofficial route. Meta can block it. Use a number you would not mind losing, and never your personal one. ## Ask your agent [Section titled “Ask your agent”](#ask-your-agent) ## Limits & safety [Section titled “Limits & safety”](#limits--safety) * Tokens, QR codes and passwords are entered on the desktop only; agents and tablets never see them. * Disabling or unlinking a channel restarts the agent so it stops answering at once. ## Related [Section titled “Related”](#related) [Link WhatsApp with a QR code](/agent/channels/whatsapp-qr/) · [Who can chat](/agent/channels/who-can-chat/) · [One number per room](/agent/channels/one-number-per-room/) # Link WhatsApp with a QR code > Connect a WhatsApp number (unofficial route) to one agent by scanning a QR code. **Who this is for:** an owner giving one agent its own WhatsApp number. You need: the agent **awake**, a phone with that number’s WhatsApp, and a number not linked to another WhatsApp Web. 🖐 Hands-on step This part is done by you at the desktop app: QR codes, keys, tokens and deletions never pass through an agent or the tablet. An agent can only open the screen for you. ## Steps [Section titled “Steps”](#steps) 1. Open **Settings → Accounts → WhatsApp → Add account**, pick the agent, choose **Unofficial — scan a QR code**. Add account dialog with the two WhatsApp routes — `agent/channels/whatsapp-qr-01-add.png` 2. Press **Start QR pairing**. The QR is valid for two minutes. The QR code waiting to be scanned — `agent/channels/whatsapp-qr-02-qr.png` 3. On the phone: WhatsApp → **Linked Devices** → **Link a Device** → scan. The row turns *connected* and shows the number. 4. Choose **Who can chat**: **Public — anyone** for customers, **Private — listed ids only** plus the allowed numbers (country code, no +) for staff. Press **Save** — the agent’s gateway restarts with the new policy. After that, every message to the number reaches the agent, which answers from it. Customer conversations show up in the panel’s **Inbox** tab. Tip Use **Scan again (new phone)** on the same row when the number moves to another phone. **Unlink** removes the session and tells the phone; if the phone still lists the device, remove it under Linked Devices. ## Ask your agent [Section titled “Ask your agent”](#ask-your-agent) ## Limits & safety [Section titled “Limits & safety”](#limits--safety) * The QR route is unofficial — Meta may block the number. One number = one agent. * The session file stays on your computer; the tablet and the agents never see it. * The agent replies to anyone in a Public channel: give it a role brief that says what it may promise. ## Troubleshooting [Section titled “Troubleshooting”](#troubleshooting) * **“Strangers currently receive a pairing code…”** — press **Save** once more; the row was created with an old policy. * **QR expired** — press **Start QR pairing** again. * **Connected, but no replies** — the agent is asleep (wake it) or the number is Private and the sender is not listed. * **Two agents, one number** — the second scan disconnects the first. Use a second number, or [One number per room](/agent/channels/one-number-per-room/). ## Related [Section titled “Related”](#related) [Who can chat](/agent/channels/who-can-chat/) · [One number per room](/agent/channels/one-number-per-room/) · [Channels overview](/agent/channels/overview/) # Who can chat > Public or private per channel — who an agent answers, and what strangers get. **Who this is for:** an owner deciding which agents face the public and which are private. ## The two modes [Section titled “The two modes”](#the-two-modes) | Mode | Who gets answers | Use it for | | ----------------------------- | -------------------------- | ------------------------------------------------------ | | **Public — anyone** | everyone who writes | customer service, sales, reception | | **Private — listed ids only** | the numbers / ids you list | your own desk agent, staff-facing agents (HR, finance) | Strangers writing to a **Private** channel are ignored — no reply, no pairing code. (Early versions handed out a pairing code; pressing **Save** on the row once fixes any row still doing that.) ## Steps [Section titled “Steps”](#steps) 1. Open **Settings → Accounts**, find the agent’s row under the channel, press **⋮ → Edit**. The Who can chat radio buttons on a channel row — `agent/channels/who-can-chat.png` 2. Pick **Public — anyone** or **Private — listed ids only**. For Private, fill the allowed ids: phone numbers with country code and no + for WhatsApp, user ids for Telegram, addresses for email. 3. Press **Save**. The agent’s gateway restarts so the new policy applies at once. Note Email is always allow-listed: an agent only reads mail from the senders you list. ## Ask your agent [Section titled “Ask your agent”](#ask-your-agent) ## Limits & safety [Section titled “Limits & safety”](#limits--safety) * Public channels get whatever the agent’s role allows it to say. Keep customer-facing roles on read-only tools (prices, stock, order status) and let drafts flow to the Review tab. * A Private channel used for owner notifications (Settings → Office → **Escalations to your phone**) needs the explicit `platform:chat_id` target so only your chat can approve social posts. ## Troubleshooting [Section titled “Troubleshooting”](#troubleshooting) * **My own messages are ignored** — your number is missing from the Private list (or has a + or spaces). * **Customers get no answer on a Public number** — the agent is asleep or the number disconnected; check the row’s status badge. ## Related [Section titled “Related”](#related) [Link WhatsApp with a QR code](/agent/channels/whatsapp-qr/) · [Channels overview](/agent/channels/overview/) # Take over a chat > Mute the agent in one customer chat, reply through its account, hand it back with a note. **Who this is for:** an owner who needs to step into a customer conversation. Note This page is being written. Until then: open the conversation in the **Inbox** tab and press **Take over**; type in **Reply as …**; press **Hand back** when done. ## Related [Section titled “Related”](#related) [Bakulai Agent overview](/agent/) # Marketing preferences > Topics, keywords, tone, disclosure, brand colours and the products to push — what the marketing agents work from. **Who this is for:** an owner setting up the marketing team. Note This page is being written. Until then: open **Settings → Marketing** and fill in what to look for, what may be offered and the tone; every social automation reads it. ## Related [Section titled “Related”](#related) [Bakulai Agent overview](/agent/) # Daily meetings > Each room meets daily; the minutes reach you through the chair's channel or your own desk. **Who this is for:** an owner who wants a daily summary from each department. Note This page is being written. Until then: switch on the **Daily meeting** in the room’s settings, pick the chair and how minutes are sent; the **Meetings** tab shows transcripts and lets you run one now. ## Related [Section titled “Related”](#related) [Bakulai Agent overview](/agent/) # Choose a model and key > Settings → AI model: providers, account sign-in vs API key, and how new agents inherit it. **Who this is for:** an owner connecting a model provider for the first time. Note This page is being written. Until then: open **Settings → AI model**, pick a **Provider**, choose **Account** sign-in or paste an **API key**, and save — it applies to the next agent session. ## Related [Section titled “Related”](#related) [Bakulai Agent overview](/agent/) # Add an agent > Hire an agent into a room — name, role — and what happens during the minute it takes to set up. **Who this is for:** an owner adding one agent by hand (the [wizard](/agent/start/first-office-wizard/) adds a whole team). ## Steps [Section titled “Steps”](#steps) 1. Click an empty desk in a room, or the **+** on the room’s name plate. The **Add an agent** dialog opens. The Add an agent dialog — `agent/office/agent-01-dialog.png` 2. Type a **Name** or press **Suggest a name**. Names are first names: they become the agent’s profile and appear in chats, so keep them short. 3. Pick the **Room** (pre-filled from where you clicked) and a **Role**. The role list is the room’s: every role shows a one-line summary and a badge with how many ERP tools it holds. See [Choosing a role](/agent/roles/choosing-a-role/). 4. Press **Add**. The agent appears at its desk as *provisioning* and turns *awake* after about a minute: its profile is created, it inherits your model and key, gets its role brief and its room’s automations, and connects to Bakulai. The dialog shows **Your plan allows N office agents**; when the seats are used up, **Add** is disabled until you remove an agent or upgrade. ## What a new agent knows [Section titled “What a new agent knows”](#what-a-new-agent-knows) * Your **company brief** (Settings → Company) and its **room’s brief** — who it works with, who it reports to. * The **ERP tools of its role** — a Bookkeeper can create a draft Journal Entry, a Social Media Manager cannot. * Its room’s **automations**, switched on immediately (payroll drafts and social-media jobs stay off until you enable them). * Nothing about previous conversations: memory is per agent and starts empty. Note Every agent that is awake uses 300–500 MB of memory. The app warns when you exceed **Agents awake at once** (Settings → Office) but never refuses. ## Ask your agent [Section titled “Ask your agent”](#ask-your-agent) ## Limits & safety [Section titled “Limits & safety”](#limits--safety) * One agent per WhatsApp number, Telegram bot or mailbox — an agent cannot share a number with another (see [One number per room](/agent/channels/one-number-per-room/) for the workaround). * Removing an agent deletes its profile and memory — a desktop action, never an agent’s. ## Troubleshooting [Section titled “Troubleshooting”](#troubleshooting) * **“Needs attention”** after adding — open the agent and press **Retry setup**; it resumes from the failed step. * **“an agent named … already exists”** — names are unique per room; pick another. * **The agent answers “no model”** — Settings → AI model has no provider yet, or the key was added after the agent; open the agent → Model tab. ## Related [Section titled “Related”](#related) [Rooms](/agent/office/rooms/) · [Awake and asleep](/agent/office/awake-and-sleeping/) · [Move or remove an agent](/agent/office/move-or-remove-an-agent/) # Awake and asleep > What an awake agent does that a sleeping one cannot, how the app puts agents to sleep, and how it wakes them for their jobs. **Who this is for:** an owner wondering why an agent is grey on the map, or why a job did not run. ## Two states [Section titled “Two states”](#two-states) | | Awake | Asleep | | ------------------------------------- | ----------- | ------------------------------------------- | | Chat in the panel | yes | yes | | Answers WhatsApp / Telegram / email | yes | no | | Runs scheduled automations | yes | no — but is **woken ahead of time** (below) | | Joins meetings and answers colleagues | yes | yes | | Memory | ≈300–500 MB | none | Click an agent → the moon/sun button in the panel header wakes it or puts it to sleep. The Owner’s Office desk follows the same rules. ## Falling asleep [Section titled “Falling asleep”](#falling-asleep) Settings → Office → **Put idle agents to sleep after** (default 2 hours): an awake agent with no conversation for that long is put to sleep — never while busy, in a meeting or talking to a colleague. Set it to 0 to keep everyone awake. ## Waking up for a job [Section titled “Waking up for a job”](#waking-up-for-a-job) Since 0.1.8 the app watches every agent’s schedule. A sleeping agent whose job is due within three minutes is **woken for it**, runs the job, and falls asleep again on the idle timer. An agent asleep at 09:00 still sends its 09:00 report. ## When the app was closed [Section titled “When the app was closed”](#when-the-app-was-closed) Closing the app stops every agent. On the next start: * agents that were awake come back; * a scheduled job missed by **up to a day** runs once, marked **Ran late** in the Activity tab; * older misses are skipped (yesterday’s briefing is not sent today); * a customer follow-up missed by up to 12 hours is re-sent with a short apology; older ones are dropped and you are told. See [Keeping the office running](/agent/automations/always-on/) for launch-at-login and keep-awake. Note A closed laptop lid still sleeps the computer. “Keep the computer awake” prevents *idle* sleep only. ## Ask your agent [Section titled “Ask your agent”](#ask-your-agent) ## Troubleshooting [Section titled “Troubleshooting”](#troubleshooting) * **Grey avatar right after waking** — the agent’s process needs 10–20 seconds; the map updates on the next poll. * **“N agents are already awake (limit)”** — Settings → Office → **Agents awake at once**; the wake happens anyway, the message is a memory warning. * **An agent never wakes for its job** — its automation is off (Activity tab), or the app was not open at that time. ## Related [Section titled “Related”](#related) [Keeping the office running](/agent/automations/always-on/) · [How automations work](/agent/automations/how-automations-work/) # The company brief > One text every agent reads at the start of a conversation — what you sell, to whom, how you speak. **Who this is for:** an owner who wants every agent to know the business without repeating it in every chat. ## What goes in [Section titled “What goes in”](#what-goes-in) Settings → **Company** holds one Markdown text of up to **10,000 characters**. Good content: * what you sell, your price points and who buys; * how you want customers addressed (tone, greeting, language); * opening hours, branches, delivery areas, payment methods; * house rules (“never promise a delivery date without checking stock”). Bad content: anything secret (keys, passwords, margins) — agents quote the brief to customers when it helps. ## Steps [Section titled “Steps”](#steps) 1. Open **Settings → Company**. Settings, Company card — `agent/office/company-brief.png` 2. Paste or edit the text, then **Save**. The counter shows the remaining characters. 3. Every agent reads the new brief **at the start of its next conversation**. Running conversations keep the old one until they end. Note Room and role briefs are added automatically on top of the company brief; you do not repeat department details here. ## Ask your agent [Section titled “Ask your agent”](#ask-your-agent) ## Limits & safety [Section titled “Limits & safety”](#limits--safety) * 10,000 characters. Longer text is refused, not truncated. * The brief is part of every agent’s instructions — a change through an agent asks for your confirmation first. ## Related [Section titled “Related”](#related) [Add an agent](/agent/office/add-an-agent/) · [Marketing preferences](/agent/marketing/preferences/) # Move or remove an agent > Rename an agent, change its role, move it to another room, or remove it for good. **Who this is for:** an owner reorganising the office. ## Change name, role or room [Section titled “Change name, role or room”](#change-name-role-or-room) 1. Click the agent, then the gear in the panel header. The agent dialog opens on **General**. The agent dialog, General tab — `agent/office/agent-settings-general.png` 2. Change the **Name**, the **Role** or the **Room** and press **Save**. Moving to another room offers that room’s roles. Changing the role or the room **rewrites the agent’s brief**: its tools, skills and instructions follow the new role from the next conversation. Its memory stays. ## Remove an agent [Section titled “Remove an agent”](#remove-an-agent) 🖐 Hands-on step This part is done by you at the desktop app: QR codes, keys, tokens and deletions never pass through an agent or the tablet. An agent can only open the screen for you. Removing is permanent and done only from the desktop: the agent dialog → **General** → **Remove agent**. Its profile, memory, channel links and conversations are deleted; a linked WhatsApp number is unlinked first. Tip Prefer putting an agent to sleep or switching its automations off when you only want it quiet for a while. ## Ask your agent [Section titled “Ask your agent”](#ask-your-agent) ## Limits & safety [Section titled “Limits & safety”](#limits--safety) * An agent cannot remove another agent, or itself. * Rename carefully: colleagues address each other by name in the office (tasks, inbox, meetings). ## Troubleshooting [Section titled “Troubleshooting”](#troubleshooting) * **“move the agents out before changing the room type”** — you are changing the room, not the agent; move the agents first. * **The panel still shows the old room** — it follows the agent; press the reload arrow in the panel header. ## Related [Section titled “Related”](#related) [Add an agent](/agent/office/add-an-agent/) · [Choosing a role](/agent/roles/choosing-a-role/) # Rooms > Departments on the map — what a room carries, how to add one from the catalog and what its settings do. **Who this is for:** an owner shaping the office — which departments exist and how each one meets. ## What a room is [Section titled “What a room is”](#what-a-room-is) A room is a **department type** from a catalog of 14: Owner’s Office, Finance, Sales, Marketing, Operations & Inventory, Purchasing, HR, Customer Service, Reception, Design Studio, Engineering, and three shared rooms (Meeting Room, Coffee Break, Lounge). A new office starts with six; the rest are added from the catalog. The type decides three things: * **which roles** you can hire into it (a Bookkeeper sits in Finance, a Social Media Manager in Marketing); * **which automations** its agents get switched on when they arrive (the room’s automation groups); * **the daily meeting** — its default time and who chairs it. Rooms are laid out automatically; you cannot drag walls. ## Add a room [Section titled “Add a room”](#add-a-room) 1. Press **Add room** at the bottom of the map (or search “room” with ⌘K). The Add room button on the map — `agent/office/rooms-01-add.png` 2. Give it a **Name** and pick the **Department type**. The name becomes the room’s id, so pick the final one now. 3. Set the **Time zone** if the department works in another zone — every agent in the room runs its schedules in that zone. 4. Optionally switch on the **Daily meeting**: **When** (a preset or **Custom…** cron), the **Chair** (first agent in the room by default), **Send minutes via** (the chair’s channel or your Owner’s Office agent), and an **Agenda**. Save the room first, then add agents to enable the meeting. ## Change or remove a room [Section titled “Change or remove a room”](#change-or-remove-a-room) Click the room’s name plate on the map to open the same dialog. Changing the **Department type** is only possible while the room is empty. **Remove room** deletes the room and is only offered when no agent sits in it. Caution Reception seats one agent. Shared rooms (Meeting Room, Coffee Break, Lounge) never hold desks — agents visit them. ## Ask your agent [Section titled “Ask your agent”](#ask-your-agent) ## Limits & safety [Section titled “Limits & safety”](#limits--safety) * Removing a room is a desktop action; an agent can only tell you which rooms are empty. * A room’s time zone is written into every member agent’s schedule; changing it moves their jobs. ## Troubleshooting [Section titled “Troubleshooting”](#troubleshooting) * **“room … already exists”** — another room turned into the same id; pick a different name. * **The meeting never runs** — it needs at least two participants: two agents in the room, or one agent plus your Owner’s Office desk. ## Related [Section titled “Related”](#related) [Add an agent](/agent/office/add-an-agent/) · [Daily meetings](/agent/meetings/daily-meetings/) · [Choosing a role](/agent/roles/choosing-a-role/) # The Review tab > Every document your agents wrote in Bakulai — open it, mark it done, or send the agent back for a revision. **Who this is for:** an owner who wants one place to see — and approve — what the agents wrote. Everything an agent creates or changes in Bakulai is a **draft**. The Review tab lists those drafts as they happen: a quotation from a WhatsApp price request, a Lead from a prospect’s email, a leave application from a staff message, a journal entry from a receipt photo. ## Steps [Section titled “Steps”](#steps) 1. Open the panel’s **Review** tab (the clipboard icon; the TopBar shows a badge with the number of open drafts). Your own desk lists the whole office; an agent’s desk lists only its documents. The Review tab with open drafts — `agent/review/review-tab.png` 2. Press the document’s name — **Open in Bakulai** — to read it in the ERP. Approve or submit it there; the Review tab never submits. 3. Press **Done** when you have handled it (the row moves under **Done**; **Back to open** brings it back). 4. Press **Ask for revision**, type what should change (“qty 5, ship next Monday”) and **Send to …**. The agent receives it as an inbox message, edits the draft, and the row reopens marked **updated**. ## Notifications [Section titled “Notifications”](#notifications) New drafts are announced on your phone in batches (Settings → Office → **Escalations to your phone**): when five are waiting, or ten minutes after the first one. Note A document the agent updates again after a revision request comes back as **open** — you see every round. ## Ask your agent [Section titled “Ask your agent”](#ask-your-agent) ## Limits & safety [Section titled “Limits & safety”](#limits--safety) * The tab records what agents did; submitting, cancelling and deleting stay in the ERP, under your login. * Drafts made while the app was closed are still recorded (the agent’s tools report them when the app is next open). ## Troubleshooting [Section titled “Troubleshooting”](#troubleshooting) * **A draft is missing** — the agent’s tool call failed (no draft was made) or it was made by a tool outside Bakulai; open the agent’s chat to see what it did. * **“Ask for revision” says the agent is gone** — the agent was removed; edit the draft yourself in the ERP. ## Related [Section titled “Related”](#related) [How automations work](/agent/automations/how-automations-work/) · [What agents never do](/agent/roles/what-agents-never-do/) # Choosing a role > 53 roles across 11 departments — what each one is for and which ERP tools it holds. **Who this is for:** an owner picking a role for a new agent. Note This page is being written. Until then: the **Add an agent** dialog shows every role of a room with a one-line summary and how many ERP tools it holds. ## Related [Section titled “Related”](#related) [Bakulai Agent overview](/agent/) # What agents never do > Submit, cancel, delete, approve, import — always a human, on every role. **Who this is for:** anyone worried about what an agent could change in Bakulai. Note This page is being written. Until then: no agent, whatever its role, can submit, cancel, delete or approve a document; everything it writes is a draft you review in the Review tab. ## Related [Section titled “Related”](#related) [Bakulai Agent overview](/agent/) # The first-office wizard > Hire the team a retail shop, F&B, services, wholesale or online shop usually needs — in one screen. **Who this is for:** an owner with an empty office, or one who wants to add a whole department at once. The wizard appears once, right after setup, when the office has no agents yet. Later it lives under **Settings → Office → Set up from a template…** and only *adds* what your office lacks — it never removes anything. ## Steps [Section titled “Steps”](#steps) 1. Pick what your business does: **Retail shop**, **Food & beverage**, **Services**, **Wholesale & distribution** or **Online shop**. The wizard's business-type cards — `agent/start/wizard-01-type.png` 2. Answer two questions: **Do you have a business WhatsApp number?** adds a customer-service agent to answer it. **Do you post on social media?** adds a marketing agent. Linking the number and the accounts happens later, in Settings. 3. Check the preview. It lists the agents about to be hired (name, role, room) and how many seats your plan allows — the smallest useful team comes first, the rest fills in when the plan has room. Press **Hire N agents**. The preview with the agents to hire — `agent/start/wizard-02-preview.png` 4. Wait. Each agent takes about a minute to set up; you can close the window and watch the map. An agent that fails shows **Needs attention** — open it and press **Retry setup**. Each agent’s automations follow its room and start switched on (payroll drafts are the exception: you switch those on yourself). Tip The templates are a starting point. Rename, move or remove any agent afterwards — see [Move or remove an agent](/agent/office/move-or-remove-an-agent/). ## Ask your agent [Section titled “Ask your agent”](#ask-your-agent) ## Limits & safety [Section titled “Limits & safety”](#limits--safety) * The wizard runs on the desktop only; a paired tablet cannot start it. * It respects your plan’s seat count: with 3 agents already hired and a Pro plan (5), it adds at most 2. ## Troubleshooting [Section titled “Troubleshooting”](#troubleshooting) * **“Nothing to add”** — every role of the template is already in the office. Add single agents instead. * **An agent stays on “Needs attention”** — open its desk, press **Retry setup**; if it keeps failing, Settings → Account & app → **Run agent health check**. ## Related [Section titled “Related”](#related) [Add an agent](/agent/office/add-an-agent/) · [Rooms](/agent/office/rooms/) · [Requirements](/agent/start/requirements/) # Install and sign in > Download the app, sign in with your Bakulai account and let it set up the agent runtime. **Who this is for:** an owner installing the app for the first time, on a Mac or a Windows PC. 🖐 Hands-on step This part is done by you at the desktop app: QR codes, keys, tokens and deletions never pass through an agent or the tablet. An agent can only open the screen for you. ## Steps [Section titled “Steps”](#steps) 1. Download the installer for your computer from [releases.bakulai.com](https://releases.bakulai.com) and open it. On macOS drag **Bakulai Agent** into Applications; on Windows run the installer. 2. Open the app. Press **Sign in with Bakulai**. Your browser opens the Bakulai login; sign in with the same account you use at erp.bakulai.com and press **Allow**. The browser tab can be closed afterwards. The landing screen with the Sign in with Bakulai button — `agent/start/01-sign-in.png` 3. The app checks your plan. Free and Kasir accounts see **This feature is included in the Pro and Max plans** with a **View plans in Bakulai** button. 4. **Setting up Agent Hermes** runs once: it downloads the agent runtime (about 1.7 GB, three to four minutes on a good connection) and prepares your own desk. Leave the window open. The Setting up Agent Hermes progress screen — `agent/start/02-setup.png` 5. When the office appears, the **first-office wizard** offers to hire a team for your kind of business — [take it](/agent/start/first-office-wizard/) or press **Skip — I’ll build it myself**. 6. Open **Settings → AI model** and connect a model provider (account sign-in or API key). Without a model, agents cannot answer. Settings, AI model card — `agent/start/03-model.png` Note Signing in once is enough: the app hands its login to the agents, so no agent ever asks you to log in again. If your Bakulai password changes or the login is revoked, the Home screen shows a **Link to Bakulai** button. ## Ask your agent [Section titled “Ask your agent”](#ask-your-agent) ## Limits & safety [Section titled “Limits & safety”](#limits--safety) * One Bakulai account per installation. The agents act **as you** in Bakulai (drafts carry your name). * The runtime lives in the app’s data folder (`~/.bakulai-agent` on macOS); Settings → Account & app → **Open data folder** shows it. Deleting it means a fresh setup. ## Troubleshooting [Section titled “Troubleshooting”](#troubleshooting) * **Setup stops at “Node”** — the bundled Node.js could not run; restart the app, it retries from where it stopped. * **“The agent runtime is not running”** in the panel — Settings → Account & app → **Run agent health check** shows what is missing; **Check for updates** installs the latest app. * **The browser signed in as the wrong account** — sign out at `erp.bakulai.com/app/logout` first, then press **Sign in with Bakulai** again. * **Windows: the Chat tab says the terminal needs WSL2** — install WSL2 (Microsoft Store → Ubuntu) and restart the app; automations and channels work without it. ## Related [Section titled “Related”](#related) [Requirements](/agent/start/requirements/) · [The first-office wizard](/agent/start/first-office-wizard/) · [Choose a model and key](/agent/models/choose-a-model-and-key/) # Requirements > Plan, computer, memory, disk and network needed to run Bakulai Agent. **Who this is for:** an owner deciding whether to install the app, or wondering why it feels slow. ## Plan [Section titled “Plan”](#plan) Bakulai Agent is part of the **Pro** and **Max** plans. Free and Kasir accounts see an upgrade screen after signing in (“This feature is included in the Pro and Max plans”). | | Pro | Max | | ------------------------------------ | --- | --- | | Office agents (beyond your own desk) | 5 | 15 | | “From anywhere” tablet access | yes | yes | The exact numbers come from your subscription; the app shows them as “Your plan allows N office agents”. ## Computer [Section titled “Computer”](#computer) * **macOS** (Apple Silicon or Intel) or **Windows 10/11**. On Windows the chat panel needs WSL2 for its terminal; the rest of the app works without it. * **Memory:** every agent that is *awake* runs its own process and uses roughly **300–500 MB**. Three awake agents on an 8 GB laptop is comfortable; ten is not. The app puts idle agents to sleep after two hours by default (Settings → Office → “Put idle agents to sleep after”) and warns when you wake more than “Agents awake at once”. * **Disk:** the first start downloads the agent runtime, about **1.7 GB**, into the app’s own folder. Nothing is installed system-wide. * **Node.js** is bundled; you do not install anything by hand. ## Model [Section titled “Model”](#model) Agents think with a model **you** bring: an OpenRouter, Anthropic, OpenAI, Gemini, DeepSeek, xAI, MiniMax or Nous account or API key, set once in Settings → AI model. New agents inherit it. Usage is billed by that provider, not by Bakulai. ## Network [Section titled “Network”](#network) * The app talks to `erp.bakulai.com` (your data) and to your model provider. WhatsApp, Telegram and email connect from your computer. * Scheduled jobs only run while the app is open. Turn on **Launch at login** and **Keep the computer awake** (Settings → Office) for an unattended computer — see [Keeping the office running](/agent/automations/always-on/). ## Ask your agent [Section titled “Ask your agent”](#ask-your-agent) ## Related [Section titled “Related”](#related) [Install and sign in](/agent/start/install-and-sign-in/) · [Awake and asleep](/agent/office/awake-and-sleeping/) # What is Bakulai Agent? > The office, its rooms and agents, what they can and cannot do, and how their work reaches you. **Who this is for:** an owner opening the app for the first time, or anyone who wants the mental model before clicking around. ## The office [Section titled “The office”](#the-office) The 3D office with rooms and agents at their desks — `agent/start/office-overview.png` * A **room** is a department: Sales, Finance, Marketing, Operations & Inventory, Purchasing, HR, Customer Service, Design Studio, Engineering, Reception — plus the Owner’s Office and three shared rooms (Meeting Room, Coffee Break, Lounge). Each department carries its own set of **automations** and a **daily meeting**. * An **agent** is a desk in a room. It has a name, a **role** (53 to choose from, for example *Bookkeeper* or *Social Media Manager*), its own memory and its own chat. Behind the scenes each agent is a separate Hermes profile on your computer. * The **Owner’s Office** holds your own desk: the agent you talk to in the panel, the one that reports what the others did. ## What agents do [Section titled “What agents do”](#what-agents-do) * **Answer in your channels.** Link a WhatsApp number, a Telegram bot or a mailbox to an agent and it replies to customers and staff from there. * **Run automations.** Scheduled jobs (a morning briefing, overdue-invoice reminders, a weekly content calendar) and event-driven ones (a prospect’s email becomes a draft Lead, a receipt photo becomes a draft expense). * **Write into Bakulai — as drafts.** Quotations, invoices, purchase orders, leave applications, journal entries: always draft, never submitted. You review them in the **Review** tab and approve them in the ERP. * **Talk to each other.** Agents ask colleagues questions, leave inbox messages, hand each other tasks and hold a daily meeting whose minutes reach you. ## What agents never do [Section titled “What agents never do”](#what-agents-never-do) * Submit, cancel, delete or approve a document in Bakulai. Those tools are never given to any agent. * Send a social media post or comment without going through the approval queue you control. * Cold-message strangers on social media. * Handle your keys: model API keys, WhatsApp QR pairing and social logins happen on your screen, not in a chat. Tip The app’s screens are in English; the agents answer in Indonesian (or the customer’s language). This documentation exists in both. ## Where the work shows up [Section titled “Where the work shows up”](#where-the-work-shows-up) | You want to… | Look at | | ------------------------------------------------ | ---------------------------------------------------------- | | chat with an agent | the **Chat** tab of the panel (select an agent on the map) | | see every customer conversation | the **Inbox** tab | | see what agents asked each other and their tasks | the **Tasks** tab | | approve social comments and posts | the **Marketing** tab | | read meeting minutes or run a meeting now | the **Meetings** tab | | check what ran and when | the **Activity** tab | | review the drafts agents wrote in Bakulai | the **Review** tab | ## Ask your agent [Section titled “Ask your agent”](#ask-your-agent) ## Related [Section titled “Related”](#related) [Requirements](/agent/start/requirements/) · [Install and sign in](/agent/start/install-and-sign-in/) · [Rooms](/agent/office/rooms/) # Aspri > aspri.bakulai.com — the owner's voice and text assistant. aspri.bakulai.com — the owner’s voice and text assistant. Pages for this product are being written. In the meantime, the app itself and its AI assistant are the fastest way to learn it. # ERP > erp.bakulai.com — sales, purchasing, stock, accounting, the AI assistant and the MCP connector. erp.bakulai.com — sales, purchasing, stock, accounting, the AI assistant and the MCP connector. Pages for this product are being written. In the meantime, the app itself and its AI assistant are the fastest way to learn it. # POS > pos.bakulai.com — the offline-first point of sale. pos.bakulai.com — the offline-first point of sale. Pages for this product are being written. In the meantime, the app itself and its AI assistant are the fastest way to learn it.