Agent Studio and Platform Services

Authoring control plane, shared tenant state, the conversation runtimes, and the telephony edge that feeds them

Agent Studio and Platform Services Authoring control plane, shared tenant state, the conversation runtimes, and the telephony edge that feeds them authoring control plane shared tenant state conversation runtime plane telephony edge Authentik SSO · group claims authoritative · Architecture component · IdP Authentik SSO group claims authoritative IdP Studio Users · SSO browser session · Architecture component · admin / developer Studio Users SSO browser session admin / developer Claude Code / Codex · external authoring client · Architecture component · OAuth public client Claude Code / Codex external authoring client OAuth public client Agent Studio · ai-manager — UI, BFF, MCP · authoring control plane · Next.js :3001 Agent Studio ai-manager — UI, BFF, MCP Next.js :3001 collab-gateway · presence + Yjs allow-list · authoring control plane · Go + Node :3510 collab-gateway presence + Yjs allow-list Go + Node :3510 workspace-agent-runner · sandboxed authoring CLI · authoring control plane · FastAPI :8012 workspace-agent-runner sandboxed authoring CLI FastAPI :8012 catalog-builder · A2UI compile + publish · authoring control plane · Node :8090 catalog-builder A2UI compile + publish Node :8090 Redis · presence, doc blobs, streams · shared tenant state · DB 4 presence Redis presence, doc blobs, streams DB 4 presence PostgreSQL · agent_versions.config, tenant RLS · shared tenant state · squashed baseline PostgreSQL agent_versions.config, tenant RLS squashed baseline ai-orchestrator · voice / S2S pipeline, preflight · conversation runtime plane · Pipecat :50051 ai-orchestrator voice / S2S pipeline, preflight Pipecat :50051 conversation-api · sessions, transcripts, SSE · conversation runtime plane · Python :8080 conversation-api sessions, transcripts, SSE Python :8080 async-agent · triggered workflow executor · conversation runtime plane · LangGraph :8000 async-agent triggered workflow executor LangGraph :8000 surface-app · the one embeddable UI · Architecture component · Next.js :3002 surface-app the one embeddable UI Next.js :3002 Callers · PSTN + CCaaS platforms · Architecture component · SIP / streams Callers PSTN + CCaaS platforms SIP / streams SIP Edge · Kamailio + Asterisk · telephony edge · SIP :5060/:5061 SIP Edge Kamailio + Asterisk SIP :5060/:5061 ari-controller · call control, CCaaS gate · telephony edge · Node :3000 ari-controller call control, CCaaS gate Node :3000 media-proxy · RTP / WebRTC fan-in, mixing · telephony edge · Go :8085 / :18080 media-proxy RTP / WebRTC fan-in, mixing Go :8085 / :18080 CCaaS Connectors · Genesys, Connect, Five9, Webex, SCV · telephony edge · Go / Node CCaaS Connectors Genesys, Connect, Five9, Webex, SCV Go / Node OAuth PKCE + MCP tenant + admin claims Y.Doc autosave dispatch job MCP save_draft publish catalog draft + publish presence fan-out catalog rows resolve version trigger rules transcripts + events run events SSE SIP + RTP vendor media streams ARI events allocate media legs CCaaS allow-list gRPC audio session gRPC Legend Frontend Backend Database Cloud Security External

Two Authoring Doorways

  • • Browser editors autosave through collab-gateway, which flushes config back to ai-manager and keeps durable Yjs state in collab_documents
  • • The Yjs converters are a fixed allow-list, so an unlisted top-level config key is silently dropped on every flush
  • • External clients use versioned REST and stateless MCP with fine-grained management scopes, never the platform-admin bypass

AI Authoring Is Sandboxed

  • • Generate with AI and the editor Assistant both run a scoped CLI inside workspace-agent-runner
  • • The sandbox writes only through the generation MCP endpoint using a per-job token bound to one target
  • • Validation is two tiers: structural JSON Schema in Studio, buildability preflight in ai-orchestrator

Publish Is A Database Fact

  • • Runtimes resolve the published agent_versions row themselves; Studio pushes no config to them
  • • Tenant isolation is Postgres RLS, while Authentik groups stay authoritative for membership and platform admin
  • • Not drawn: MinIO catalog bundles, CRM embeds, OTLP telemetry

Telephony Edge

  • • Inbound CCaaS is default-deny: ari-controller rejects calls without an enabled ccaas_pipeline_integrations row
  • • SIP calls land on Kamailio/Asterisk; ari-controller allocates media-proxy legs that stream gRPC audio to ai-orchestrator
  • • Janus, rtpengine, and coturn (WebRTC/TURN media plane) are folded into the SIP edge here