Skip to main content
Vexa is the meeting-bot platform vendored into Kioku from Vexa-ai/vexa.

Services

ServicePortPurpose
api-gateway8000Public API entry point
admin-api8001Admin operations
meeting-api8080Bot lifecycle, meeting records
agent-api8100AI agent integration
runtime-api8090Container orchestration (Docker/K8s/Process/RunPod)
transcription-service80Whisper speech-to-text
tts-service8002Text-to-speech
mcp18888Vexa MCP server
redis6379Transcription streams, scheduling
minio9000Recording storage
vexa-botPlaywright browser bot (joins meetings)

Runtime API Backends

The runtime-api orchestrates bot containers with pluggable backends:
BackendEnvDescription
dockerORCHESTRATOR_BACKEND=dockerDefault. Uses Docker socket to spawn bot containers.
kubernetesORCHESTRATOR_BACKEND=kubernetesK8s pods.
processORCHESTRATOR_BACKEND=processSubprocesses (single-host, no Docker).
runpodORCHESTRATOR_BACKEND=runpodRunPod REST API. Spawns GPU bot pods per meeting.

Bot Lifecycle

1. SPAWN
   POST /vexa/bots → Hivemind → Vexa meeting-api → runtime-api → bot container starts

2. MEETING
   Bot joins Google Meet/Zoom/Teams
   Audio captured → Whisper transcribes → Redis streams → meeting-api
   Bot sends status callbacks (joining, active, exited)

3. STOP (one of three paths)
   a) User stop: DELETE /vexa/bots → runtime-api stops container
   b) Bot self-exit: leaves meeting (everyone left / timeout)
   c) Scheduler timeout: 2h max → auto-stop

4. CLEANUP
   runtime-api detects exit → fires callback → meeting-api finalizes
   Transcript sent to Hivemind → embedded → searchable

Custom: RunPod Backend

Kioku adds a custom runpod backend that spawns ephemeral GPU pods via the RunPod REST API:
  • Bot pods run kyomoto/kioku-stateless image (Playwright + Whisper + GPU)
  • BOT_REDIS_URL and BOT_MEETING_API_URL env vars point bots back to the stateful pod’s public IP
  • A Redis-backed reaper loop polls pod status every 15s for exit detection
  • Pod is deleted on exit