Project Overview
Technology Stack
Languages and Build
| Technology | Version | Role |
|---|---|---|
JDK |
21 |
Toolchain and JVM target for every module. The engine container image is based on Temurin 21. |
Kotlin |
2.4 |
Implementation language of all modules. |
Gradle |
9.6 (wrapper) |
Build tool. Always build through |
KtLint |
1.8 |
Formatting and lint, wired as a pre-commit hook — see Code Conventions. |
Frameworks
| Technology | Version | Role |
|---|---|---|
Spring Boot |
4.1 |
Application framework for the engine, bridge and relay. The engine and relay use the reactive stack; the bridge runs as a servlet application because it drives blocking WebDriver sessions. |
Spring WebFlux / Project Reactor |
3.8 |
The engine is reactive end to end — a conversation is a |
Spring Security |
via Spring Boot |
OAuth2 resource server (JWT), plus API key and Basic authentication filters. |
Spring Data (reactive) |
via Spring Boot |
Repositories for MongoDB and Elasticsearch. |
Spring AI |
2.0 |
Chat model abstraction over the language model providers, plus MCP client support. |
Jackson |
3.1 |
JSON serialization. A second, MessagePack-backed mapper provides the binary wire format. |
Netty Socket.IO |
2.0 |
Socket.IO server used by the engine (port 9011) and the relay (port 9012). |
gRPC / Protobuf |
1.80 / 4.34 |
Client for Triton Inference Server (embeddings and self-hosted models). |
JavaCV / FFmpeg |
1.5 / 7.1 |
Audio and video processing: WebP encoding of visuals, session video recording, media remuxing.
The engine image also carries a native |
Appium / Selenium |
10.1 |
Used by the bridge to drive real mobile devices and browsers — see Bridge. |
Kotest / JUnit 5 / MockK / Testcontainers |
— |
Test stack. |
Springdoc |
3.0 |
Generates the OpenAPI document served at |
External Services
The engine needs the following services at runtime. In development they are provided by the local infrastructure stack (see Development Setup); in a deployment they are managed services or in-cluster deployments.
| Service | Required | Purpose |
|---|---|---|
MongoDB |
Yes |
Primary operational data store. Holds tenants, projects, agents and their revisions, sessions and turns, access control lists, secrets, evaluation definitions and results, OAuth tokens and chat memory. The engine creates its indexes on startup. |
Elasticsearch |
Yes |
Semantic memory and search. Stores the scoped memory units (session, short-term) together with their embedding vectors and serves vector similarity queries — this is what makes agent memory and knowledge retrieval work. Also the index for technical reports and bridge test runs. |
Keycloak |
Yes for authenticated use |
Identity provider and JWT issuer. The engine validates access tokens against its issuer and maps the token’s realm roles to engine authorities. Also the integration point for enterprise identity providers. |
Object storage |
Yes |
Resource storage for generated and recorded content: synthesized speech cache, session
recordings, composed avatar thumbnails. Three backends are supported — S3-compatible (MinIO
locally), Azure Blob Storage and the local filesystem — selected with |
OpenTelemetry collector |
Optional |
Receives traces, metrics and logs from the engine. Behind it the local stack runs Prometheus, Tempo, Loki and Grafana; a deployment additionally exposes Prometheus metrics through the actuator endpoint. |
PostgreSQL |
Only with Keycloak |
Database used by Keycloak itself. The platform services do not use it. |
AI and Third-Party Providers
Which providers are actually used is per-deployment configuration; credentials are supplied through the deployment’s secret store.
| Category | Providers |
|---|---|
Language models |
OpenAI, Azure OpenAI (including reasoning models and round-robin over several deployments),
Anthropic, Google GenAI (Gemini). Configured per engine component in |
Embeddings |
Triton (self-hosted, default), OpenAI, Azure OpenAI. |
Speech to text |
Amazon Transcribe, Google Speech-to-Text, Deepgram, Soniox. |
Text to speech |
Amazon Polly, Google, Microsoft Azure, ElevenLabs, OpenAI, Hume AI, MamaAI, Triton. |
Realtime (speech to speech) |
OpenAI-compatible realtime models, and an internal realtime pipeline composed of the STT/LLM/TTS components above. |
Avatars and animation |
Triton-served animation models and the external LiveAvatar service. |
Telephony |
Twilio (Media Streams) — see Twilio Telephony Integration. |
Messaging and notification |
Firebase Cloud Messaging (push), Slack (agent in a channel), Mailgun (email). |
Tooling |
Model Context Protocol servers, providing external tools to agents; ClickUp for user-submitted bug reports; BrowserStack for the bridge’s device farm. |