Service registry enum

Canonical service-name enum — genieai-* service names, OTel attributes, and image tags.

Purpose

The canonical enum of service names used in OTel attributes, VictoriaLogs filters, Kong routes, and Docker swarm service names. The Python enum lives in genie-ai-overlay/core/constants.py.

Service registry

Note: The “Enum value” column is a logical role used in code and ops queries — there is no service-name enum in genie-ai-overlay/core/constants.py (only the OPEA service-type enum ServiceType lives there). The OTel service.name column shows the value passed to setup_tracing(...) for instrumented services, or the env-var / container name for uninstrumented ones. “Docker service” is the block name in docker-compose.yaml; in Docker Swarm it is prefixed by the stack name (e.g. genieai_chatqna-xeon-backend-server).

RoleOTel service.nameDocker serviceImage
chatqnagenieai-chatqnachatqna-xeon-backend-servergenie-ai-chatqna-server
retrievergenieai-retrieverretriever-arango-servicegenie-ai-retriever-arango
rerankergenieai-rerankerrerankergenie-ai-reranker
embedding(external — TEI)embeddinggenie-ai-embedding (TEI text-embeddings-inference)
textgen(external)textgengenie-ai-textgen
vllm(external)vllmvllm/vllm-openai
dataprepgenieai-dataprepdataprep-arango-servicegenie-ai-dataprep-arango
translation(part of chatqna)translationopea/translation:1.5
doc-repodocument-repositorydocument-repositorygenie-ai-document-repository
backendbackendbackendgenie-ai-backend
frontend(not instrumented)frontendgenie-ai-frontend
kong(Kong OTel plugin)kongkong:3.9.3
nginx(not instrumented)nginxgenie-ai-nginx
keycloak(not instrumented)keycloakquay.io/keycloak/keycloak:26.7.0
arangodb(not instrumented)arango-vector-dbarangodb/arangodb:3.12.4
redis(not instrumented)redis-cacheredis:7-alpine
clamav(not instrumented)clamavclamav/clamav:stable-debian
otel-collectorotel-collectorotel-collectorotel/opentelemetry-collector-contrib:0.152.0
victoriametricsvictoriametricsvictoriametricsvictoriametrics/victoria-metrics:v1.138.0
victorialogsvictorialogsvictorialogsvictoriametrics/victoria-logs:v1.50.0
victoriatracesvictoriatracesvictoriatracesvictoriametrics/victoria-traces:v0.9.2
grafanagrafanagrafanagrafana/grafana:12.4

Swarm label convention

The Swarm label convention documented in earlier docs (genieai.service.name, genieai.component, genieai.persona) is not currently applied in docker-compose.yaml. If the OTel Collector uses those labels for resource attribute enrichment, that enrichment is inactive today — verify against configs/otel/config.yaml before relying on it.

VictoriaLogs query examples

{service.name="genieai-chatqna"} | error
{service.name=~"genieai-(backend|chatqna|retriever)"}
{service.name="genieai-vllm"} AND _msg:"oom"

Adding a new service

  1. Add the enum to genie-ai-overlay/core/constants.py.
  2. Add the OTel service.name to the new service’s OTEL_SERVICE_NAME env var.
  3. Add the Swarm label to the service’s docker-compose.yaml block.
  4. Document it on this page and in Architecture → OPEA microservices.