Mail pack — read, search, threads, send, reply, forward, drafts, move, flags
Text helpers, id-safe projections and the fake Kamo services harness for packs
HtmlText lays mail HTML out the way a browser shows it (one jsoup walk: collapsed source whitespace, br, block and paragraph breaks, cells, pre); ThreadIds repr...
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
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.
