Skip to main content
LangWatch is distributed as three Docker images, each serving a distinct role in the platform.

Images

langwatch/langwatch

The main application image. Used for both LangWatch App and LangWatch Workers. Handles the web UI, REST API, OTel trace ingestion, and authentication. What it does:
  • Serves the LangWatch web UI
  • Exposes REST and OTel APIs for trace ingestion from SDKs
  • Handles authentication (email or SSO providers)
  • Queries ClickHouse for analytics, dashboards, and trace search
  • Manages the control plane via PostgreSQL (Prisma ORM)
  • Broadcasts real-time updates via Server-Sent Events (SSE)

langwatch/langwatch_nlp

Go service (nlpgo) that runs workflows. The image keeps a Python interpreter only for code blocks. What it does:
  • Runs Optimization Studio workflows
  • Handles custom evaluator execution
  • Runs Python code blocks in a sandboxed process
  • Proxies LLM calls from the playground and prompts

langwatch/langevals

Python service providing the built-in evaluator library. What it does:
  • LLM-as-a-Judge evaluators (boolean, category, score)
  • RAG evaluators (faithfulness, context precision, context recall, answer relevancy)
  • Safety evaluators (content safety, jailbreak detection, PII detection)
  • Quality evaluators (summarization, query resolution, semantic similarity)
  • Custom evaluators (exact match, BLEU/ROUGE scores, format validation)
LangEvals calls external LLM providers (OpenAI, Azure OpenAI, Google) to run model-based evaluations. Ensure your evaluator pods have network access to these providers, or configure your own provider credentials via the Helm chart.

Additional Images

The Helm chart also deploys:
  • langwatch/clickhouse-serverless, Performance-tweaked ClickHouse image optimized for LangWatch’s event ingestion and analytical query patterns
  • langwatch/ai-gateway, the AI Gateway (gateway.image.repository, on by default)
  • langwatch/langyagent, the Langy assistant (langyagent.image.repository, on by default)
  • postgres, redis and the Prometheus server image, when the chart runs those services

Service Communication

Image Tags

Pin to a specific version tag in production to prevent unexpected changes during upgrades. Update deliberately using the Upgrade Guide.

Private Registries

For air-gapped or private environments, mirror the images to your own registry:
Then configure the Helm chart, giving every tag the version you mirrored:
Mirror and override the bundled services the same way: gateway.image.repository, langyagent.image.repository, clickhouse.image.repository, postgresql.image.repository, redis.image.repository, prometheus.server.image.repository, cronjobs.image.repository and app.storedObjects.localFilesystem.serializeUpgradesImage (the image the stored-objects upgrade hooks run). The chart has no chart-wide imagePullSecrets value. If your registry needs credentials, attach the pull secret to the ServiceAccount the pods run as. The NLP, LangEvals, gateway, Langy, PostgreSQL and Redis pods use the namespace default ServiceAccount. The app and workers use it too, unless global.serviceAccount.create or global.serviceAccount.name gives them their own, in which case patch that one as well:
Three workloads run under their own ServiceAccount and take the pull secret as a value instead:
The ClickHouse preflight Job (clickhouse.preflight.enabled, off by default in this chart) runs clickhouse.preflight.image under its own ServiceAccount and has no pull secret value. If you turn it on, mirror that image to a registry that needs no credentials.
Last modified on October 12, 2026