Skip to content

How to Deploy Self-Hosted Control Plane

Before deploying, review the conceptual guide for the Self-Hosted Control Plane deployment option.

Beta

The Self-Hosted Control Plane deployment option is currently in beta stage.

Prerequisites

  1. You are using Kubernetes.
  2. You have self-hosted LangSmith deployed.
  3. Use the LangGraph CLI to test your application locally.
  4. Use the LangGraph CLI to build a Docker image (i.e. langgraph build) and push it to a registry your Kubernetes cluster has access to.
  5. 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
    2. You must set up an ingress for your LangSmith instance. All agents will be deployed as Kubernetes services behind this ingress.
    3. You can use this guide to set up an ingress for your instance.
    4. You have slack space in your cluster for multiple deployments. Cluster-Autoscaler is recommended to automatically provision new nodes.
    5. A valid Dynamic PV provisioner or PVs available on your cluster. You can verify this by running:

      kubectl get storageclass

Setup

  1. As part of configuring your Self-Hosted LangSmith instance, you enable the langgraphPlatform 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 LangGraph Platform deployments. This contains the spec for managing an instance of a LangGraph platform deployment.
    3. operator: This operator handles changes to your LangGraph Platform CRDs.
    4. host-backend: This is the control plane.
  2. Two additional images will be used by the chart.

    hostBackendImage:
      repository: "docker.io/langchain/hosted-langserve-backend"
      pullPolicy: IfNotPresent
      tag: "0.9.80"
    operatorImage:
      repository: "docker.io/langchain/langgraph-operator"
      pullPolicy: IfNotPresent
      tag: "aa9dff4"
    
  3. In your values.yaml file, enable the langgraphPlatform option. Note that you must also have a valid ingress setup: config: langgraphPlatform: enabled: true langgraphPlatformLicenseKey: "YOUR_LANGGRAPH_PLATFORM_LICENSE_KEY"

  4. In your values.yaml file, configure the hostBackendImage and operatorImage options (if you need to mirror images)

  5. You can also configure base templates for your agents by overriding the base templates here.

  6. You create a deployment from the control plane UI.