Project Overview
Configuration
The backend is configured through Spring Boot properties, the Studio through environment variables that are mostly baked in at build time. Neither repository file carries real credentials: they come from the deployment (see Configuration and Secrets) or, locally, from git-ignored files (Development Setup).
How the Backend Reads Its Configuration
Spring Boot merges these sources; a later one wins:
-
application.propertieson the classpath (backend/src/main/resources/) — defaults for a local run, with placeholders (change-me) where a credential belongs. -
/config/application.properties— rendered by the Helm chart’s ConfigMap: the environment’s domain, namespace and version, the MongoDB database name, the MCP server URLs, the conversation-data index patterns and the test-suite URLs. -
/config/application-default.properties— the environment’s own settings and credentials, mounted from Azure Key Vault. It is a profile-specific file for thedefaultprofile, which is the active profile in a deployment, so it overrides both files above. -
Environment variables set by the Deployment, for example
PROMETHIST_TESTING_BRIDGESECRETTOKENfrom the release’s Kubernetes secret.
Locally, application-local.properties takes the place of the mounted files when the local profile
is active. backend/src/test/resources/application.properties replaces the main file entirely in
tests.
Backend Properties
Server and Infrastructure
| Property | Default | Meaning |
|---|---|---|
|
|
HTTP port of the REST API, the MCP endpoint and Actuator. |
|
|
Header size limit of the HTTP server. |
|
— (set by Helm) |
The environment’s host domain and Kubernetes namespace. They derive the engine URL and the Studio
URL used in invitation emails (see Talking to the
Engine). Without a domain the derived URL is |
|
|
The database shared with the engine. The Helm ConfigMap sets the database name to the release name. |
|
|
UUIDs are stored as standard BSON binary subtype 4, the representation the engine uses as well. |
|
Spring Boot defaults |
The Elasticsearch cluster of the knowledge vector store and the conversation-data views. |
|
Spring AI default |
Index of the knowledge chunks; must be the index the engine searches. |
|
Issuer of the Keycloak access tokens the REST API and the assistant accept. Also the realm the identity-provider check probes. |
|
|
|
Actuator endpoints exposed over HTTP: |
|
|
Keep Elasticsearch, which is optional, out of the health status, and Neo4j, whose driver the Spring Data Neo4j starter puts on the classpath although the platform has no Neo4j database. |
Shared Library Settings
These are bound by classes of promethist-common.
| Property | Default | Meaning |
|---|---|---|
|
|
Enables |
|
|
Where uploaded logos and media are written. |
|
|
Mailgun account for invitation emails. Without an API key no email is sent. |
|
|
Names of the stored Mailgun templates the invitations are rendered with. The wording of the emails lives in Mailgun, not in this repository. |
Video Re-encoding
| Property | Default | Meaning |
|---|---|---|
|
|
Re-encodes uploaded interactive-content videos
(Re-encoding of Uploaded Videos).
Without ffmpeg and ffprobe the backend logs a warning at startup and serves uploads as uploaded, as with
|
|
|
The two executables, found on the |
|
|
How long one encoding may run before ffmpeg is killed and the original kept. |
|
|
The memory ffmpeg and ffprobe may allocate, set with |
How a video is encoded — codec, bitrate, size — is not configurable: the settings are constants of
VideoTranscoder, versioned by ENCODE_VERSION.
AI
| Property | Default | Meaning |
|---|---|---|
|
—, |
Azure OpenAI resource of the AI Assistant, its nested model calls and the web search. |
|
— |
OpenAI key for knowledge embeddings and, by default, transcription. |
|
|
Speech-to-text of the assistant’s voice input. |
|
|
The assistant’s |
|
— |
Azure AI Document Intelligence for knowledge files. |
|
|
Upper bound, in characters, of a chunk built from a Document Intelligence layout. |
|
|
Register the assistant tools that create accounts and projects. |
|
|
Streaming of the assistant’s replies: chunks are batched for at most the window or the chunk count. |
|
|
Limits of the files a user attaches to an assistant message. The Socket.IO frame size is derived from the total. |
|
|
The assistant’s Socket.IO server. |
The chat model itself is not configurable: LLMService.CHAT_MODEL names the Azure deployment and
LLMService.REASONING_EFFORT its reasoning effort (see The Model).
Hosted MCP Server
| Property | Default | Meaning |
|---|---|---|
|
required |
The authorization server (the Studio’s origin). Tokens must carry it as |
|
required |
Where the signing keys are published: |
|
required |
The MCP endpoint’s own URL, |
|
required |
The protected-resource metadata URL announced in the |
|
required |
Base URL of the Studio for the |
|
required |
The engine |
|
|
Elasticsearch index patterns of the conversation-data tools. Deployments set them per namespace, because preview shares production’s cluster. |
|
EU production values |
What the staff test-harness tools write into bridge configurations. |
The six required URLs have no defaults on purpose. A deployment that misses one fails at startup instead of silently trusting another environment’s tokens.
Test Suites
| Property | Default | Meaning |
|---|---|---|
|
The bridge’s REST API. Blank disables test suites. |
|
|
— |
Token sent to the bridge. Delivered as an environment variable from a Kubernetes secret, never through the ConfigMap. |
|
blank (derived) |
The engine the tested agents run on. |
|
— |
HTTP Basic credentials of the engine’s test identity, which |
|
|
Run tuning: how many conversations of a run the bridge executes in parallel; how long past its own timeout a conversation may run before it reads as timed out (and how long a triggered suite may show no conversation before it reads as failed); the bridge’s device start delay; the timeout of each bridge request; and after how long a "this suite is starting" claim is considered stale. |
Billing and Scheduling
| Property | Default | Meaning |
|---|---|---|
|
placeholders |
Stripe API key and the signing secret of the webhook. |
|
placeholder |
Region tag of this deployment. Subscriptions are created with it in their metadata, and webhook events of other regions' subscriptions are ignored. |
|
|
Master switch of the scheduled jobs. With it on, each job can still be switched off:
|
Prices are not configuration: they come from the package collection
(Accounts and Subscriptions).
Accounts and Secrets
| Property | Default | Meaning |
|---|---|---|
|
|
When enabled, a new account gets a copy of the project with this ref instead of an empty default project. |
|
|
The staff-only vault endpoint and its implementation: |
|
placeholders |
The Key Vault the |
|
LiveAvatar API used for live-avatar preview images. |
Studio Frontend
The Studio reads process.env on the server and in the browser. Variables prefixed NEXT_PUBLIC_
are inlined into the browser bundle at build time, which is why the pipeline builds a separate
frontend image per environment and region.
| Variable | Meaning |
|---|---|
|
The Studio’s own URL, for NextAuth callbacks. NextAuth reads |
|
Secret that encrypts the NextAuth session cookie (same precedence). |
|
The Keycloak client ( |
|
The public URL of the Studio. It also decides whether the Studio considers itself local, preview or production, and the EU or US region. |
|
Base URL of the backend REST API for browser and server calls (default: the EU preview). |
|
Server-only override of the backend URL used by the Studio’s proxy routes. |
|
Base URL of the assistant’s Socket.IO server. Defaults to |
|
The issuer of the MCP OAuth tokens — the Studio’s own origin. Must equal the backend’s
|
|
The MCP endpoint the tokens are issued for. Must equal the backend’s |
|
The RSA private key (JWK, with a |
|
Development and feedback switches, see Feature Flags for Local Work. |