Looking for production deployment? If you want to deploy LangWatch to a real cluster with prebuilt images (no local build required), see Kubernetes (Helm) instead. This page covers the local Kind workflow which builds images from source.
Developing LangWatch itself? The make dev commands in the repo root use docker-compose and are faster for day-to-day development. This Kind workflow is for testing the Helm chart packaging and Kubernetes-specific behavior.
Prerequisites
- Docker (running, with at least 16 GB RAM and 20 GB free disk allocated)
- Kind v0.20+
- kubectl
- Helm 3.12+
make(included on macOS and most Linux distributions)
Note: The first image build (especially the Next.js app) is memory-intensive and can take 15-30 minutes. Subsequent builds reuse Docker cache and are much faster.
Quick Start
- Create a Kind cluster named
lw-local(if it doesn’t exist) - Build all Docker images locally (if not already built — first build takes 15-30 min)
- Load images into the Kind cluster
- Install the Helm chart with
values-local.yamlinto thelw-localnamespace
Manual Setup
If you prefer to run each step manually:1. Create a Kind Cluster
2. Build and Load Images
langwatch/langwatch:local— Applangwatch/langwatch_nlp:local— NLP servicelangwatch/langevals:local— Evaluatorslangwatch/clickhouse-serverless:next— ClickHouse
3. Install the Helm Chart
4. Verify
Running status within a few minutes.
Profiles
The Makefile supports multiple profiles via thePROFILE variable:
examples/values-{profile}.yaml file.
What’s Included
Thevalues-local.yaml profile deploys:
| Component | Replicas | Notes |
|---|---|---|
| LangWatch App | 1 | NodePort on 30560 |
| LangWatch Workers | 1 | Separate pod |
| LangWatch NLP | 1 | |
| LangEvals | 1 | |
| PostgreSQL | 1 | Chart-managed |
| ClickHouse | 1 | Chart-managed, standalone |
| Redis | 1 | Chart-managed |
autogen.enabled: true— secrets are auto-generatedpullPolicy: Never— uses locally-built images- Prometheus is disabled to save resources
Teardown
Troubleshooting
Pods stuck inImagePullBackOff:
Images haven’t been loaded into Kind. Run make images-local.
Port 30560 not accessible:
Ensure the Kind cluster was created with the port mapping config (charts/lib/kind-config.yaml). Recreate the cluster if needed: make clean && make example-up.
Pods stuck in Pending:
Check if your Docker daemon has enough resources. Kind needs at least 4 CPU and 8 GB RAM allocated to Docker (16 GB if building images locally).
Slow startup:
First-time image builds take several minutes. Subsequent make example-up runs reuse cached images and are much faster.
Next Steps
- Production Kubernetes deployment — Deploy to a real cluster
- Sizing & Scaling — Resource recommendations