Requirements
- Authenticated access to a Docker registry that your Kubernetes cluster/machine has access to.
- Docker installed on your local machine or a machine that has access to the Docker registry.
- A Kubernetes cluster where you can run LangSmith.
Mirroring the images
Fewer images from LangSmith 0.16.21 (chart
0.16.0-rc.17) onward. The platform backend, playground, host backend, and the Fleet tool and trigger servers now all run from the single langsmith-backend image, so you no longer need to mirror langsmith-go-backend, langsmith-playground, hosted-langserve-backend, agent-builder-tool-server, or agent-builder-trigger-server (or their -fips variants). The corresponding values.yaml keys: platformBackendImage, playgroundImage, hostBackendImage, fleetToolServerImage, and fleetTriggerServerImage, have been removed from the chart; any values you still set for them are ignored.If you are installing an earlier version, keep mirroring those images and setting those keys as before.<your-registry> is the URL of your Docker registry (e.g. myregistry.com) and <platform> is the platform you are using (e.g. linux/amd64, linux/arm64, etc.). If you do not specify a platform, it will default to linux/amd64.
For example, if your registry is myregistry.com, your platform is linux/arm64, and you want to use the latest version of the images, you would run:
values.yaml file of the LangSmith Helm Chart. These can be found here: LangSmith Helm Chart values.yaml
Here is an example of how to mirror the images using Docker:
Configuration
Once the images are mirrored, you will need to configure your LangSmith installation to use the mirrored images. You can do this by modifying thevalues.yaml file for your LangSmith Helm Chart installation. Replace tag with the LangSmith version you want to deploy. The following example uses 0.16.21.
Additional images for Sandboxes
If you enable Sandboxes, also mirror the sandbox runtime image. The sandbox runtime image is published forlinux/amd64.
values.yaml:
images.imagePullSecrets. The sandbox runtime uses the same image pull secrets as the other LangSmith images.
The --include-sandboxes flag mirrors the LangSmith-owned sandbox runtime image. If your cluster cannot pull public images at all, also mirror the JuiceFS images used by the sandbox storage driver:
docker.io/juicedata/juicefs-csi-driver:v0.31.4registry.k8s.io/sig-storage/csi-node-driver-registrar:v2.9.0docker.io/juicedata/mount:ce-v1.3.1for JuiceFS mount pods
images.juicefsMountImage by default. When it is unset, the JuiceFS CSI driver uses the JUICEFS_CE_MOUNT_IMAGE fallback baked into the CSI driver image. For the chart’s current docker.io/juicedata/juicefs-csi-driver:v0.31.4 default, that fallback is juicedata/mount:ce-v1.3.1. In private-registry or air-gapped environments, set both images.juicefsMountImage.repository and images.juicefsMountImage.tag so mount pods pull from your mirrored registry instead of the public default.
Additional images for Fleet and Insights
If you are using Fleet or Insights, the LangGraph operator dynamically creates Redis and PostgreSQL (pgvector) pods for each deployment. These pods use images defined in operator templates that require separate configuration. You must mirror these additional images:docker.io/redis:7docker.io/pgvector/pgvector:pg15
values.yaml to use your mirrored images:
(your-registry) with your registry URL. The template variables (${service_name}, ${namespace}, ${max_connections}, ${storage_gi}) are replaced by the operator at runtime and must be kept as-is.
Once configured, you will need to update your LangSmith installation. You can follow our upgrade guide here: Upgrading LangSmith. If your upgrade is successful, your LangSmith instance should now be using the mirrored images from your Docker registry.
Verifying image signatures
Image signatures are available starting with v15 (LangSmith app version
0.15.x and later). Earlier releases on the v14-stable and older channels are not signed and cannot be verified with the steps below.docker.io/langchain/* are signed at release time using keyless Sigstore/Cosign from the release workflow. The signing identity is bound to a specific GitHub Actions workflow, run, and commit, so the signature attests not just that the image is authentic but that it was produced by the stable-branch release pipeline running in langchain-ai/langchainplus. You can verify a signature before pulling or mirroring an image, and again after mirroring to confirm the digest you mirrored matches what we signed.
Install cosign (installation guide), then verify any tag:
- The cosign claims on the signature are valid.
- The certificate chains to the Sigstore root and is logged in the Rekor transparency log.
- The signing certificate was issued to the stable-branch release workflow via GitHub Actions OIDC.
langsmith-frontend, langsmith-go-backend, agent-builder-deep-agent, langsmith-clio, langsmith-polly, agent-builder-tool-server, agent-builder-trigger-server, hosted-langserve-backend, langsmith-playground, langsmith-ace-backend, plus their *-fips variants).
Pinning to a specific release
For stricter verification — for example, pinning to a single stable branch or a specific commit — drop the regex and supply the exact certificate identity. Each signature’s certificate also carries the workflow run ID and commit SHA as Subject Alternative Name extensions, so you can constrain to a specific release:Verifying SBOM attestations
Released images also carry signed CycloneDX software bill of materials (SBOM) attestations, one per architecture in the image index. The per-architecture SBOMs are also attached to the multi-architecture index digest, so you can verify against a bare tag directly:Fetching SBOMs
To feed an SBOM into a vulnerability scanner or SBOM management tool, extract the verified CycloneDX document to a file. Because the index carries one statement per architecture, resolve a single architecture’s child digest first so you get one CycloneDX document rather than one per architecture. List the per-architecture digests for a tag:langsmith-backend.cdx.json directly to scanners such as Grype (grype sbom:langsmith-backend.cdx.json) or Trivy (trivy sbom langsmith-backend.cdx.json).
Extracting the SBOM through
cosign verify-attestation, rather than cosign download attestation, ensures you only ever consume an SBOM whose signature and signing identity have been verified.Connect these docs to Claude, VSCode, and more via MCP for real-time answers.

