Catalogue and resolve endpoints for the charter editor
S1 GET /api/security/charter/catalog and S3 POST /api/security/charter/resolve (spec 4.8). A member draft refused by S6's edit rule answers with S6's bodies (re...
AI call telemetry entities
AI_CALL and AI_CALL_EVENT (spec §4.2/§4.3): direction, status, outcome and event-type enums (STRING), the two entities and their repositories. AiCallStatus.LIVE...
Approvals — decision form, list, Interaction Center tab and deep-link page (SP10)
The approval form (A3/A4) with wording-only edits, the Workforce hub list, the Interaction Center Approvals tab with its A2 badge, and /workforce/approvals/<id>...
Meeting minutes contract — prompt, JSON parse, markdown and HTML rendering
Mirrors kamoai-voice's minutes.py exactly: caps and chunks count code points (no split emoji), Unicode white space is stripped, only JSON arrays are lists, text...
Write-time checks for hide markers and escalation targets
A refusal leaves a caller's transaction committable, so the member charter PUT still answers 400; a hide marker cannot target another hide marker; a malformed e...
Org MCP servers as ext_* tools over Streamable HTTP and legacy SSE; STDIO retired
A server's own words reach a caller only inside the untrusted wrap; nothing sent is definitive (D45); the URL guard runs on every use; one session and one tool ...
Svc_kamoai_voice follows the org pause and the kill switch (KamoAI SP13)
AI voice line and per-server AI voice settings entities; outbound flag on extensions
Pull the PBX policy from Kamo; outbound allow-list and AI extensions as managed dial plan; AI endpoints point at LiveKit
Every POLICY_SECONDS the agent pulls GET /api/voip/pbx/config (also its heartbeat) and writes [kamo-outbound-allowed] and [kamo-ai-extensions] as a managed sect...
Numeric participant ids, meeting titles, AI invitees that join at the start
A sales agent is a job-title persona: gallery, studio with the charter editor, Rehearse
KamoAI voice SIP sync and retention jobs
kamoaiVoiceSipSyncJob POSTs kamoai-service's X7 **************** every minute, so LiveKit's SIP trunks and dispatch rules follow the AI lines and who is ACTIVE;...
Compile a charter into an operating brief and a job description
RRuleText words every rule CharterRRule accepts (month-day and monthly weekday lists, an hourly rule's days) and quotes one it cannot read, so a single stored r...
LiveKit server, SIP and Redis on k3m1 for KamoAI voice; signalling route; ports and secrets
The signalling EndpointSlice uses k3m1's node address 10.0.50.1 (k1m1's eno49 corrupts TCP payloads), the TURN secret volume is 0400 (livekit-server refuses a s...
Show inherited qualifications on a posting's detail
A posting's public advert, the member's deep link and HR's editor now carry qualifications: [{category, importance, text}] (KamoAI SP03 D1) - the effective QUAL...
Number-level AI voice consent ledger with append-only history
The gate also counts the number's newest REVOKED event, so a revocation survives its record moving to another number, a backdated re-grant and a stale whole-row...
PBX policy pull for kamo-asterisk-support; ring VOIPService with the cluster secret
SP14 DDL — numeric participant ids, AI participants, dial-in PINs, meeting transcripts
Numeric participant member ids, AI participant fields, meeting title and dial-in PIN
AI voice lines, per-server AI voice settings, outbound allow-list as data
KamoAI minute tick job (SP10)
KamoAiShiftTickJob POSTs kamoai-service's K2 tick (/api/kamoai/internal/tick) every minute with X-Internal-Auth = KAMOAI_INTERNAL_SECRET, mapped onto kamoai.int...
Widen svc_kamoai for the KamoAI runtime (SP10)
kamoai-service creates and pulls its own KAMOAI_WORK work queue, runs up to four notify shards (kamoai-notify, kamoai-notify-1..3) on EMAIL_NOTIFICATIONS, publi...
Every recording is transcribed through AIService, per org — Kamo Speech replaces whisper-asr
Internal auth and charter access rules
CharterInternalAuth applies SP02's KamoaiInternalAuth rule to the same secret, so the per-handler guard and the prefix interceptor cannot disagree. CharterAcces...
MCP 2025-06-18 server at /mcp (stateless streamable HTTP, JSON responses)
One JSON-RPC message per POST: initialize, ping, tools/list, tools/call; notifications and responses answer 202; GET and DELETE answer 405. The body is read aft...
Transcribe a chunk through AIService's internal façade, routed per org
Golden image AI layer — Chrome, x11vnc, computer-use-linux, ydotool
Chrome's source is kamo-google-chrome.list, not google-chrome.list: Chrome's postinst (154.0.8037.57) migrates a google-chrome.list into its own google-chrome.s...
Name the org when asking for a transcript — ConversionService now routes it through AIService
The tools/call pipeline — policy, approvals, limits, idempotency, dry run, taint, audit
A stored idempotency entry is answered before the planner reads again (SP05-T11-order); an approved call in a tainted run still answers to the capability and ch...
Role, department and job-title charter write paths; legacy requirements keep other sections
Tool call audit, 180-day retention purge and internal audit read
The insert's transaction is the repository's save (REQUIRES_NEW), begun and committed inside the writer's catch, so no audit failure reaches a tool call. Rows a...
Like what you see shipping?
All of it arrives in your workspace on its own. Start on the free plan and read this page again in a month.
