Engine Application
Services
Engine services live in engine/service/ and are picked up by the component scan. They are
grouped below by the concern they serve.
Conversation Runtime
| Service | Responsibility |
|---|---|
Builds pipeline configurations and pipeline instances, and runs the session state machine — see Interaction Pipeline. |
|
The Socket.IO side of the conversation transport — see Socket Handlers. |
|
Reads and writes |
|
Wraps the speech recognizer and synthesizer components with normalization, chunking and the audio cache. |
|
Converts speech items into animation events (visemes and blend shapes) for avatar rendering. |
|
Resolves a stored realtime configuration and its input modalities by ID. |
|
Validates user-chosen names against a profanity word list. |
|
Masks personal and sensitive data in tokens and output elements before they are logged. |
Agents, Projects and Prompts
| Service | Responsibility |
|---|---|
The central service for agents and projects: lookup by ref, key or ID with revision resolution, mapping to the API DTOs, agent grouping, starring, and the consumer authorization rules (see Security Implementation). |
|
Builds the |
|
Builds the context for the agent-less pipeline setups. |
|
Assembles the prompts used for an agent: the system prompt and the per-extractor prompts, including prompt invocation tracking. |
|
Load named text templates and render them with Pebble, substituting context variables. |
|
Resolves and creates users from a JWT, a name or a device, qualifying usernames with the deployment’s domain. |
Memory and Knowledge
| Service | Responsibility |
|---|---|
User memory lifecycle: snapshot, restore and delete, backing the memory endpoints. |
|
Creates the reactive embedding model for the configured provider, used by the scoped memories. |
|
Indexes entities (technical reports, bug reports) into Elasticsearch for later retrieval. |
|
Assembles the tool box available to an agent in a turn — see AI Layer. |
Evaluation
| Service | Responsibility |
|---|---|
Runs the evaluations configured for an agent, per turn and at the end of a conversation. |
|
Builds the evaluation status and insight responses (sections, groups, featured result) returned by the evaluation endpoints. |
Feedback
| Service | Responsibility |
|---|---|
Chooses which feedback definition a user is shown and builds its specification, creates the feedback that records the request, and fills it in from the user’s submission, skip or postponement. See Feedback Scheduling. |
Codebook and Development Profile
Both run after a conversation ends, on the back of the evaluations it produced — see Codebook and Development Profile for how they work together.
| Service | Responsibility |
|---|---|
Turns a session’s user-facing evaluation results into coded occurrences: it collects the insight and featured subjects, asks one LLM call to assign each an existing code, and stores the occurrences. Subjects already classified are skipped, so a re-run costs nothing. |
|
Grows the project’s codebook once enough occurrences have piled up unclassified. Claims a batch atomically, asks the model to propose new codes for it, and assigns every text in the batch. |
|
Owns the per-user profile: gathers the evidence, decides whether anything changed since the last
run, drives the generator, computes the deterministic |
|
Runs the LLM tool-loop that edits the profile through
|
|
Replays both mechanisms over a user’s existing sessions, oldest to newest, snapshotting the state after each one. A dry run deletes only the rows it created and restores the previous profile. |
Language Models
| Service | Responsibility |
|---|---|
The |
|
Resolves the effective model configuration for a component — model name, reasoning mode and overrides. |
|
Logs every model invocation with its prompt, response, tool calls and usage, applying sensitive information masking. |
|
Coerces loosely structured model output into typed DTOs, which is what makes extractors resilient to formatting drift. |
|
Tracks the URLs that legitimately appeared in tool results and planning, so links the model invents can be detected. |
|
Checks that a URL is well-formed and reachable before it is shown to a user. |
Integrations
| Service | Responsibility |
|---|---|
Loads, lists and deletes Model Context Protocol connector configurations for a project. |
|
Third-party OAuth: the authorization code exchange with PKCE, token storage and refresh, and the short-lived state store for an in-flight flow. |
|
Implements |
|
Executes the pre-session and post-session webhooks configured on an agent or project. |
|
Send messages to a user, to an agent’s users or to a project’s users; Firebase Cloud Messaging is the delivery channel. |
|
User-submitted bug reports and issues as tasks in ClickUp. |
|
Outbound WebSocket client factory used by components that talk to external realtime services, tracking the active sessions per host. |
|
Reads and decrypts the stored secrets (provider API keys, credential files) scoped to a tenant and project. |
Billing and Usage
| Service | Responsibility |
|---|---|
Checks the tenant’s billing status, seat allowance and remaining minutes before a conversation is allowed to start. |
|
Records event detail records — active users and active conversation duration — which is the basis for usage metering. |
|
Resolves the per-user state of every navigation entry — the recorded state, else the entry’s
default — and writes it: unconditionally for the session-end judge, and for an evaluation through
|
|
|
Reviews, when a session ends, the state of the agent-controlled navigation entries that are global
or mentioned in the session’s agent as |
Debugger
LLMDebuggerSessionService, LLMDebuggerReplayService,
LLMDebuggerStandardReplayOrchestrator, LLMDebuggerOpenAIRealtimeReplayService,
LLMDebuggerRealtimeReplayJudgeService, LLMDebuggerReplayToolCallbackFactory,
LLMDebuggerAuthorizationService, LLMDebuggerAuthConfigurationService and
InternalRealtimeCompanionMatcher support the session debugger — see
Session Debugger.
LLMDebuggerToolCallService computes the tool call statistics of a project from its LLM logs and runs
relevance classification, ToolCallCriteriaService manages the versioned criteria it classifies against,
and JudgeModelSelector picks the judge model for both this classification and replay judging — see
Tool Call Analysis.