Repository navigation
feat(langsmith): align self-hosted sandbox values with main [v16-stable] - #894
Mukil Loganathan (langchain-infra) merged 2 commits into
Conversation
Backports the review cleanup from #784 so the sandbox surface matches main and future sandbox changes cherry-pick without hand-translation. Breaking: sandbox values move from config.sandboxes to a top-level sandboxes: block, limits becomes quotas, and maxEphemeralStorageGb becomes maxEphemeralStorageGib. clusterName, xServiceAuthJwtSecret, xServiceAuthJwtSecretPrevious, sandboxHost.allowPrivateIPCallbacks and sandboxHost.containerPort are gone; service auth now reuses config.apiKeySalt and private-IP callbacks are always on for self-hosted. validate.yaml fails on the legacy path rather than ignoring it, since Helm would otherwise drop the old keys silently and disable sandboxes on upgrade. Also pins images.juicefsMountImage.tag to ce-v1.3.0. It was empty, so it fell back to Chart.AppVersion and rendered docker.io/juicedata/mount:0.16.28rc1, which does not exist.
There was a problem hiding this comment.
The self-hosted sandbox Helm chart unconditionally enables private-IP callbacks (SSRF_ALLOW_PRIVATE_IPS_CALLBACKS=true), removing the previous opt-in sandboxHost.allowPrivateIPCallbacks flag; this is an intentional architectural decision for self-hosted deployments where the sandbox host must reach internal cluster services, but it exposes internal network access if sandbox users can influence callback URLs.
# Conflicts: # charts/langsmith/Chart.yaml # charts/langsmith/README.md
There was a problem hiding this comment.
This PR unconditionally sets SSRF_ALLOW_PRIVATE_IPS_CALLBACKS=true in the self-hosted sandbox-host Deployment, which is an intentional architectural decision for self-hosted deployments where the LangSmith backend lives on private infrastructure, but still warrants a Helm value override and explicit documentation given the hostNetwork/privileged context.
8e718aa
into
v16-stable
…#897) #894 replaced LANGCHAIN_PLATFORM_ENDPOINT with LANGSMITH_PUBLIC_API_ENDPOINT in the shared config map, leaving an empty sandboxes.enabled block behind. smith-go still reads the old name, so it fell back to LANGCHAIN_ENDPOINT ("/api/v1") and built a relative Engine run webhook callback. langgraph-api rejects relative webhooks, so every non-shadow Engine run failed: trigger run: status 422: Loopback webhooks (relative URLs and localhost) are disabled by default. Observed on self-hosted-ci: run creation returned 200 until 06:10Z today and 422 from 06:48Z, the first sync after #894. Restore the variable inside the existing guard, from the helper that already backs LANGSMITH_PUBLIC_API_ENDPOINT. Both render the same public API base, so this reinstates the previously working configuration rather than setting the variable somewhere it was never set. It also backs signed download links, SCIM $refs, and MCP resource URLs. Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
Backports the review cleanup from #784 to
v16-stable, so the sandbox surface matchesmainand later sandbox changes cherry-pick without hand-translation.v16-stablealready carries sandbox support from #889, but in its pre-review shape. This reconciles the two.Sandbox values move out of
config:to a top-levelsandboxes:block, matchingfleet:config.sandboxes.*sandboxes.*config.sandboxes.limitssandboxes.quotas…limits.maxEphemeralStorageGb…quotas.maxEphemeralStorageGibconfig.sandboxes.clusterName…xServiceAuthJwtSecret/…Previousconfig.apiKeySalt…sandboxHost.allowPrivateIPCallbacks…sandboxHost.containerPorthostPort)Helm ignores unknown keys, so a stale
config.sandboxesblock would silently disable sandboxes on upgrade.validate.yamltherefore fails on the legacy path and names the new one, with tests covering it.Also fixed
images.juicefsMountImage.tagwas empty, so it fell back toChart.AppVersionand rendereddocker.io/juicedata/mount:0.16.28rc1— an image that does not exist. Now pinned toce-v1.3.0, as onmain. This is a live bug in the published0.16.0-rc.24.Brought over from #784
sandbox-hostPDB and ServiceAccount templates (v16 had neither)priorityClassNameonsandbox-hostLANGSMITH_PUBLIC_API_ENDPOINT, derived fromconfig.hostname;GO_ENDPOINTand the sandbox internal endpoint share one helper so they cannot driftLANGCHAIN_PLATFORM_ENDPOINTno longer set in the shared ConfigMapnodeSelector, andprivileged/readOnlyRootFilesystembeing set wronglyVerification
helm lintcleansandbox-hostDeployment is byte-identical tomain's apart from chart/appVersion labelsplatform-backendandingest-queuematchmainexactlycommonEnvvars verified intactChart
0.16.0-rc.24→0.16.0-rc.25.