Mission Control is an in-cluster console for monitoring, configuring, and operating LangSmith on Kubernetes. It runs inside your cluster and is accessed withDocumentation Index
Fetch the complete documentation index at: https://docs.langchain.com/llms.txt
Use this file to discover all available pages before exploring further.
kubectl port-forward by default, so no ingress is required.
There are two install paths:
| Path | Best for |
|---|---|
| Quick install | Customers who can run a reviewed shell installer and want the shortest setup. |
| Manual install | Organizations that do not allow installer scripts or need each Kubernetes command reviewed. |
install-script.sh: one installer with separateprereqs,namespace,secret,values,install, andforwardsteps.values.yaml: default Helm values for a port-forward-only install.
langchain/mission-control-backend and langchain/mission-control-frontend. The latest images can be checked with:
https://github.com/langchain-ai/helm/tree/main/charts/mission-control/install-script.shhttps://github.com/langchain-ai/helm/tree/main/charts/mission-control/values.yaml
curl can download the files directly. If you publish these files from a different repo or branch, replace the raw base URL below.
Prerequisites
| Tool | Minimum version | Install example |
|---|---|---|
kubectl | 1.24+ | brew install kubectl |
helm | 3.x | brew install helm |
curl | any current version | Usually preinstalled |
yes. See Permissions reference for the runtime permissions granted to Mission Control.
Quick install
Run these three commands:all step:
- Checks required tools and RBAC.
- Creates the
langsmithnamespace. - Prompts for a Mission Control username and password.
- Stores those credentials in the
mission-control-authKubernetes Secret. - Writes
values.yamlif one does not already exist. - Installs from the public Helm chart repository if you are not running from a local chart checkout.
- Installs Mission Control with Helm.
kubectl auth can-i but Helm installs are approved through another control path, run:
Access the UI
After the install finishes, start a local port-forward:Review the script first
The quick install path downloads the script before running it, so you can reviewinstall-script.sh locally before the third command.
Edit values before install
The quick install path also downloadsvalues.yaml before running the installer. Review or edit that file before the third command if you need to change namespace, resources, ingress, feature flags, or diagnostic persistence.
Common edits:
| Setting | When to change it |
|---|---|
namespace | Install Mission Control somewhere other than langsmith. Also pass -n <namespace> to the script. |
resources | Your namespace has a ResourceQuota or your platform requires specific requests/limits. |
ingress.enabled and ingress.host | You want to expose Mission Control through your ingress controller instead of port-forwarding. |
config.features.* | You need to remove specific write permissions or external egress features. |
diagnostics.persistence.enabled | You want diagnostic bundles to survive pod restarts and Helm upgrades. |
backend.podSecurityContext and frontend.podSecurityContext | Your platform requires containers to run as a specific non-root UID, such as 1001. |
Script command reference
Manual install
Use this path when installer scripts are not allowed. These steps use normalkubectl, helm, and curl commands only.
Add the Helm repo and get the values file
Add the LangChain Helm repo:Download the customer values file:Review
values.yaml before installing. Keep config.auth.enabled: true for production.If your platform requires non-root containers, Mission Control can run as UID 1001. Add this to values.yaml before installing:Create the auth credentials Secret
Credentials are stored in a Kubernetes Secret. They are not written to For multi-replica backend deployments, include a shared JWT signing key in the same Secret and set
values.yaml.config.auth.jwtSecretKey: jwtSecret in values.yaml:Install with Helm
Access the UI
Upgrade
Download the latest public values file, merge in any local changes you need, then run:Uninstall
Additional resources
Troubleshooting
| Symptom | What to check |
|---|---|
kubectl auth can-i ... returns no | Ask a cluster admin to grant install-time RBAC or run the install for you. |
Pods stay Pending | Check namespace ResourceQuota, node capacity, and PVC/storage class events with kubectl describe pod -n langsmith <pod>. |
| Image pull errors | Confirm the cluster can pull langchain/mission-control-backend:latest and langchain/mission-control-frontend:latest. |
| Login fails | Confirm mission-control-auth exists in the same namespace and has username and password keys. |
| Browser cannot connect | Confirm the port-forward command is still running and no other local process is using port 3000. |
Permissions reference
The Helm chart creates aServiceAccount, ClusterRole, and ClusterRoleBinding named mission-control. Most permissions are read-only. Write verbs are narrow and controlled by feature flags.
Install or upgrade requires the ability to create cluster-scoped RBAC (ClusterRole and ClusterRoleBinding), usually cluster-admin or a custom equivalent. The broadest runtime permission set is only used when config.features.deploy: true; that flag is false by default.
Always-present read-only permissions
| Resource group | Resources | Verbs |
|---|---|---|
| Workloads | pods, pods/log, deployments, statefulsets, replicasets, daemonsets, jobs, cronjobs | get, list, watch |
| Networking | services, endpoints, ingresses, ingressclasses | get, list, watch |
| Storage | persistentvolumeclaims, storageclasses | get, list, watch |
| Cluster | nodes, namespaces, events, serviceaccounts, resourcequotas | get, list, watch |
| Config | configmaps, secrets | get, list |
| Metrics | metrics.k8s.io pods/nodes | get, list, watch |
| RBAC | roles, rolebindings, clusterroles, clusterrolebindings | get, list, watch |
| CRDs and extensions | customresourcedefinitions, leases, scaledobjects, httproutes, virtualservices, lgps | get, list, watch |
Feature-gated permissions
| Feature flag | Resources | Extra verbs |
|---|---|---|
config.features.configSave | secrets (mission-control-draft) | create, update, delete |
config.features.alerts | secrets (mission-control-alerts-*) | create, update, delete |
config.features.fixIssue | pods | delete |
config.features.adopt | secrets, configmaps, serviceaccounts, deployments, statefulsets | patch |
config.auth.enabled | secrets (mission-control-auth, setup-token), backend deployment | create, update, delete, patch |
config.features.deploy | workloads, networking, RBAC, CRDs, Helm release secrets | create, update, patch, delete |
false in values.yaml to remove the corresponding write verbs. With all feature flags disabled, Mission Control is effectively read-only except for authentication setup permissions when config.auth.enabled: true.
Connect these docs to Claude, VSCode, and more via MCP for real-time answers.

