Changelog
What's new.
Every improvement to the platform, as it ships.
· MCPGatewayService
Documents, translation and OCR packs
docs_search, docs_read, translate_text and ocr_document (spec 4.20). A document is routed by DocsService's description before any byte is fetched: text is decoded here (a Markdown or YAML file stored as octet-stream by its extension), the PDFs and images Kamo OCR reads go to AIService F2, a document of more than five pages is refused before its download, and anything else is not readable without one. Document ids are canonical longs; language codes are checked as F1 checks them.
· kamo-internal
Meeting page — dial-in, invite or remove AI members, transcripts and summaries
· AIService
Embeddings on the pinned model and rerank façades
Inputs and documents reach the model in batches it accepts (TEI refuses more than its client batch of 32 with 422; a reranker's maxDocuments); malformed fields are refused, never read as absent.
· MCPGatewayService
The AI's workstation — computer_* tools with auto-wake and lease, workstation pack
· kamo-internal
Meeting history page
· MCPGatewayService
Approvals pack — decision-only approvals and approval status
approvals_request asks the AI's approver through kamoai-service K3 with toolName null (nothing is re-executed on APPROVE); a class the charter forbids is refused in the planner, before any approver is asked (SP05-T30). approvals_status answers only the requester or the approver.
· AIService
POST /api/ai/agent/step with tool use, thinking replay, cache breakpoints and SSE
· MCPGatewayService
Phone and SMS packs — consent-checked calls, call history, texting
phone_call posts K6 with the caller's run and key; a reason-less 404 is not deployed, a reasoned one (NOT_ENROLLED) is the endpoint's answer. sms_send opens the conversation as a definitive step, maps VOIPService's retryable PROVIDER_ERROR to OUTCOME_UNKNOWN and every other code to REJECTED. Threads and messages are projected with UTC times and no attachment URLs.
· AIService
OpenAI-compatible chat completions with tools, images, structured output and SSE
· MCPGatewayService
Knowledge base, sales scripts, RAG, directory and notifications packs
· AIService
Internal router resolve endpoint
E1 POST **************** the ordered candidates and exclusions for a capability, 424 no_capability when none, 404 org_not_found for an org that is not live (read retried through the Yugabyte DDL window), and 400 invalid_request for any malformed field, never a silently ignored one. A list-valued required attribute reads as the router's comma form.
· AIService
Legacy routing, /internal/text and /internal/vision on the router, with provenance
· MCPGatewayService
Contacts, leads and accounts packs — search, read, create, update, notes, status, claim, history
The 12 CRM tools of spec §4.20 against EmailService and SecurityService as they are on main (SP05-T27): a status without a sub-status clears the old one; a contact update writes back everything it was not given and sets company and title on the primary organisation; new emails and phones get a primary and the editor's labels; ids are read as longs (canonical paths and lead:<uid> targets, overflow refused before any call); the status filter is an enum of the stored words; a claim answers the credit spent and the accept gate is a CONFLICT; accounts read SecurityService's envelopes; times are UTC instants.
· AIService
The gate's AI-member path; retire the persona outreach engine
Quiet hours convert the service clock into the contact's zone instead of relabelling it (ruling SP03-T32).
· AIService
Session/internal caller context, app gate, provenance and the gateway call runtime
· MCPGatewayService
Calendar and meetings packs — events, availability, scheduled work, dial-in, invites
Beyond the brief (spec SP05-T26-build): no guessed zone (EmailService applies the member's effective zone); reminders only when asked on a create and never re-sent on an update; an update sends back only typed-in guests; an occurrence id defaults to scope THIS; a start alone keeps the event's length; exact 62-day windows; a meeting's hostUrl never reaches the model.
· VOIPService
PBX policy feed and AI voice admin endpoints
V7 GET /internal/voip/pbx-config (cluster secret) answers kamo-asterisk-support's policy pull through APIService and records the helper's heartbeat; a Redis failure costs the heartbeat, never the outside-calls list. V8-V12 give an admin the phone server's AI voice verdict and settings and the per-extension outside-calls flag (MANAGE_VOIP_SETTINGS; V11/V12 also MANAGE_EXTENSIONS). V8 names the server that answered, V9 reports no blank helper version, and V10 refuses a source address with a leading zero, which LiveKit would never match.
· kamo-internal
AI calls console — listen, whisper, barge, take over, hang up
/ai-calls polls S1 every five seconds (D27) and opens the call SP10's deep link names (D36). The supervised call is pinned above the list, so a tab switch or a refresh never drops the supervisor's room; it closes, saying so, once the call leaves the live list. Every LiveKit join is numbered, so an overtaken join, a leave or an unmount drops its own room; talking takes the microphone before the listening room is left. livekit-client 2.22.3 (exact).
· AIService
Web chat answered by an AI member's brief, then the persona's
· SecurityService
List the org's active AI members
· AIService
Per-AI-member budgets from the charter with one AI_ALERT per threshold
· MediaService
Encrypted meeting transcripts and summaries, companion upload, downloads, retention
M6-M9 answer JSON whatever the client accepts and ignore unknown body fields (MediaService's bare ObjectMapper fails on them); M6 is NOT_READY while a transcript is being written, M9 answers the view without segments, M8 requires a meeting of the caller's organization. Every transcript write survives a Yugabyte conflict; expired transcripts are swept on their own. Ruling SP14-T10.
· kamo-internal
Meetings API client and proxy routes; meetings carry a title
· VOIPService
Internal AI line endpoints for KamoAI
· AIService
Personas point at a job title; Studio compile and drafting retired
· MCPGatewayService
Tasks pack — lists, create, update, status, assignment, comments, links
Beyond the brief (SP05-T25): an assignee is read as the member id KBService reads (beyond a long is INVALID_ARGUMENTS), an update that changes nothing or both sets and clears the due time is refused by the planner, and link references are canonical, so what KBService would refuse never reaches an approver. A write KBService answers 204 (the task left the caller's sight) answers {id, visible:false}. Planners name the task and the change. The projection adds assignedAt, permissions and openPrerequisiteCount, and gives createdAt/doneAt as UTC instants (SP10's rehearsal parses them).
· SecurityService
Internal resolve for KamoAI and the charter source behind SP02's routes
I2 POST **************** answers S3's resolution for the org it is given, behind the KamoAI secret, with S3's draft reader and S3's org-checked department walk (CharterController.parentOf, now package-visible). The org id follows SP02's rule: digits that fit a long, never a truncated number. CharterSourceBean implements SP02's KamoaiCharterSource: the I1 body in one read-only transaction, and the roster's stamps one member at a time outside any transaction (preflight ruling SP03-T20).
· AIService
Candidate walk with failover, one-shot parameter fallback and metered streaming
Provider credentials never reach the log, the usage row or the rethrown error; a failed provider-health write never costs an answer; an interrupt stops the walk.
· AIService
Fold every sales agent into a job-title persona on startup
· VOIPService
Provision, retire and resolve AI voice lines
Retire deletes the PBX extension only when it is still there, and a phone server in use that refuses the delete keeps the line and answers 502, so the minute SIP sync retries instead of orphaning the extension. A re-provisioned line forgets the extension id of the line it replaces, an extension given by hand is released when the AI line is assigned, and the work extension goes with the line on retire.

Your universe is waiting.
Start free in minutes. Add products whenever you are ready — no migration, no new logins.
Free forever — no credit card required