Skip to main content
This guide shows you how to enable LangSmith Deployment on your self-hosted LangSmith instance. This adds a control plane and data plane that let you deploy, scale, and manage agents and applications directly through the LangSmith UI. After completing this guide, you’ll have access to LangSmith Observability, Evaluation, and Deployment.
Important
Enabling LangSmith Deployment requires an Enterprise plan.
This setup page is for enabling LangSmith Deployment on an existing LangSmith instance.Review the self-hosted options to understand:

Overview

This guide builds on top of the Kubernetes installation guide. You must complete that guide first before continuing. This page covers the additional setup steps required to enable LangSmith Deployment:
  • Installing the LangGraph operator
  • Configuring your ingress
  • Connecting to the control plane

Prerequisites

  1. You are using Kubernetes.
  2. You have an instance of self-hosted LangSmith running.
  3. KEDA is installed on your cluster.
  helm repo add kedacore https://kedacore.github.io/charts
  helm install keda kedacore/keda --namespace keda --create-namespace
  1. Ingress Configuration
    1. You must set up an ingress, gateway, or use Istio for your LangSmith instance. All agents will be deployed as Kubernetes services behind this ingress. Use this guide to set up an ingress for your instance.
  2. You must have slack space in your cluster for multiple deployments. Cluster-Autoscaler is recommended to automatically provision new nodes.
  3. A valid Dynamic PV provisioner or PVs available on your cluster. You can verify this by running:
  kubectl get storageclass
  1. Egress to https://beacon.langchain.com from your network. This is required for license verification and usage reporting if not running in air-gapped mode. See the Egress documentation for more details.

Setup

  1. As part of configuring your self-hosted LangSmith instance, you enable the deployment option. This will provision a few key resources.
    1. listener: This is a service that listens to the control plane for changes to your deployments and creates/updates downstream CRDs.
    2. LangGraphPlatform CRD: A CRD for LangSmith Deployment. This contains the spec for managing an instance of a LangSmith deployment.
    3. operator: This operator handles changes to your LangSmith CRDs.
    4. host-backend: This is the control plane.
As of v0.12.0, the langgraphPlatform option is deprecated. Use config.deployment for any version after v0.12.0.
  1. Two additional images will be used by the chart. Use the images that are specified in the latest release.
  hostBackendImage:
    repository: "docker.io/langchain/hosted-langserve-backend"
    pullPolicy: IfNotPresent
  operatorImage:
    repository: "docker.io/langchain/langgraph-operator"
    pullPolicy: IfNotPresent
  1. In your config file for langsmith (usually langsmith_config.yaml), enable the deployment option. Note that you must also have a valid ingress setup:
  config:
    deployment:
      enabled: true
    # As of v0.12.0, this section is deprecated. Use config.deployment for any version after v0.12.0.
    langgraphPlatform:
      enabled: true
      langgraphPlatformLicenseKey: "YOUR_LANGGRAPH_PLATFORM_LICENSE_KEY"
  1. In your values.yaml file, configure the hostBackendImage and operatorImage options (if you need to mirror images). If you are using a private container registry that requires authentication, you must also configure imagePullSecrets, refer to Configure authentication for private registries.
  2. You can also configure base templates for your agents by overriding the base templates here. Your self-hosted infrastructure is now ready to create deployments.

(Optional) Configure additional data planes

In addition to the existing data plane already created in the above steps, you can create more data planes that reside in different Kubernetes clusters or the same cluster in a different namespace.

Prerequisites

  1. Read through the cluster organization guide in the hybrid deployment documentation to understand how to best organize this for your use case.
  2. Verify the prerequisites mentioned in the hybrid section are met for the new cluster. Note that in step 5 of this section, you need to enable egress to your self-hosted LangSmith instance instead of https://api.host.langchain.com and https://api.smith.langchain.com.
  3. Run the following commands against your LangSmith Postgres instance to enable this feature. This is the Postgres instance that comes with your self-hosted LangSmith setup.
update organizations set config = config || '{"enable_lgp_listeners_page": true}' where id = '<org id here>';
update tenants set config = config || '{"langgraph_remote_reconciler_enabled": true}' where id = '<workspace id here>';
Note down the workspace ID you choose as you will need this for future steps.

Deploying to a different cluster

  1. Follow steps 2-6 in the hybrid setup guide. The config.langsmithWorkspaceId value should be set to the workspace ID you noted in the prerequisites.
  2. To deploy more than one data plane to the cluster, follow the rules listed here.

Deploying to a different namespace in the same cluster

  1. You will need to make some modifications to the langsmith_config.yaml file you created in step 3 of the above setup instructions:
    • Set the operator.watchNamespaces field to the current namespace your self-hosted LangSmith instance is running in. This is to prevent clashes with the operator that will be added as part of the new data plane.
    • It is required to use the Gateway API or an Istio Gateway. Please adjust your langsmith_config.yaml file accordingly.
  2. Run a helm upgrade to update your self hosted LangSmith instance with the new config.
  3. Follow steps 2-6 in the hybrid setup guide. The config.langsmithWorkspaceId value should be set to the workspace ID you noted in the prerequisites. Remember that config.watchNamespaces should be set to different namespaces than the one used by the existing data plane!

(Optional) Configure authentication for private registries

If your Agent Server deployments will use images from private container registries (e.g., AWS ECR, Azure ACR, GCP Artifact Registry, private Docker registry), configure image pull secrets. This is a one-time infrastructure configuration that allows all deployments to automatically authenticate with your private registry. Step 1: Create a Kubernetes image pull secret
kubectl create secret docker-registry langsmith-registry-secret \
    --docker-server=myregistry.com \
    --docker-username=your-username \
    --docker-password=your-password \
    --docker-email=your-email@example.com \
    -n langsmith
Replace the values with your registry credentials:
  • myregistry.com: Your registry URL
  • your-username: Your registry username
  • your-password: Your registry password or access token
  • langsmith: The Kubernetes namespace where LangSmith is installed
Step 2: Configure the secret in your values.yaml
images:
    imagePullSecrets:
    - name: langsmith-registry-secret
Step 3: Apply during Helm installation/upgrade When you deploy or upgrade your LangSmith instance using Helm, this configuration will be applied. All user deployments created through the LangSmith UI will automatically inherit these registry credentials. For registry-specific authentication methods (AWS ECR, Azure ACR, GCP Artifact Registry, etc.), refer to the Kubernetes documentation on pulling images from private registries.

Next steps

Once your infrastructure is set up, you’re ready to deploy applications. See the deployment guides in the Deployment tab for instructions on building and deploying your applications.
Connect these docs programmatically to Claude, VSCode, and more via MCP for real-time answers.