Upgrade a self-hosted Braintrust data plane on AWS, GCP, or Azure
Upgrading to data plane v2.0? It requires a multi-step migration with irreversible infrastructure changes. Follow the Upgrade to v2.0 guide instead.
AWS
GCP
Azure
This guide shows the routine process for upgrading the Braintrust data plane in your AWS account.
Upgrading from AWS Terraform module v5.x to v6? It requires a two-step apply to move the API from Lambda to ECS. Follow the Upgrade to v6 guide instead.Upgrading from v6 to v7 changes the defaults for API routing and the Braintrust Gateway. Follow the Upgrade to v7 guide instead.
On AWS, the Braintrust data plane runs on ECS and EC2 (Terraform module versions before v6.0 run the API on Lambda). The data plane version is bundled into the Terraform module — each module release pins specific versions of the Braintrust API and Brainstore in VERSIONS.json. When you update your module source to a newer version and run terraform apply, Terraform automatically deploys the corresponding data plane.To check which data plane version you’re currently running, go to Settings > Data plane in the Braintrust UI.
Check the Self-hosting releases page for your target data plane version to find the minimum Terraform module version required. Then update the ?ref= in your module source:
Upgrade to v6.5.0 or later. On v6.4.0 and earlier, running the API on ECS also sends LLM calls from user-authored scorers and tools to the Braintrust-hosted Gateway, outside your AWS account.
v6.7.0
Your configuration sets enable_brainstore
Delete the line, or the plan fails with an unsupported argument error. Brainstore is always enabled.
v6.9.0
The identity that runs Terraform uses a scoped IAM policy
Grant lambda:InvokeFunction on the <deployment_name>-BrainstoreDeployment function, which the apply invokes.
v6.10.0
Your configuration sets loop_runtime_sandbox_egress_mode = "internet"
Delete the line or set it to "restricted", or the plan fails. Sandbox internet egress is removed. See Sandbox egress.
v6.10.0
Your configuration sets loop_runtime_version_override to a version earlier than v2.16.0
Remove the override or set it to v2.16.0 or later. The module doesn’t check the version, and earlier Loop runtime versions don’t serve the sandbox egress gateway.
v6.10.0
Your .terraform.lock.hcl pins AWS provider v6.69.0 or later
Run terraform init -upgrade. The module requires an AWS provider earlier than v6.69.0, so terraform init fails with the existing lock file.
As of v5.6.0, the modules/services sub-module requires the hashicorp/http provider ~> 3.3. If your .terraform.lock.hcl pins an older 3.x version, run terraform init -upgrade before terraform plan or terraform apply.
Review the planned changes before applying:
terraform plan
If the plan deletes or replaces a database, S3 bucket, or other resource you didn’t expect, don’t apply it. Applying it can cause data loss. Contact Braintrust for help.
Some module versions move resources to new Terraform addresses, so downgrading past them can destroy and recreate those resources. Review the plan before any rollback:
v6.8.0: API ECS listener rules, which can disrupt traffic. See the v6.8.0 release notes.
v6.9.0: The Loop runtime’s database, Redis, Brainstore, and Gateway ingress rules, if your deployment runs the Loop runtime.
Apply the changes:
terraform apply
This updates both the infrastructure and the data plane components in a single apply.On module v6.9.0 and later, the apply waits for the Brainstore reader and fast reader fleets to finish their instance refreshes before it updates the API ECS services and the API, catchup ETL, automation, and billing Lambda functions, so new API versions don’t serve traffic before Brainstore is ready. The apply can take noticeably longer as a result. During the refresh, reader capacity can temporarily double. Writer nodes refresh independently and don’t hold up the apply.
If the apply fails while waiting for Brainstore
Terraform waits up to 14 minutes for the refreshes, then up to 14 more minutes in the same apply. The apply fails, and API updates stay blocked, if a refresh fails, health checks fail, or the second wait also runs out.Fix the reported failure and rerun terraform apply. The apply checks live AWS state and resumes an active refresh. Progress and refresh IDs are logged to the /braintrust/<deployment_name>/<deployment_name>-BrainstoreDeployment CloudWatch log group.
This guide shows the routine process for upgrading the Braintrust data plane in your GCP account.
GCP deployments have two independently upgradeable components:
Terraform module (terraform-google-braintrust-data-plane): provisions your cloud infrastructure — the GKE cluster, Cloud SQL database, Redis, and storage buckets. You upgrade this by changing the ?ref= version in your module source and running terraform apply.
Helm chart: deploys the Braintrust application (API and Brainstore containers) onto your GKE cluster. You upgrade this by running helm upgrade with a new --version.
The Helm chart --version is the chart version, not the data plane version. The data plane version is set separately via image tags in your values.yaml. Upgrading the Helm chart alone does not change which data plane version is running — you must also update the image tags.
To check which data plane version you’re currently running, go to Settings > Data plane in the Braintrust UI.
Before upgrading, check the Self-hosting releases page for your target data plane version. Each entry specifies its requirements:
“Requires: Helm X.Y.Z+” — you must upgrade the Helm chart to at least that version before or alongside updating your image tags. Update Terraform first if infrastructure changes are also listed.
No requirements listed — you can upgrade by updating image tags in values.yaml and running helm upgrade. No Terraform or chart version change needed.
Helm-only release (“No data plane version change”) — update only the Helm chart version. No image tag change needed.
Run this step when a release lists infrastructure requirements, or when you want to apply infrastructure changes independently.
terraform apply
Carefully review the output of terraform plan before applying any changes to your deployment. If you see something unexpected, like deletion of a database or storage bucket, contact Braintrust for help.
To pin to a specific Terraform module version, update the ?ref= in your module source:
Run this step to deploy a new data plane version or apply a Helm chart update.
1
Set the data plane version
Set the data plane version by updating the image tags for the API and Brainstore in your values.yaml. Refer to the Helm chart values reference for the exact field names.
Replace <chart-version> with the Helm chart version required by the release (or your current chart version if no chart upgrade is needed).
When a release requires both Terraform and Helm changes, apply Terraform first, then run the Helm upgrade.
Helm chart 6.20.0 and later enable the Brainstore startup gate by default. Before you upgrade, confirm that:
api.image.tag is a release tag such as v2.17.0, or api.brainstoreStartupGate.minimumVersion is set. Otherwise, the chart fails to render.
Every API pool uses the RollingUpdate strategy with maxUnavailable: 0 and a nonzero maxSurge. Otherwise, the chart fails to render.
brainstore.image.tag is a release tag. If it’s a commit SHA, a digest, or a pre-release tag, new API pods don’t start. To deploy such an image, set api.brainstoreStartupGate.enabled: false.
Azure deployments have two independently upgradeable components:
Terraform module (terraform-azure-braintrust-data-plane): provisions your cloud infrastructure — the AKS cluster, Azure Database for PostgreSQL, Redis, and storage. You upgrade this by changing the ?ref= version in your module source and running terraform apply.
Helm chart: deploys the Braintrust application (API and Brainstore containers) onto your AKS cluster. You upgrade this by running helm upgrade with a new --version.
The Helm chart --version is the chart version, not the data plane version. The data plane version is set separately via image tags in your values.yaml. Upgrading the Helm chart alone does not change which data plane version is running — you must also update the image tags.
To check which data plane version you’re currently running, go to Settings > Data plane in the Braintrust UI.
Before upgrading, check the Self-hosting releases page for your target data plane version. Each entry specifies its requirements:
“Requires: Helm X.Y.Z+” — you must upgrade the Helm chart to at least that version before or alongside updating your image tags. Update Terraform first if infrastructure changes are also listed.
No requirements listed — you can upgrade by updating image tags in values.yaml and running helm upgrade. No Terraform or chart version change needed.
Helm-only release (“No data plane version change”) — update only the Helm chart version. No image tag change needed.
Run this step when a release lists infrastructure requirements, or when you want to apply infrastructure changes independently.
terraform apply
Carefully review the output of terraform plan before applying any changes to your deployment. If you see something unexpected, like deletion of a database or storage account, contact Braintrust for help.
To pin to a specific Terraform module version, update the ?ref= in your module source:
Some Terraform Azure module upgrades include one-time breaking changes, such as renamed node pool variables, an azurerm provider upgrade, or a Terraform state migration. Before bumping the module across major versions, review the Terraform Azure module releases entries on the Self-hosting releases page for the versions you’re crossing.
Run this step to deploy a new data plane version or apply a Helm chart update.
1
Set the data plane version
Set the data plane version by updating the image tags for the API and Brainstore in your values.yaml. Refer to the Helm chart values reference for the exact field names.
Replace <chart-version> with the Helm chart version required by the release (or your current chart version if no chart upgrade is needed).
When a release requires both Terraform and Helm changes, apply Terraform first, then run the Helm upgrade.
Helm chart 6.20.0 and later enable the Brainstore startup gate by default. Before you upgrade, confirm that:
api.image.tag is a release tag such as v2.17.0, or api.brainstoreStartupGate.minimumVersion is set. Otherwise, the chart fails to render.
Every API pool uses the RollingUpdate strategy with maxUnavailable: 0 and a nonzero maxSurge. Otherwise, the chart fails to render.
brainstore.image.tag is a release tag. If it’s a commit SHA, a digest, or a pre-release tag, new API pods don’t start. To deploy such an image, set api.brainstoreStartupGate.enabled: false.
Self-hosting releases — review release notes and infrastructure requirements for each data plane version
Configuration — configure telemetry, network access, rate limiting, and other options
Was this page helpful?
{"docsConfig":{"theme":"aspen","$schema":"https://mintlify.com/docs.json","name":"Braintrust","description":"Braintrust is the active observability platform for instrumenting, understanding, and improving agents. By actively applying intelligence to agent traces and automatically surfacing the most critical patterns, Braintrust gives teams the visibility to understand how agents behave in production and the tools to improve them.","colors":{"primary":"#3a4af8","light":"#3a4af8","dark":"#7e95fc"},"logo":{"light":"https://mintcdn.com/braintrust/u7i5gTV-ad3TRDYt/logo/logo-light.svg?fit=max\u0026auto=format\u0026n=u7i5gTV-ad3TRDYt\u0026q=85\u0026s=23878ca308aee393dcc8c89ed8705189","dark":"https://mintcdn.com/braintrust/u7i5gTV-ad3TRDYt/logo/logo-dark.svg?fit=max\u0026auto=format\u0026n=u7i5gTV-ad3TRDYt\u0026q=85\u0026s=affa9d0eafd44b6cd7fb22c80afee713"},"favicon":"https://mintcdn.com/braintrust/ybJBbXJUYqK_eUdX/images/favicon.ico?fit=max\u0026auto=format\u0026n=ybJBbXJUYqK_eUdX\u0026q=85\u0026s=c9925befa0cf9b6279fab604eff9aad0","api":{},"navbar":{"links":[{"href":"https://braintrust.dev/contact","label":"Request demo"}],"primary":{"type":"button","label":"Start building","href":"https://braintrust.dev/app"}},"footer":{"socials":{"github":"https://github.com/braintrustdata","x":"https://x.com/braintrust","discord":"https://discord.gg/6G8s47F44X","youtube":"https://www.youtube.com/@BraintrustData"},"links":[{"header":"Resources","items":[{"label":"Pricing","href":"https://www.braintrust.dev/pricing"},{"label":"Blog","href":"https://www.braintrust.dev/blog"},{"label":"Careers","href":"https://www.braintrust.dev/careers"},{"label":"Status","href":"https://status.braintrust.dev/"}]}]},"seo":{"metatags":{"og:type":"website","og:site_name":"Braintrust documentation, API reference, and changelog","canonical":"https://docs.braintrust.dev","og:image":"https://www.braintrust.dev/og?template=docs\u0026title=Get+started"},"indexing":"all"},"fonts":{"heading":{"family":"BraintrustDisplayV2-Regular","source":"https://mintlify-assets.b-cdn.net/fonts/bt-sans-regular.woff2","format":"woff2"},"body":{"family":"Inter"}},"icons":{"library":"lucide"},"styling":{"codeblocks":{"theme":{"light":"github-light","dark":"github-dark-dimmed"}},"latex":true},"integrations":{"segment":{"key":"1BTDVX4cF2K1jWOI5Qh91XXKwgJubQ2R"}},"contextual":{"options":["copy","view","assistant","chatgpt","claude","cursor","vscode","mcp","add-mcp","perplexity","grok","aistudio","devin","devin-mcp","windsurf","download-spec","download-pdf"],"display":"header"},"navigation":{"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"braintrust","hasAudioNarration":false,"actualSubdomain":"braintrust","customDomains":["docs.braintrust.dev"],"gitSource":{"type":"github","owner":"braintrustdata","repo":"braintrust","deployBranch":"main","contentDirectory":"docs","isPrivate":true,"mountPath":"","label":""},"chroma":{"liveDeploymentHistoryId":"6ae4ff3d822866cf7d003d86","collectionId":"6c9c84cb-c17d-4061-899a-6324a2532856","schemaVersion":"v3","latestBuiltDeploymentHistoryId":"6ae4ff3d822866cf7d003d86"},"feedback":{"thumbs":true},"entitlements":{"AI_CHAT":{"status":"ENABLED"},"CONTEXTUAL_FEEDBACK":{"status":"ENABLED"},"CODE_SNIPPET_FEEDBACK":{"status":"ENABLED"},"WEB_MCP":{"status":"ENABLED"},"NARRATION":{"status":"ENABLED"}},"buildId":"6ae4ff3d822866cf7d003d86","clientVersion":"0.0.4043","searchFilterCounts":[{"language":"default","tag":"Reference","count":241},{"language":"default","tag":"API","count":173},{"language":"default","tag":"Resources","count":171},{"language":"default","tag":"SDKs","count":127},{"language":"default","tag":"Guides","count":125},{"language":"default","tag":"Integrations","count":97},{"language":"default","tag":"Cookbook","count":44},{"language":"default","tag":"Recipes","count":43},{"language":"default","tag":"Admin","count":38},{"language":"default","tag":"CLI","count":30}]},"assistantConfig":{"enableAskAiButton":true,"enableStarterQuestions":false,"enableAskAiSearchBar":false,"deflection":{"enabled":true,"email":"support@braintrust.dev","showHelpButton":true}},"basePath":"","hasChatPermissions":true,"hasWebMcpPermissions":true,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"use-workflow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"full-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"byok-sep-25","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"vite-origin","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-updated-9-15","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-sso-scim","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-signup","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-dual-write","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"approve-review-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"googleFontsInlined":false},"customCss":[{"filePath":"style.css","content":"#content-area h1,#content-area h2,#content-area h3,#content-area h4{letter-spacing:-.01em!important;font-weight:400!important}#content-area h1{font-size:2.3rem!important;line-height:1!important}#content-area h2{font-size:1.6rem!important}#content-area h3{font-size:1.4rem!important}h5{font-family:var(--font-family-body-custom, var(--font-inter, sans-serif));font-weight:600!important}.nav-logo{height:22px}img.rounded,picture img{border:1px solid rgb(var(--gray-100))!important}[data-rmiz] img{margin-top:2em;margin-bottom:2em}.dark img.rounded,.dark picture img{border:1px solid rgb(var(--gray-900))!important}#table-of-contents{margin-top:-56px;overflow-x:hidden}#navbar button[aria-label=\"More actions\"],#navigation-items div.sticky.-top-\\[24px\\],#table-of-contents nav>h2{display:none}#table-of-contents-content{margin:0}#content-area .card h2{font-size:1.2rem!important}li[id^=\"/api-reference/\"]{font-size:.8rem;word-break:break-word}li[id^=\"/api-reference/\"] .method-nav-pill{width:54px;flex:none}li[id^=\"/api-reference/\"] .method-nav-pill span{font-size:.6rem;font-weight:500;letter-spacing:0}#content-area h1,.pagination-title{word-break:break-word}div[data-component-part=card-content]:empty{display:none}#navigation-items{padding-top:40px}#sidebar-group li a,#sidebar-group li button,.sidebar-group li a{border-radius:6px;padding-top:4px;padding-bottom:4px}#sidebar-content h5{font-weight:500!important}#content-container{gap:0}#content-container .lg\\:pl-12{padding-left:0;gap:36px}.dark #content-container{background-color:#000}#content-area{max-width:860px}@media (min-width:1024px){#content-container{padding-left:36px;padding-right:36px}}#footer a[href^=\"https://mintlify.com\"],#footer a[href^=\"https://www.mintlify.com\"]{display:none!important}header#header .sm\\:items-center{align-items:flex-start}a[aria-label^=\"Navigate to\"].-ml-10{margin-left:-28px}a[aria-label^=\"Navigate to\"].-ml-10 div:not(:hover){box-shadow:none}.font-mono{font-family:\"SF Mono\",\"Monaco\",\"Inconsolata\",\"Fira Mono\",\"Droid Sans Mono\",\"Source Code Pro\",monospace!important}:root{--primary:43 30 235;--font-jetbrains-mono:\"SF Mono\", \"Monaco\", \"Inconsolata\", \"Fira Mono\", \"Droid Sans Mono\",\n \"Source Code Pro\", monospace}.dark{--primary-light:87 112 255}:root{--code-line-highlight-background:rgb(var(--primary-light) / 0.06);--code-line-highlight-border:rgb(var(--primary-light) / 0.12)}.dark{--code-line-highlight-background:rgb(var(--primary-light) / 0.08);--code-line-highlight-border:rgb(var(--primary-light) / 0.35)}[data-component-part=code-block-root]:not(.has-line-numbers) .line-highlight,[data-component-part=code-block-root]:not(.has-line-numbers) .line-highlight::after,[data-component-part=code-block-root]:not(.has-line-numbers) .line-highlight::before{background:var(--code-line-highlight-background)!important}[data-component-part=code-block-root]:not(.has-line-numbers) .line-highlight::before{border-left-color:var(--code-line-highlight-border)!important}.has-line-numbers .line-highlight::after{background:var(--code-line-highlight-background)!important;border-left-color:var(--code-line-highlight-border)!important}.navbar-link a{border-radius:6px}#topbar-cta-button a span.absolute{background-color:rgb(var(--primary));border-radius:6px}.dark #topbar-cta-button a span.absolute{background-color:rgb(var(--primary-light))}div[data-page-title=\"Page Not Found\"]>div{width:100vw;max-width:none}.dark\\:bg-background-dark:is(.dark *){background-color:#000}html.dark #navbar div.dark\\:bg-background-dark{background-color:rgb(var(--background-dark)/1)}#footer .nav-logo{opacity:.5;width:100px}#footer .max-w-\\[984px\\]{max-width:72rem;padding-left:1.25rem;padding-right:1.25rem}@media (min-width:1024px){#footer .max-w-\\[984px\\]{padding-left:36px;padding-right:36px}}.integrations-search-input{width:100%;height:2.25rem;padding-left:2.75rem;padding-right:.75rem;font-size:.875rem;line-height:1.5rem;border:0;border-radius:9999px;outline:0;background-color:rgba(3,7,18,.03);color:#6b7280;box-shadow:none;transition:background-color .2s}.integrations-search-input:focus,.integrations-search-input:hover{background-color:rgba(3,7,18,.1)}.integrations-search-input:focus{color:#374151}.integrations-search-input::placeholder{color:#4b5563}.dark .integrations-search-input{background-color:rgba(255,255,255,.06);color:rgba(255,255,255,.5)}.dark .integrations-search-input:focus,.dark .integrations-search-input:hover{background-color:rgba(255,255,255,.1)}.dark .integrations-search-input:focus{color:rgba(255,255,255,.9)}.dark .integrations-search-input::placeholder{color:rgba(255,255,255,.5)}.integrations-search-icon,.integrations-search-kbd{color:#6b7280}.dark .integrations-search-icon,.dark .integrations-search-kbd{color:rgba(255,255,255,.5)}.gateway-models-filters{display:flex;align-items:center;gap:.75rem;margin-bottom:1.5rem;flex-wrap:wrap}.gateway-models-provider-wrap{display:flex;align-items:center;gap:.5rem}.models-provider-label{font-size:.875rem;font-weight:500;color:#374151;white-space:nowrap}.dark .models-provider-label{color:rgba(255,255,255,.85)}.models-provider-select{height:2.25rem;min-width:10rem;padding:0 2rem 0 .75rem;font-size:.875rem;line-height:1.5;border:1px solid rgba(3,7,18,.08);border-radius:.5rem;outline:0;background-color:#fff;color:#111827;cursor:pointer;appearance:none;background-image:url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%236b7280' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E\");background-repeat:no-repeat;background-position:right .75rem center;transition:border-color .15s,box-shadow .15s}.models-provider-select:hover{border-color:rgba(3,7,18,.18)}.models-provider-select:focus{border-color:rgb(43 30 235);box-shadow:0 0 0 2px rgba(43,30,235,.2)}.dark .models-provider-select{background-color:rgba(255,255,255,.06);border-color:rgba(255,255,255,.12);color:rgba(255,255,255,.9);background-image:url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='rgba(255,255,255,0.6)' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E\")}.dark .models-provider-select:hover{border-color:rgba(255,255,255,.22)}.dark .models-provider-select:focus{border-color:rgb(87 112 255);box-shadow:0 0 0 2px rgba(87,112,255,.25)}[data-component-part=accordion-icon],[data-component-part=card-icon]{flex:none}#content-area svg[data-icon]{width:1rem;height:1rem;display:inline;vertical-align:baseline;transform:translateY(-.125rem)}#content-area :not(pre)>code{padding-left:.2rem;padding-right:.2rem;border-radius:3px;background-color:rgb(0 0 0/.05)}#content-area :not(pre)>code:is(.dark *){background-color:rgb(255 255 255/.1)}body.kb-page #sidebar-content{display:none!important}body.kb-page aside:has(#sidebar-content),body.kb-page aside[id*=sidebar]{display:none!important}body.kb-page #content-container{margin-left:0!important;padding-left:24px!important}body.kb-page main{margin-left:0!important}body.kb-page #table-of-contents{display:block!important}div:has(>.tabs-border[data-component-part=tabs-list]){border:1px solid rgb(var(--gray-200));border-radius:16px;padding:0 .75rem .75rem}.dark div:has(>.tabs-border[data-component-part=tabs-list]){border-color:rgb(var(--gray-800))}.tabs-border[data-component-part=tabs-list]{margin-bottom:1rem!important}td [data-base-ui-tooltip-trigger]{text-align:inherit}"}],"page":{"pagePath":"admin/self-hosting/upgrade/routine","slug":"/admin/self-hosting/upgrade/routine","pageMetadata":{"title":"Upgrade your deployment","sidebarTitle":"Routine upgrades","description":"Upgrade a self-hosted Braintrust data plane on AWS, GCP, or Azure","og:image":"https://www.braintrust.dev/og?template=docs\u0026title=Upgrade%20your%20deployment","href":"/admin/self-hosting/upgrade/routine"},"description":{"compiledSource":"\"use strict\";\nconst {jsx: _jsx} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsx(_components.p, {\n children: \"Upgrade a self-hosted Braintrust data plane on AWS, GCP, or Azure\"\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx,jsxs:_jsxs}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){const _components={a:`a`,code:`code`,li:`li`,p:`p`,pre:`pre`,span:`span`,strong:`strong`,tbody:`tbody`,td:`td`,th:`th`,thead:`thead`,tr:`tr`,ul:`ul`,..._provideComponents(),...props.components},{Accordion,CodeBlock,Heading,Icon,Note,Step,Steps,Tab,Table,Tabs,Warning}=_components;if(!Accordion)_missingMdxReference(`Accordion`,true);if(!CodeBlock)_missingMdxReference(`CodeBlock`,true);if(!Heading)_missingMdxReference(`Heading`,true);if(!Icon)_missingMdxReference(`Icon`,true);if(!Note)_missingMdxReference(`Note`,true);if(!Step)_missingMdxReference(`Step`,true);if(!Steps)_missingMdxReference(`Steps`,true);if(!Tab)_missingMdxReference(`Tab`,true);if(!Table)_missingMdxReference(`Table`,true);if(!Tabs)_missingMdxReference(`Tabs`,true);if(!Warning)_missingMdxReference(`Warning`,true);return _jsxs(_Fragment,{children:[_jsx(Note,{children:_jsxs(_components.p,{children:[`Upgrading to data plane v2.0? It requires a multi-step migration with irreversible infrastructure changes. Follow the `,_jsx(_components.a,{href:`/admin/self-hosting/upgrade/v2`,children:`Upgrade to v2.0`}),` guide instead.`]})}),`\n`,_jsxs(Tabs,{children:[_jsxs(Tab,{title:`AWS`,icon:`https://img.logo.dev/aws.amazon.com?token=pk_BdcHD9e5SCW3j1rnJkNyMQ`,id:`aws`,\"data-child-heading-ids\":`[\"how-it-works\",\"1-update-the-module-version\",\"2-review-and-apply\"]`,children:[_jsx(_components.p,{children:`This guide shows the routine process for upgrading the Braintrust data plane in your AWS account.`}),_jsxs(Note,{children:[_jsxs(_components.p,{children:[`Upgrading from AWS Terraform module v5.x to v6? It requires a two-step apply to move the API from Lambda to ECS. Follow the `,_jsx(_components.a,{href:`/admin/self-hosting/upgrade/v6`,children:`Upgrade to v6`}),` guide instead.`]}),_jsxs(_components.p,{children:[`Upgrading from v6 to v7 changes the defaults for API routing and the Braintrust Gateway. Follow the `,_jsx(_components.a,{href:`/admin/self-hosting/upgrade/v7`,children:`Upgrade to v7`}),` guide instead.`]})]}),_jsx(Heading,{level:`2`,id:`how-it-works`,children:`How it works`}),_jsxs(_components.p,{children:[`On AWS, the Braintrust data plane runs on ECS and EC2 (Terraform module versions before v6.0 run the API on Lambda). The data plane version is `,_jsx(_components.strong,{children:`bundled into the Terraform module`}),` — each module release pins specific versions of the Braintrust API and Brainstore in `,_jsx(_components.code,{children:`VERSIONS.json`}),`. When you update your module source to a newer version and run `,_jsx(_components.code,{children:`terraform apply`}),`, Terraform automatically deploys the corresponding data plane.`]}),_jsxs(_components.p,{children:[`To check which data plane version you’re currently running, go to `,_jsxs(_components.strong,{children:[_jsx(Icon,{icon:`settings`}),` Settings`]}),` > `,_jsx(_components.a,{href:`https://www.braintrust.dev/app/~/configuration/data-plane`,children:_jsxs(_components.strong,{children:[_jsx(Icon,{icon:`network`}),` Data plane`]})}),` in the Braintrust UI.`]}),_jsx(Heading,{level:`2`,id:`1-update-the-module-version`,children:`1. Update the module version`}),_jsxs(_components.p,{children:[`Check the `,_jsx(_components.a,{href:`/data-plane-changelog`,children:`Self-hosting releases`}),` page for your target data plane version to find the minimum Terraform module version required. Then update the `,_jsx(_components.code,{children:`?ref=`}),` in your module source:`]}),_jsx(CodeBlock,{filename:``,numberOfLines:`5`,language:`hcl`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light github-dark-dimmed`,style:{backgroundColor:`#fff`,\"--shiki-dark-bg\":`#22272e`,color:`#24292e`,\"--shiki-dark\":`#adbac7`},language:`hcl`,children:_jsxs(_components.code,{language:`hcl`,numberOfLines:`5`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#6F42C1`,\"--shiki-dark\":`#F69D50`},children:`module`}),_jsx(_components.span,{style:{color:`#005CC5`,\"--shiki-dark\":`#6CB6FF`},children:` \"braintrust-data-plane\"`}),_jsx(_components.span,{style:{color:`#24292E`,\"--shiki-dark\":`#ADBAC7`},children:` {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#24292E`,\"--shiki-dark\":`#ADBAC7`},children:` source`}),_jsx(_components.span,{style:{color:`#D73A49`,\"--shiki-dark\":`#F47067`},children:` =`}),_jsx(_components.span,{style:{color:`#032F62`,\"--shiki-dark\":`#96D0FF`},children:` \"github.com/braintrustdata/terraform-aws-braintrust-data-plane?ref=vX.Y.Z\"`})]}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#6A737D`,\"--shiki-dark\":`#768390`},children:` # ... other configuration ...`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#24292E`,\"--shiki-dark\":`#ADBAC7`},children:`}`})}),`\n`]})})}),_jsxs(_components.p,{children:[`See all module releases: `,_jsx(_components.a,{href:`https://github.com/braintrustdata/terraform-aws-braintrust-data-plane/releases`,children:`GitHub Releases`})]}),_jsx(Warning,{children:_jsx(_components.p,{children:`Before you apply, review these version-specific changes. Each row applies when its condition matches your deployment.`})}),_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Version`}),_jsx(_components.th,{children:`Applies if`}),_jsx(_components.th,{children:`Before you apply`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{\"data-numeric\":`true`,children:`v6.2.0`}),_jsx(_components.td,{children:`An SCP or IAM policy restricts tag keys`}),_jsxs(_components.td,{children:[`Allow the `,_jsx(_components.code,{children:`aws-apn-id`}),` tag key, or the upgrade fails. The module adds this tag to every resource. See `,_jsx(_components.a,{href:`/admin/self-hosting/deploy#use-custom-tags`,children:`Use custom tags`}),`.`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{\"data-numeric\":`true`,children:`v6.5.0`}),_jsxs(_components.td,{children:[`The API runs on `,_jsx(_components.a,{href:`/admin/self-hosting/upgrade/v6`,children:`ECS`}),` (`,_jsx(_components.code,{children:`enable_ecs_api = true`}),`)`]}),_jsx(_components.td,{children:`Upgrade to v6.5.0 or later. On v6.4.0 and earlier, running the API on ECS also sends LLM calls from user-authored scorers and tools to the Braintrust-hosted Gateway, outside your AWS account.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{\"data-numeric\":`true`,children:`v6.7.0`}),_jsxs(_components.td,{children:[`Your configuration sets `,_jsx(_components.code,{children:`enable_brainstore`})]}),_jsx(_components.td,{children:`Delete the line, or the plan fails with an unsupported argument error. Brainstore is always enabled.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{\"data-numeric\":`true`,children:`v6.9.0`}),_jsx(_components.td,{children:`The identity that runs Terraform uses a scoped IAM policy`}),_jsxs(_components.td,{children:[`Grant `,_jsx(_components.code,{children:`lambda:InvokeFunction`}),` on the `,_jsx(_components.code,{children:`\u003cdeployment_name>-BrainstoreDeployment`}),` function, which the apply invokes.`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{\"data-numeric\":`true`,children:`v6.10.0`}),_jsxs(_components.td,{children:[`Your configuration sets `,_jsx(_components.code,{children:`loop_runtime_sandbox_egress_mode = \"internet\"`})]}),_jsxs(_components.td,{children:[`Delete the line or set it to `,_jsx(_components.code,{children:`\"restricted\"`}),`, or the plan fails. Sandbox internet egress is removed. See `,_jsx(_components.a,{href:`/admin/self-hosting/configure/loop-runtime#sandbox-egress`,children:`Sandbox egress`}),`.`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{\"data-numeric\":`true`,children:`v6.10.0`}),_jsxs(_components.td,{children:[`Your configuration sets `,_jsx(_components.code,{children:`loop_runtime_version_override`}),` to a version earlier than v2.16.0`]}),_jsxs(_components.td,{children:[`Remove the override or set it to v2.16.0 or later. The module doesn’t check the version, and earlier Loop runtime versions don’t serve the `,_jsx(_components.a,{href:`/admin/self-hosting/configure/loop-runtime#sandbox-egress`,children:`sandbox egress gateway`}),`.`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{\"data-numeric\":`true`,children:`v6.10.0`}),_jsxs(_components.td,{children:[`Your `,_jsx(_components.code,{children:`.terraform.lock.hcl`}),` pins AWS provider v6.69.0 or later`]}),_jsxs(_components.td,{children:[`Run `,_jsx(_components.code,{children:`terraform init -upgrade`}),`. The module requires an AWS provider earlier than v6.69.0, so `,_jsx(_components.code,{children:`terraform init`}),` fails with the existing lock file.`]})]})]})]}),_jsx(Heading,{level:`2`,id:`2-review-and-apply`,children:`2. Review and apply`}),_jsx(Note,{children:_jsxs(_components.p,{children:[`As of v5.6.0, the `,_jsx(_components.code,{children:`modules/services`}),` sub-module requires the `,_jsx(_components.code,{children:`hashicorp/http`}),` provider `,_jsx(_components.code,{children:`~> 3.3`}),`. If your `,_jsx(_components.code,{children:`.terraform.lock.hcl`}),` pins an older 3.x version, run `,_jsx(_components.code,{children:`terraform init -upgrade`}),` before `,_jsx(_components.code,{children:`terraform plan`}),` or `,_jsx(_components.code,{children:`terraform apply`}),`.`]})}),_jsx(_components.p,{children:`Review the planned changes before applying:`}),_jsx(CodeBlock,{filename:``,numberOfLines:`1`,language:`shellscript`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light github-dark-dimmed`,style:{backgroundColor:`#fff`,\"--shiki-dark-bg\":`#22272e`,color:`#24292e`,\"--shiki-dark\":`#adbac7`},language:`shellscript`,children:_jsxs(_components.code,{language:`shellscript`,numberOfLines:`1`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#6F42C1`,\"--shiki-dark\":`#F69D50`},children:`terraform`}),_jsx(_components.span,{style:{color:`#032F62`,\"--shiki-dark\":`#96D0FF`},children:` plan`})]}),`\n`]})})}),_jsx(Warning,{children:_jsxs(_components.p,{children:[`If the plan deletes or replaces a database, S3 bucket, or other resource you didn’t expect, don’t apply it. Applying it can cause data loss. `,_jsx(_components.a,{href:`mailto:support@braintrust.dev`,children:`Contact Braintrust`}),` for help.`]})}),_jsxs(Warning,{children:[_jsx(_components.p,{children:`Some module versions move resources to new Terraform addresses, so downgrading past them can destroy and recreate those resources. Review the plan before any rollback:`}),_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`v6.8.0`}),`: API ECS listener rules, which can disrupt traffic. See the `,_jsx(_components.a,{href:`/data-plane-changelog#terraform-aws-module-releases`,children:`v6.8.0 release notes`}),`.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`v6.9.0`}),`: The Loop runtime’s database, Redis, Brainstore, and Gateway ingress rules, if your deployment runs the `,_jsx(_components.a,{href:`/admin/self-hosting/configure/loop-runtime`,children:`Loop runtime`}),`.`]}),`\n`]})]}),_jsx(_components.p,{children:`Apply the changes:`}),_jsx(CodeBlock,{filename:``,numberOfLines:`1`,language:`shellscript`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light github-dark-dimmed`,style:{backgroundColor:`#fff`,\"--shiki-dark-bg\":`#22272e`,color:`#24292e`,\"--shiki-dark\":`#adbac7`},language:`shellscript`,children:_jsxs(_components.code,{language:`shellscript`,numberOfLines:`1`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#6F42C1`,\"--shiki-dark\":`#F69D50`},children:`terraform`}),_jsx(_components.span,{style:{color:`#032F62`,\"--shiki-dark\":`#96D0FF`},children:` apply`})]}),`\n`]})})}),_jsx(_components.p,{children:`This updates both the infrastructure and the data plane components in a single apply.`}),_jsx(_components.p,{children:`On module v6.9.0 and later, the apply waits for the Brainstore reader and fast reader fleets to finish their instance refreshes before it updates the API ECS services and the API, catchup ETL, automation, and billing Lambda functions, so new API versions don’t serve traffic before Brainstore is ready. The apply can take noticeably longer as a result. During the refresh, reader capacity can temporarily double. Writer nodes refresh independently and don’t hold up the apply.`}),_jsxs(Accordion,{title:`If the apply fails while waiting for Brainstore`,id:`if-the-apply-fails-while-waiting-for-brainstore`,children:[_jsx(_components.p,{children:`Terraform waits up to 14 minutes for the refreshes, then up to 14 more minutes in the same apply. The apply fails, and API updates stay blocked, if a refresh fails, health checks fail, or the second wait also runs out.`}),_jsxs(_components.p,{children:[`Fix the reported failure and rerun `,_jsx(_components.code,{children:`terraform apply`}),`. The apply checks live AWS state and resumes an active refresh. Progress and refresh IDs are logged to the `,_jsx(_components.code,{children:`/braintrust/\u003cdeployment_name>/\u003cdeployment_name>-BrainstoreDeployment`}),` CloudWatch log group.`]})]})]}),_jsxs(Tab,{title:`GCP`,icon:`https://img.logo.dev/cloud.google.com?token=pk_BdcHD9e5SCW3j1rnJkNyMQ`,id:`gcp`,\"data-child-heading-ids\":`[\"how-it-works-2\",\"1-decide-what-to-upgrade\",\"2-update-infrastructure-terraform\",\"3-update-services-helm\"]`,children:[_jsx(_components.p,{children:`This guide shows the routine process for upgrading the Braintrust data plane in your GCP account.`}),_jsx(Heading,{level:`2`,id:`how-it-works-2`,children:`How it works`}),_jsx(_components.p,{children:`GCP deployments have two independently upgradeable components:`}),_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`\n`,_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`Terraform module`}),` (`,_jsx(_components.code,{children:`terraform-google-braintrust-data-plane`}),`): provisions your cloud infrastructure — the GKE cluster, Cloud SQL database, Redis, and storage buckets. You upgrade this by changing the `,_jsx(_components.code,{children:`?ref=`}),` version in your module source and running `,_jsx(_components.code,{children:`terraform apply`}),`.`]}),`\n`]}),`\n`,_jsxs(_components.li,{children:[`\n`,_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`Helm chart`}),`: deploys the Braintrust application (API and Brainstore containers) onto your GKE cluster. You upgrade this by running `,_jsx(_components.code,{children:`helm upgrade`}),` with a new `,_jsx(_components.code,{children:`--version`}),`.`]}),`\n`]}),`\n`]}),_jsx(Note,{children:_jsxs(_components.p,{children:[`The Helm chart `,_jsx(_components.code,{children:`--version`}),` is the chart version, not the data plane version. The data plane version is set separately via image tags in your `,_jsx(_components.code,{children:`values.yaml`}),`. Upgrading the Helm chart alone does not change which data plane version is running — you must also update the image tags.`]})}),_jsxs(_components.p,{children:[`To check which data plane version you’re currently running, go to `,_jsxs(_components.strong,{children:[_jsx(Icon,{icon:`settings`}),` Settings`]}),` > `,_jsx(_components.a,{href:`https://www.braintrust.dev/app/~/configuration/data-plane`,children:_jsxs(_components.strong,{children:[_jsx(Icon,{icon:`network`}),` Data plane`]})}),` in the Braintrust UI.`]}),_jsx(Heading,{level:`2`,id:`1-decide-what-to-upgrade`,children:`1. Decide what to upgrade`}),_jsxs(_components.p,{children:[`Before upgrading, check the `,_jsx(_components.a,{href:`/data-plane-changelog`,children:`Self-hosting releases`}),` page for your target data plane version. Each entry specifies its requirements:`]}),_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`“Requires: Helm X.Y.Z+”`}),` — you must upgrade the Helm chart to at least that version before or alongside updating your image tags. Update Terraform first if infrastructure changes are also listed.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`No requirements listed`}),` — you can upgrade by updating image tags in `,_jsx(_components.code,{children:`values.yaml`}),` and running `,_jsx(_components.code,{children:`helm upgrade`}),`. No Terraform or chart version change needed.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Helm-only release (“No data plane version change”)`}),` — update only the Helm chart version. No image tag change needed.`]}),`\n`]}),_jsx(Heading,{level:`2`,id:`2-update-infrastructure-terraform`,children:`2. Update infrastructure (Terraform)`}),_jsx(_components.p,{children:`Run this step when a release lists infrastructure requirements, or when you want to apply infrastructure changes independently.`}),_jsx(CodeBlock,{filename:``,numberOfLines:`1`,language:`shellscript`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light github-dark-dimmed`,style:{backgroundColor:`#fff`,\"--shiki-dark-bg\":`#22272e`,color:`#24292e`,\"--shiki-dark\":`#adbac7`},language:`shellscript`,children:_jsxs(_components.code,{language:`shellscript`,numberOfLines:`1`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#6F42C1`,\"--shiki-dark\":`#F69D50`},children:`terraform`}),_jsx(_components.span,{style:{color:`#032F62`,\"--shiki-dark\":`#96D0FF`},children:` apply`})]}),`\n`]})})}),_jsx(Warning,{children:_jsxs(_components.p,{children:[`Carefully review the output of `,_jsx(_components.code,{children:`terraform plan`}),` before applying any changes to your deployment. If you see something unexpected, like deletion of a database or storage bucket, `,_jsx(_components.a,{href:`mailto:support@braintrust.dev`,children:`contact Braintrust`}),` for help.`]})}),_jsxs(_components.p,{children:[`To pin to a specific Terraform module version, update the `,_jsx(_components.code,{children:`?ref=`}),` in your module source:`]}),_jsx(CodeBlock,{filename:``,numberOfLines:`5`,language:`hcl`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light github-dark-dimmed`,style:{backgroundColor:`#fff`,\"--shiki-dark-bg\":`#22272e`,color:`#24292e`,\"--shiki-dark\":`#adbac7`},language:`hcl`,children:_jsxs(_components.code,{language:`hcl`,numberOfLines:`5`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#6F42C1`,\"--shiki-dark\":`#F69D50`},children:`module`}),_jsx(_components.span,{style:{color:`#005CC5`,\"--shiki-dark\":`#6CB6FF`},children:` \"braintrust-data-plane\"`}),_jsx(_components.span,{style:{color:`#24292E`,\"--shiki-dark\":`#ADBAC7`},children:` {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#24292E`,\"--shiki-dark\":`#ADBAC7`},children:` source`}),_jsx(_components.span,{style:{color:`#D73A49`,\"--shiki-dark\":`#F47067`},children:` =`}),_jsx(_components.span,{style:{color:`#032F62`,\"--shiki-dark\":`#96D0FF`},children:` \"github.com/braintrustdata/terraform-google-braintrust-data-plane?ref=vX.Y.Z\"`})]}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#6A737D`,\"--shiki-dark\":`#768390`},children:` # ... other configuration ...`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#24292E`,\"--shiki-dark\":`#ADBAC7`},children:`}`})}),`\n`]})})}),_jsxs(_components.p,{children:[`See all module releases: `,_jsx(_components.a,{href:`https://github.com/braintrustdata/terraform-google-braintrust-data-plane/releases`,children:`GitHub Releases`})]}),_jsx(Heading,{level:`2`,id:`3-update-services-helm`,children:`3. Update services (Helm)`}),_jsx(_components.p,{children:`Run this step to deploy a new data plane version or apply a Helm chart update.`}),_jsxs(Steps,{children:[_jsx(Step,{title:`Set the data plane version`,children:_jsxs(_components.p,{children:[`Set the data plane version by updating the image tags for the API and Brainstore in your `,_jsx(_components.code,{children:`values.yaml`}),`. Refer to the `,_jsx(_components.a,{href:`https://github.com/braintrustdata/helm/blob/main/braintrust/values.yaml`,children:`Helm chart values reference`}),` for the exact field names.`]})}),_jsxs(Step,{title:`Upgrade the Helm chart`,children:[_jsx(CodeBlock,{filename:``,numberOfLines:`5`,language:`shellscript`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light github-dark-dimmed`,style:{backgroundColor:`#fff`,\"--shiki-dark-bg\":`#22272e`,color:`#24292e`,\"--shiki-dark\":`#adbac7`},language:`shellscript`,children:_jsxs(_components.code,{language:`shellscript`,numberOfLines:`5`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#6F42C1`,\"--shiki-dark\":`#F69D50`},children:`helm`}),_jsx(_components.span,{style:{color:`#032F62`,\"--shiki-dark\":`#96D0FF`},children:` upgrade`}),_jsx(_components.span,{style:{color:`#032F62`,\"--shiki-dark\":`#96D0FF`},children:` braintrust`}),_jsx(_components.span,{style:{color:`#005CC5`,\"--shiki-dark\":`#F47067`},children:` \\\\`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#032F62`,\"--shiki-dark\":`#96D0FF`},children:` oci://public.ecr.aws/braintrust/helm/braintrust`}),_jsx(_components.span,{style:{color:`#005CC5`,\"--shiki-dark\":`#F47067`},children:` \\\\`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#005CC5`,\"--shiki-dark\":`#6CB6FF`},children:` --namespace`}),_jsx(_components.span,{style:{color:`#032F62`,\"--shiki-dark\":`#96D0FF`},children:` braintrust`}),_jsx(_components.span,{style:{color:`#005CC5`,\"--shiki-dark\":`#F47067`},children:` \\\\`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#005CC5`,\"--shiki-dark\":`#6CB6FF`},children:` --version`}),_jsx(_components.span,{style:{color:`#D73A49`,\"--shiki-dark\":`#F47067`},children:` \u003c`}),_jsx(_components.span,{style:{color:`#032F62`,\"--shiki-dark\":`#96D0FF`},children:`chart-versio`}),_jsx(_components.span,{style:{color:`#032F62`,\"--shiki-dark\":`#96D0FF`},children:`n`}),_jsx(_components.span,{style:{color:`#D73A49`,\"--shiki-dark\":`#F47067`},children:`>`}),_jsx(_components.span,{style:{color:`#005CC5`,\"--shiki-dark\":`#F47067`},children:` \\\\`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#005CC5`,\"--shiki-dark\":`#6CB6FF`},children:` --values`}),_jsx(_components.span,{style:{color:`#032F62`,\"--shiki-dark\":`#96D0FF`},children:` helm-values.yaml`})]}),`\n`]})})}),_jsxs(_components.p,{children:[`Replace `,_jsx(_components.code,{children:`\u003cchart-version>`}),` with the Helm chart version required by the release (or your current chart version if no chart upgrade is needed).`]}),_jsx(Note,{children:_jsx(_components.p,{children:`When a release requires both Terraform and Helm changes, apply Terraform first, then run the Helm upgrade.`})}),_jsxs(Warning,{children:[_jsxs(_components.p,{children:[`Helm chart 6.20.0 and later enable the `,_jsx(_components.a,{href:`/admin/self-hosting/configure/scaling#brainstore-startup-gate`,children:`Brainstore startup gate`}),` by default. Before you upgrade, confirm that:`]}),_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`api.image.tag`}),` is a release tag such as `,_jsx(_components.code,{children:`v2.17.0`}),`, or `,_jsx(_components.code,{children:`api.brainstoreStartupGate.minimumVersion`}),` is set. Otherwise, the chart fails to render.`]}),`\n`,_jsxs(_components.li,{children:[`Every API pool uses the `,_jsx(_components.code,{children:`RollingUpdate`}),` strategy with `,_jsx(_components.code,{children:`maxUnavailable: 0`}),` and a nonzero `,_jsx(_components.code,{children:`maxSurge`}),`. Otherwise, the chart fails to render.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`brainstore.image.tag`}),` is a release tag. If it’s a commit SHA, a digest, or a pre-release tag, new API pods don’t start. To deploy such an image, set `,_jsx(_components.code,{children:`api.brainstoreStartupGate.enabled: false`}),`.`]}),`\n`]})]}),_jsxs(_components.p,{children:[`See all Helm chart releases: `,_jsx(_components.a,{href:`https://github.com/braintrustdata/helm/releases`,children:`GitHub Releases`})]})]})]})]}),_jsxs(Tab,{title:`Azure`,icon:`https://img.logo.dev/azure.microsoft.com?token=pk_BdcHD9e5SCW3j1rnJkNyMQ`,id:`azure`,\"data-child-heading-ids\":`[\"how-it-works-3\",\"1-decide-what-to-upgrade-2\",\"2-update-infrastructure-terraform-2\",\"3-update-services-helm-2\"]`,children:[_jsx(_components.p,{children:`This guide shows the routine process for upgrading the Braintrust data plane in your Azure account.`}),_jsx(Heading,{level:`2`,id:`how-it-works-3`,children:`How it works`}),_jsx(_components.p,{children:`Azure deployments have two independently upgradeable components:`}),_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`\n`,_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`Terraform module`}),` (`,_jsx(_components.code,{children:`terraform-azure-braintrust-data-plane`}),`): provisions your cloud infrastructure — the AKS cluster, Azure Database for PostgreSQL, Redis, and storage. You upgrade this by changing the `,_jsx(_components.code,{children:`?ref=`}),` version in your module source and running `,_jsx(_components.code,{children:`terraform apply`}),`.`]}),`\n`]}),`\n`,_jsxs(_components.li,{children:[`\n`,_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`Helm chart`}),`: deploys the Braintrust application (API and Brainstore containers) onto your AKS cluster. You upgrade this by running `,_jsx(_components.code,{children:`helm upgrade`}),` with a new `,_jsx(_components.code,{children:`--version`}),`.`]}),`\n`]}),`\n`]}),_jsx(Note,{children:_jsxs(_components.p,{children:[`The Helm chart `,_jsx(_components.code,{children:`--version`}),` is the chart version, not the data plane version. The data plane version is set separately via image tags in your `,_jsx(_components.code,{children:`values.yaml`}),`. Upgrading the Helm chart alone does not change which data plane version is running — you must also update the image tags.`]})}),_jsxs(_components.p,{children:[`To check which data plane version you’re currently running, go to `,_jsxs(_components.strong,{children:[_jsx(Icon,{icon:`settings`}),` Settings`]}),` > `,_jsx(_components.a,{href:`https://www.braintrust.dev/app/~/configuration/data-plane`,children:_jsxs(_components.strong,{children:[_jsx(Icon,{icon:`network`}),` Data plane`]})}),` in the Braintrust UI.`]}),_jsx(Heading,{level:`2`,id:`1-decide-what-to-upgrade-2`,children:`1. Decide what to upgrade`}),_jsxs(_components.p,{children:[`Before upgrading, check the `,_jsx(_components.a,{href:`/data-plane-changelog`,children:`Self-hosting releases`}),` page for your target data plane version. Each entry specifies its requirements:`]}),_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`“Requires: Helm X.Y.Z+”`}),` — you must upgrade the Helm chart to at least that version before or alongside updating your image tags. Update Terraform first if infrastructure changes are also listed.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`No requirements listed`}),` — you can upgrade by updating image tags in `,_jsx(_components.code,{children:`values.yaml`}),` and running `,_jsx(_components.code,{children:`helm upgrade`}),`. No Terraform or chart version change needed.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Helm-only release (“No data plane version change”)`}),` — update only the Helm chart version. No image tag change needed.`]}),`\n`]}),_jsx(Heading,{level:`2`,id:`2-update-infrastructure-terraform-2`,children:`2. Update infrastructure (Terraform)`}),_jsx(_components.p,{children:`Run this step when a release lists infrastructure requirements, or when you want to apply infrastructure changes independently.`}),_jsx(CodeBlock,{filename:``,numberOfLines:`1`,language:`shellscript`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light github-dark-dimmed`,style:{backgroundColor:`#fff`,\"--shiki-dark-bg\":`#22272e`,color:`#24292e`,\"--shiki-dark\":`#adbac7`},language:`shellscript`,children:_jsxs(_components.code,{language:`shellscript`,numberOfLines:`1`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#6F42C1`,\"--shiki-dark\":`#F69D50`},children:`terraform`}),_jsx(_components.span,{style:{color:`#032F62`,\"--shiki-dark\":`#96D0FF`},children:` apply`})]}),`\n`]})})}),_jsx(Warning,{children:_jsxs(_components.p,{children:[`Carefully review the output of `,_jsx(_components.code,{children:`terraform plan`}),` before applying any changes to your deployment. If you see something unexpected, like deletion of a database or storage account, `,_jsx(_components.a,{href:`mailto:support@braintrust.dev`,children:`contact Braintrust`}),` for help.`]})}),_jsxs(_components.p,{children:[`To pin to a specific Terraform module version, update the `,_jsx(_components.code,{children:`?ref=`}),` in your module source:`]}),_jsx(CodeBlock,{filename:``,numberOfLines:`5`,language:`hcl`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light github-dark-dimmed`,style:{backgroundColor:`#fff`,\"--shiki-dark-bg\":`#22272e`,color:`#24292e`,\"--shiki-dark\":`#adbac7`},language:`hcl`,children:_jsxs(_components.code,{language:`hcl`,numberOfLines:`5`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#6F42C1`,\"--shiki-dark\":`#F69D50`},children:`module`}),_jsx(_components.span,{style:{color:`#005CC5`,\"--shiki-dark\":`#6CB6FF`},children:` \"braintrust-data-plane\"`}),_jsx(_components.span,{style:{color:`#24292E`,\"--shiki-dark\":`#ADBAC7`},children:` {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#24292E`,\"--shiki-dark\":`#ADBAC7`},children:` source`}),_jsx(_components.span,{style:{color:`#D73A49`,\"--shiki-dark\":`#F47067`},children:` =`}),_jsx(_components.span,{style:{color:`#032F62`,\"--shiki-dark\":`#96D0FF`},children:` \"github.com/braintrustdata/terraform-azure-braintrust-data-plane?ref=vX.Y.Z\"`})]}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#6A737D`,\"--shiki-dark\":`#768390`},children:` # ... other configuration ...`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#24292E`,\"--shiki-dark\":`#ADBAC7`},children:`}`})}),`\n`]})})}),_jsxs(_components.p,{children:[`See all module releases: `,_jsx(_components.a,{href:`https://github.com/braintrustdata/terraform-azure-braintrust-data-plane/releases`,children:`GitHub Releases`})]}),_jsx(Note,{children:_jsxs(_components.p,{children:[`Some Terraform Azure module upgrades include one-time breaking changes, such as renamed node pool variables, an `,_jsx(_components.code,{children:`azurerm`}),` provider upgrade, or a Terraform state migration. Before bumping the module across major versions, review the `,_jsx(_components.strong,{children:`Terraform Azure module releases`}),` entries on the `,_jsx(_components.a,{href:`/data-plane-changelog`,children:`Self-hosting releases`}),` page for the versions you’re crossing.`]})}),_jsx(Heading,{level:`2`,id:`3-update-services-helm-2`,children:`3. Update services (Helm)`}),_jsx(_components.p,{children:`Run this step to deploy a new data plane version or apply a Helm chart update.`}),_jsxs(Steps,{children:[_jsx(Step,{title:`Set the data plane version`,children:_jsxs(_components.p,{children:[`Set the data plane version by updating the image tags for the API and Brainstore in your `,_jsx(_components.code,{children:`values.yaml`}),`. Refer to the `,_jsx(_components.a,{href:`https://github.com/braintrustdata/helm/blob/main/braintrust/values.yaml`,children:`Helm chart values reference`}),` for the exact field names.`]})}),_jsxs(Step,{title:`Upgrade the Helm chart`,children:[_jsx(CodeBlock,{filename:``,numberOfLines:`5`,language:`shellscript`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light github-dark-dimmed`,style:{backgroundColor:`#fff`,\"--shiki-dark-bg\":`#22272e`,color:`#24292e`,\"--shiki-dark\":`#adbac7`},language:`shellscript`,children:_jsxs(_components.code,{language:`shellscript`,numberOfLines:`5`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#6F42C1`,\"--shiki-dark\":`#F69D50`},children:`helm`}),_jsx(_components.span,{style:{color:`#032F62`,\"--shiki-dark\":`#96D0FF`},children:` upgrade`}),_jsx(_components.span,{style:{color:`#032F62`,\"--shiki-dark\":`#96D0FF`},children:` braintrust`}),_jsx(_components.span,{style:{color:`#005CC5`,\"--shiki-dark\":`#F47067`},children:` \\\\`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#032F62`,\"--shiki-dark\":`#96D0FF`},children:` oci://public.ecr.aws/braintrust/helm/braintrust`}),_jsx(_components.span,{style:{color:`#005CC5`,\"--shiki-dark\":`#F47067`},children:` \\\\`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#005CC5`,\"--shiki-dark\":`#6CB6FF`},children:` --namespace`}),_jsx(_components.span,{style:{color:`#032F62`,\"--shiki-dark\":`#96D0FF`},children:` braintrust`}),_jsx(_components.span,{style:{color:`#005CC5`,\"--shiki-dark\":`#F47067`},children:` \\\\`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#005CC5`,\"--shiki-dark\":`#6CB6FF`},children:` --version`}),_jsx(_components.span,{style:{color:`#D73A49`,\"--shiki-dark\":`#F47067`},children:` \u003c`}),_jsx(_components.span,{style:{color:`#032F62`,\"--shiki-dark\":`#96D0FF`},children:`chart-versio`}),_jsx(_components.span,{style:{color:`#032F62`,\"--shiki-dark\":`#96D0FF`},children:`n`}),_jsx(_components.span,{style:{color:`#D73A49`,\"--shiki-dark\":`#F47067`},children:`>`}),_jsx(_components.span,{style:{color:`#005CC5`,\"--shiki-dark\":`#F47067`},children:` \\\\`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#005CC5`,\"--shiki-dark\":`#6CB6FF`},children:` --values`}),_jsx(_components.span,{style:{color:`#032F62`,\"--shiki-dark\":`#96D0FF`},children:` helm-values.yaml`})]}),`\n`]})})}),_jsxs(_components.p,{children:[`Replace `,_jsx(_components.code,{children:`\u003cchart-version>`}),` with the Helm chart version required by the release (or your current chart version if no chart upgrade is needed).`]}),_jsx(Note,{children:_jsx(_components.p,{children:`When a release requires both Terraform and Helm changes, apply Terraform first, then run the Helm upgrade.`})}),_jsxs(Warning,{children:[_jsxs(_components.p,{children:[`Helm chart 6.20.0 and later enable the `,_jsx(_components.a,{href:`/admin/self-hosting/configure/scaling#brainstore-startup-gate`,children:`Brainstore startup gate`}),` by default. Before you upgrade, confirm that:`]}),_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`api.image.tag`}),` is a release tag such as `,_jsx(_components.code,{children:`v2.17.0`}),`, or `,_jsx(_components.code,{children:`api.brainstoreStartupGate.minimumVersion`}),` is set. Otherwise, the chart fails to render.`]}),`\n`,_jsxs(_components.li,{children:[`Every API pool uses the `,_jsx(_components.code,{children:`RollingUpdate`}),` strategy with `,_jsx(_components.code,{children:`maxUnavailable: 0`}),` and a nonzero `,_jsx(_components.code,{children:`maxSurge`}),`. Otherwise, the chart fails to render.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`brainstore.image.tag`}),` is a release tag. If it’s a commit SHA, a digest, or a pre-release tag, new API pods don’t start. To deploy such an image, set `,_jsx(_components.code,{children:`api.brainstoreStartupGate.enabled: false`}),`.`]}),`\n`]})]}),_jsxs(_components.p,{children:[`See all Helm chart releases: `,_jsx(_components.a,{href:`https://github.com/braintrustdata/helm/releases`,children:`GitHub Releases`})]})]})]})]})]}),`\n`,_jsx(Heading,{level:`2`,id:`next-steps`,children:`Next steps`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.a,{href:`/data-plane-changelog`,children:`Self-hosting releases`}),` — review release notes and infrastructure requirements for each data plane version`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.a,{href:`/admin/self-hosting/configure`,children:`Configuration`}),` — configure telemetry, network access, rate limiting, and other options`]}),`\n`]})]})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent};function _missingMdxReference(id,component){throw new Error(`Expected `+(component?`component`:`object`)+\" `\"+id+\"` to be defined: you likely forgot to import, pass, or provide it.\")}","frontmatter":{},"scope":{"codeStyling":{"theme":{"light":"github-light","dark":"github-dark-dimmed"}},"config":{},"pageMetadata":{"title":"Upgrade your deployment","sidebarTitle":"Routine upgrades","description":"Upgrade a self-hosted Braintrust data plane on AWS, GCP, or Azure","og:image":"https://www.braintrust.dev/og?template=docs\u0026title=Upgrade%20your%20deployment","href":"/admin/self-hosting/upgrade/routine"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[{"title":"How it works","slug":"how-it-works","depth":2,"children":[],"tabId":"aws"},{"title":"1. Update the module version","slug":"1-update-the-module-version","depth":2,"children":[],"tabId":"aws"},{"title":"2. Review and apply","slug":"2-review-and-apply","depth":2,"children":[],"tabId":"aws"},{"title":"How it works","slug":"how-it-works-2","depth":2,"children":[],"tabId":"gcp"},{"title":"1. Decide what to upgrade","slug":"1-decide-what-to-upgrade","depth":2,"children":[],"tabId":"gcp"},{"title":"2. Update infrastructure (Terraform)","slug":"2-update-infrastructure-terraform","depth":2,"children":[],"tabId":"gcp"},{"title":"3. Update services (Helm)","slug":"3-update-services-helm","depth":2,"children":[],"tabId":"gcp"},{"title":"How it works","slug":"how-it-works-3","depth":2,"children":[],"tabId":"azure"},{"title":"1. Decide what to upgrade","slug":"1-decide-what-to-upgrade-2","depth":2,"children":[],"tabId":"azure"},{"title":"2. Update infrastructure (Terraform)","slug":"2-update-infrastructure-terraform-2","depth":2,"children":[],"tabId":"azure"},{"title":"3. Update services (Helm)","slug":"3-update-services-helm-2","depth":2,"children":[],"tabId":"azure"},{"title":"Next steps","slug":"next-steps","depth":2,"children":[]}],"codeExamples":{}},"jsLinks":["/_mintlify/custom/braintrust/dd75b144de68c9c9/custom.js","/_mintlify/custom/braintrust/0c94fa43664e0c40/utm-attribution.js"],"subdomain":"braintrust","siteName":"Braintrust","title":"Upgrade your deployment - Braintrust","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-10-29T23:53:56.662Z","originalFileLocation":"admin/self-hosting/upgrade/routine.mdx"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=null;if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"system\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"description\" content=\"Upgrade a self-hosted Braintrust data plane on AWS, GCP, or Azure\">\u003cmeta data-mint-head name=\"application-name\" content=\"Braintrust\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/braintrust/Pnqso5CFAxfn5afF/_generated/favicon/android-chrome-192x192.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"/mintlify-assets/_mintlify/favicons/braintrust/Pnqso5CFAxfn5afF/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/braintrust/Pnqso5CFAxfn5afF/_generated/favicon/favicon-16x16.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/braintrust/Pnqso5CFAxfn5afF/_generated/favicon/favicon-32x32.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/braintrust/Pnqso5CFAxfn5afF/_generated/favicon/favicon.ico\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/braintrust/Pnqso5CFAxfn5afF/_generated/favicon-dark/android-chrome-192x192.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/braintrust/Pnqso5CFAxfn5afF/_generated/favicon-dark/favicon-16x16.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/braintrust/Pnqso5CFAxfn5afF/_generated/favicon-dark/favicon-32x32.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/braintrust/Pnqso5CFAxfn5afF/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Upgrade your deployment - Braintrust\">\u003cmeta data-mint-head property=\"og:description\" content=\"Upgrade a self-hosted Braintrust data plane on AWS, GCP, or Azure\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Braintrust documentation, API reference, and changelog\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.braintrust.dev/admin/self-hosting/upgrade/routine\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://www.braintrust.dev/og?template=docs\u0026amp;title=Upgrade%20your%20deployment\">\u003cmeta data-mint-head property=\"og:image:width\" content=\"1200\">\u003cmeta data-mint-head property=\"og:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"twitter:card\" content=\"summary_large_image\">\u003cmeta data-mint-head name=\"twitter:title\" content=\"Upgrade your deployment - Braintrust\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Upgrade a self-hosted Braintrust data plane on AWS, GCP, or Azure\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://www.braintrust.dev/og?template=docs\u0026amp;title=Upgrade%20your%20deployment\">\u003cmeta data-mint-head name=\"twitter:image:width\" content=\"1200\">\u003cmeta data-mint-head name=\"twitter:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"msapplication-config\" content=\"/mintlify-assets/_mintlify/favicons/braintrust/Pnqso5CFAxfn5afF/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Braintrust\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#3a4af8\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.braintrust.dev/admin/self-hosting/upgrade/routine\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/admin/self-hosting/upgrade/routine.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.braintrust.dev/#organization\",\"name\":\"Braintrust\",\"url\":\"https://docs.braintrust.dev\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/braintrust/u7i5gTV-ad3TRDYt/logo/logo-light.svg?fit=max\u0026auto=format\u0026n=u7i5gTV-ad3TRDYt\u0026q=85\u0026s=23878ca308aee393dcc8c89ed8705189\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.braintrust.dev#website\",\"name\":\"Braintrust\",\"url\":\"https://docs.braintrust.dev\",\"publisher\":{\"@id\":\"https://docs.braintrust.dev/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.braintrust.dev/admin/self-hosting/upgrade/routine#webpage\",\"url\":\"https://docs.braintrust.dev/admin/self-hosting/upgrade/routine\",\"name\":\"Upgrade your deployment\",\"description\":\"Upgrade a self-hosted Braintrust data plane on AWS, GCP, or Azure\",\"dateModified\":\"2026-10-29T23:53:56.662Z\",\"isPartOf\":{\"@id\":\"https://docs.braintrust.dev#website\"},\"breadcrumb\":{\"@id\":\"https://docs.braintrust.dev/admin/self-hosting/upgrade/routine#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.braintrust.dev/admin/self-hosting/upgrade/routine#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Admin\",\"item\":\"https://docs.braintrust.dev/admin/index\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Deployment\",\"item\":\"https://docs.braintrust.dev/admin/deployment/index\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Self-hosting\",\"item\":\"https://docs.braintrust.dev/admin/self-hosting/index\"},{\"@type\":\"ListItem\",\"position\":4,\"name\":\"Upgrade your deployment\",\"item\":\"https://docs.braintrust.dev/admin/self-hosting/upgrade/routine\"}]},{\"@type\":[\"Article\",\"TechArticle\"],\"@id\":\"https://docs.braintrust.dev/admin/self-hosting/upgrade/routine#article\",\"headline\":\"Upgrade your deployment\",\"name\":\"Upgrade your deployment\",\"description\":\"Upgrade a self-hosted Braintrust data plane on AWS, GCP, or Azure\",\"url\":\"https://docs.braintrust.dev/admin/self-hosting/upgrade/routine\",\"mainEntityOfPage\":{\"@id\":\"https://docs.braintrust.dev/admin/self-hosting/upgrade/routine#webpage\"},\"image\":\"https://www.braintrust.dev/og?template=docs\u0026title=Upgrade%20your%20deployment\",\"dateModified\":\"2026-10-29T23:53:56.662Z\",\"publisher\":{\"@id\":\"https://docs.braintrust.dev/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.braintrust.dev#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"Braintrust\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"Braintrust","nav":{"global":null,"tabs":[{"tab":"Guides","icon":"book-open","pages":[{"group":"Start","boost":3,"icon":"arrow-down-right","pages":[{"title":"Get started with Braintrust","sidebarTitle":"Introduction","mode":"wide","href":""},{"title":"Braintrust workflow","href":"/workflow"},{"group":"Quickstart","pages":[{"title":"Tracing quickstart","sidebarTitle":"Tracing","href":"/tracing-quickstart"},{"title":"Evaluation quickstart","sidebarTitle":"Evaluation","href":"/evaluation-quickstart"}]},{"group":"Loop agent","pages":[{"title":"Get started with Loop","sidebarTitle":"Get started","href":"/loop/index"},{"title":"What Loop can do","href":"/loop/capabilities"},{"group":"Integrations","pages":[{"title":"Connect external MCP servers","sidebarTitle":"External MCP servers","href":"/loop/mcp"},{"title":"Connect GitHub repositories","sidebarTitle":"GitHub repositories","href":"/loop/github"}]},{"title":"Run Loop on a schedule","sidebarTitle":"Automations","href":"/loop/automations"},{"title":"Manage Loop threads and limits","sidebarTitle":"Threads and limits","href":"/loop/manage"}]},{"title":"Plans and limits","href":"/plans-and-limits"}]},{"group":"Instrument","boost":3,"icon":"braces","pages":[{"title":"Instrument your application","sidebarTitle":"Overview","href":"/instrument/index"},{"group":"Tracing","pages":[{"title":"Trace LLM calls","href":"/instrument/trace-llm-calls"},{"title":"Trace application logic","href":"/instrument/trace-application-logic"},{"title":"Send application logs","href":"/instrument/application-logs"},{"title":"Advanced tracing patterns","href":"/instrument/advanced-tracing"}]},{"title":"Capture user feedback","sidebarTitle":"User feedback","href":"/instrument/user-feedback"},{"title":"Log attachments","sidebarTitle":"Attachments","href":"/instrument/attachments"}]},{"group":"Observe","boost":3,"icon":"activity","pages":[{"title":"Observe your application","sidebarTitle":"Overview","href":"/observe/index"},{"group":"Logs","pages":[{"title":"View your logs","href":"/observe/view-logs"},{"title":"Filter and search logs","href":"/observe/filter"},{"title":"Examine traces","href":"/observe/examine-traces"}]},{"group":"Patterns","pages":[{"title":"Patterns","sidebarTitle":"Overview","href":"/observe/patterns/index"},{"title":"Enable Patterns","href":"/observe/patterns/enable"},{"title":"Review and act on patterns","sidebarTitle":"Review and act","href":"/observe/patterns/review"}]},{"group":"Topics","pages":[{"title":"Topics","sidebarTitle":"Overview","href":"/observe/topics/index"},{"title":"Enable Topics","href":"/observe/topics/enable"},{"title":"Review insights from Topics","sidebarTitle":"Review insights","href":"/observe/topics/review-insights"},{"title":"Act on findings from Topics","sidebarTitle":"Act on findings","href":"/observe/topics/act-on-findings"},{"title":"Manage Topics","href":"/observe/topics/manage"},{"title":"Custom facets","href":"/observe/topics/custom-facets"}]},{"group":"Dashboards","pages":[{"title":"Dashboards","sidebarTitle":"Overview","href":"/observe/dashboards/index"},{"title":"Create dashboards","href":"/observe/dashboards/create"},{"title":"Build charts","href":"/observe/dashboards/build-charts"},{"title":"SQL charts","href":"/observe/dashboards/sql-charts"},{"title":"Coding agent insights dashboard","sidebarTitle":"Coding agent insights","href":"/observe/dashboards/coding-agent-insights"}]},{"title":"Set up alerts","sidebarTitle":"Alerts","href":"/observe/alerts"}]},{"group":"Annotate","boost":3,"icon":"list-checks","pages":[{"title":"Annotate and curate data","sidebarTitle":"Overview","href":"/annotate/index"},{"group":"Human review","pages":[{"title":"Set up human review","sidebarTitle":"Set up human review","href":"/annotate/human-review/index"},{"title":"Score traces and datasets","href":"/annotate/human-review/score-traces"},{"title":"Review with multiple reviewers","href":"/annotate/human-review/multiple-reviewers"},{"title":"Manage review work","href":"/annotate/human-review/manage-review-work"}]},{"title":"Add labels and corrections","sidebarTitle":"Labels and corrections","href":"/annotate/labels"},{"group":"Datasets","pages":[{"title":"Datasets","sidebarTitle":"Overview","href":"/annotate/datasets/index"},{"title":"Create datasets","href":"/annotate/datasets/create"},{"title":"Dataset pipelines","href":"/annotate/datasets/pipelines"},{"title":"Manage datasets","href":"/annotate/datasets/manage"},{"title":"Use datasets in evaluations","sidebarTitle":"Use in evaluations","href":"/annotate/datasets/use-in-evaluations"},{"title":"Track dataset performance","sidebarTitle":"Track performance","href":"/annotate/datasets/track-performance"}]},{"title":"Export annotated data","sidebarTitle":"Exports","href":"/annotate/export"},{"title":"Create custom views","sidebarTitle":"Custom views","href":"/annotate/custom-views"}]},{"group":"Evaluate","boost":3,"icon":"flask-conical","pages":[{"title":"Evaluate systematically","sidebarTitle":"Overview","href":"/evaluate/index"},{"group":"Prompts","pages":[{"title":"Prompts","sidebarTitle":"Overview","href":"/evaluate/prompts/index"},{"title":"Create prompts","href":"/evaluate/prompts/create"},{"title":"Prompt templating","sidebarTitle":"Templating","href":"/evaluate/prompts/templating"},{"title":"Use prompts in code","sidebarTitle":"Use in code","href":"/evaluate/prompts/use-in-code"},{"title":"Version prompts","href":"/evaluate/prompts/versions"},{"title":"Manage prompts","href":"/evaluate/prompts/manage"}]},{"group":"Evaluators","pages":[{"title":"Evaluate output quality with scorers and classifiers","sidebarTitle":"Overview","href":"/evaluate/write-scorers"},{"title":"Autoevals","href":"/evaluate/autoevals"},{"title":"Custom code evaluators","sidebarTitle":"Custom code","href":"/evaluate/custom-code"},{"title":"LLM-as-a-judge evaluators","sidebarTitle":"LLM-as-a-judge","href":"/evaluate/llm-as-a-judge"}]},{"title":"Iterate in playgrounds","sidebarTitle":"Playgrounds","href":"/evaluate/playgrounds"},{"group":"Experiments","pages":[{"title":"Experiments","sidebarTitle":"Overview","href":"/evaluate/run-evaluations"},{"title":"Run experiments in code","sidebarTitle":"Run in code","href":"/evaluate/run-in-code"},{"title":"Run experiments in the UI","sidebarTitle":"Run in the UI","href":"/evaluate/run-in-ui"},{"title":"Run experiments in CI/CD","sidebarTitle":"Run in CI/CD","href":"/evaluate/run-in-ci"},{"title":"Advanced eval techniques","sidebarTitle":"Advanced techniques","href":"/evaluate/advanced-evaluations"},{"group":"Analyze results","pages":[{"title":"Interpret evaluation results","href":"/evaluate/interpret-results"},{"title":"Compare experiments","href":"/evaluate/compare-experiments"},{"title":"Evaluate reasoning models","href":"/evaluate/reasoning"}]}]},{"group":"Remote evals","pages":[{"title":"Remote evals and sandboxes","sidebarTitle":"Test complex agents","href":"/evaluate/remote-evals"},{"title":"Create evaluation parameters","sidebarTitle":"Parameters","href":"/evaluate/write-parameters"}]},{"title":"Score production traces","sidebarTitle":"Online scoring","href":"/evaluate/score-online"},{"title":"Evaluation best practices","sidebarTitle":"Best practices","href":"/evaluate/best-practices"}]},{"group":"Deploy","boost":3,"icon":"rocket","pages":[{"title":"Deploy","sidebarTitle":"Overview","href":"/deploy/index"},{"title":"Deploy functions","sidebarTitle":"Functions","href":"/deploy/functions"},{"group":"Braintrust Gateway","pages":[{"title":"Use the Braintrust Gateway","sidebarTitle":"Use the Gateway","href":"/deploy/gateway"},{"title":"Supported models","mode":"wide","href":"/deploy/supported-models"},{"title":"Use the proxy (deprecated)","href":"/deploy/ai-proxy"}]},{"title":"Manage environments","sidebarTitle":"Environments","href":"/deploy/environments"},{"title":"Monitor deployments","sidebarTitle":"Monitoring","href":"/deploy/monitor"},{"title":"Stream responses","sidebarTitle":"Streaming","href":"/deploy/streaming"}]},{"group":"Admin","boost":3,"icon":"shield","pages":[{"title":"Administration","sidebarTitle":"Overview","href":"/admin/index"},{"title":"Manage organizations","sidebarTitle":"Organizations","href":"/admin/organizations"},{"title":"Manage projects","sidebarTitle":"Projects","href":"/admin/projects"},{"title":"Configure AI providers","sidebarTitle":"AI providers","href":"/admin/ai-providers"},{"title":"Audit logging","href":"/admin/audit-logs"},{"group":"Access control","pages":[{"title":"Access control","sidebarTitle":"Overview","href":"/admin/access-control/index"},{"title":"Manage permissions","sidebarTitle":"Manage permissions","href":"/admin/access-control/manage-permissions"}]},{"group":"Billing","pages":[{"title":"Manage billing","sidebarTitle":"Overview","href":"/admin/billing/index"},{"title":"Change your plan","href":"/admin/billing/change-plan"},{"title":"Monitor usage","href":"/admin/billing/monitor-usage"},{"title":"Optimize costs","href":"/admin/billing/optimize-costs"},{"title":"Billing FAQ","href":"/admin/billing/faq"}]},{"group":"Data management","pages":[{"title":"Protect sensitive data","href":"/admin/data-management/protect-sensitive-data"},{"title":"Export to cloud storage","sidebarTitle":"Data export","href":"/admin/data-management/export"},{"title":"Configure data retention","sidebarTitle":"Data retention","href":"/admin/data-management/retention"}]},{"group":"Deployment","pages":[{"title":"Deployment options","sidebarTitle":"Overview","href":"/admin/deployment/index"},{"group":"BYOC","pages":[{"title":"Bring your own cloud (BYOC)","sidebarTitle":"Overview","href":"/admin/deployment/byoc/index"},{"title":"Set up BYOC on AWS","sidebarTitle":"Set up BYOC","href":"/admin/deployment/byoc/aws"},{"title":"BYOC operations and lifecycle","sidebarTitle":"Operations and lifecycle","href":"/admin/deployment/byoc/manage"},{"title":"AWS access and security","sidebarTitle":"Access and security","href":"/admin/deployment/byoc/aws-security"}]},{"group":"Self-hosting","pages":[{"title":"Self-hosting Braintrust","sidebarTitle":"Overview","href":"/admin/self-hosting/index"},{"title":"Architecture","href":"/admin/self-hosting/architecture"},{"title":"Deploy Braintrust","sidebarTitle":"Deploy","href":"/admin/self-hosting/deploy"},{"group":"Configure","pages":[{"title":"Configure your deployment","sidebarTitle":"Overview","href":"/admin/self-hosting/configure/index"},{"title":"Security and access","href":"/admin/self-hosting/configure/security"},{"title":"Networking and connectivity","href":"/admin/self-hosting/configure/networking"},{"title":"Scaling and storage","href":"/admin/self-hosting/configure/scaling"},{"title":"Self-host the Braintrust Gateway","sidebarTitle":"Braintrust Gateway","href":"/admin/self-hosting/configure/gateway"},{"title":"Loop runtime","href":"/admin/self-hosting/configure/loop-runtime"},{"title":"Telemetry and data retention","description":"Control the telemetry a self-hosted data plane sends to Braintrust's control plane and enable data retention.","href":"/admin/self-hosting/configure/telemetry"}]},{"group":"Upgrade","pages":[{"title":"Upgrade your deployment","sidebarTitle":"Routine upgrades","href":"/admin/self-hosting/upgrade/routine"},{"group":"Version migrations","pages":[{"title":"Upgrade to data plane v2.x","sidebarTitle":"Data plane v2.x","description":"Upgrade your self-hosted Braintrust deployment to the data plane v2 series","href":"/admin/self-hosting/upgrade/v2"},{"title":"Upgrade to Terraform module v6","sidebarTitle":"AWS module v6 (Lambda to ECS)","href":"/admin/self-hosting/upgrade/v6"},{"title":"Upgrade to Terraform module v7","sidebarTitle":"AWS module v7 (ECS and Gateway defaults)","href":"/admin/self-hosting/upgrade/v7"}]}]}]}]},{"title":"Authentication","href":"/admin/authentication"},{"title":"SCIM provisioning","href":"/admin/scim"},{"title":"Personal settings","href":"/admin/personal-settings"},{"title":"Service health","href":"/admin/service-health"}]},{"group":"Best practices","icon":"shield-check","pages":[{"title":"Evaluating agents","href":"/best-practices/agents"},{"title":"Writing scorers","href":"/best-practices/scorers"},{"title":"Product manager workflows","sidebarTitle":"PM workflows","href":"/best-practices/pm-workflows"}]},{"title":"Security","href":"/security"}]},{"tab":"Integrations","icon":"plug","pages":[{"title":"Integrations","href":"/integrations"}]},{"tab":"SDKs","icon":"blocks","dropdowns":[{"dropdown":"All SDKs","pages":[{"title":"SDKs","mode":"custom","href":"/sdks"}]},{"dropdown":"TypeScript","icon":"https://mintlify.s3.us-west-1.amazonaws.com/braintrust/images/sdk-icons/typescript.svg","pages":[{"title":"TypeScript SDK quickstart","sidebarTitle":"Quickstart","href":"/sdks/typescript/quickstart"},{"group":"Use the SDK","icon":"code","pages":[{"title":"Install and instrument","href":"/sdks/typescript/install-and-instrument"},{"title":"TypeScript SDK integrations","sidebarTitle":"SDK integrations","href":"/sdks/typescript/sdk-integrations"},{"title":"Troubleshooting","href":"/sdks/typescript/troubleshooting"}]},{"group":"Features","icon":"component","pages":[{"title":"Workflow evaluations","href":"/sdks/typescript/workflow-evaluations"},{"title":"Application logs","href":"/sdks/typescript/application-logs"},{"title":"Redact sensitive data","href":"/sdks/typescript/redact-sensitive-data"}]},{"group":"Reference","icon":"file-text","pages":[{"title":"API reference","href":"/sdks/typescript/api-reference"},{"group":"Versions","boost":0.5,"pages":[{"title":"Braintrust TypeScript SDK","sidebarTitle":"v3.42.0 (latest)","href":"/sdks/typescript/versions/3.42.0"},{"title":"Braintrust TypeScript SDK","sidebarTitle":"v3.41.0","href":"/sdks/typescript/versions/3.41.0"},{"title":"Braintrust TypeScript SDK","sidebarTitle":"v3.40.0","href":"/sdks/typescript/versions/3.40.0"},{"title":"Braintrust TypeScript SDK","sidebarTitle":"v3.39.0","href":"/sdks/typescript/versions/3.39.0"},{"title":"Braintrust TypeScript SDK","sidebarTitle":"v3.38.0","href":"/sdks/typescript/versions/3.38.0"},{"title":"Braintrust TypeScript SDK","sidebarTitle":"v3.37.2","href":"/sdks/typescript/versions/3.37.2"},{"title":"Braintrust TypeScript SDK","sidebarTitle":"v3.36.0","href":"/sdks/typescript/versions/3.36.0"},{"title":"Braintrust TypeScript SDK","sidebarTitle":"v3.35.0","href":"/sdks/typescript/versions/3.35.0"},{"title":"Braintrust TypeScript SDK","sidebarTitle":"v3.34.0","href":"/sdks/typescript/versions/3.34.0"},{"title":"Braintrust TypeScript SDK","sidebarTitle":"v3.33.0","href":"/sdks/typescript/versions/3.33.0"},{"title":"Braintrust TypeScript SDK","sidebarTitle":"v3.32.0","href":"/sdks/typescript/versions/3.32.0"},{"title":"Braintrust TypeScript SDK","sidebarTitle":"v3.31.0","href":"/sdks/typescript/versions/3.31.0"},{"title":"Braintrust TypeScript SDK","sidebarTitle":"v3.30.0","href":"/sdks/typescript/versions/3.30.0"},{"title":"Braintrust TypeScript SDK","sidebarTitle":"v3.29.0","href":"/sdks/typescript/versions/3.29.0"},{"title":"Braintrust TypeScript SDK","sidebarTitle":"v3.28.0","href":"/sdks/typescript/versions/3.28.0"},{"title":"Braintrust TypeScript SDK","sidebarTitle":"v3.27.0","href":"/sdks/typescript/versions/3.27.0"},{"title":"Braintrust TypeScript SDK","sidebarTitle":"v3.26.0","href":"/sdks/typescript/versions/3.26.0"},{"title":"Braintrust TypeScript SDK","sidebarTitle":"v3.25.0","href":"/sdks/typescript/versions/3.25.0"},{"title":"Braintrust TypeScript SDK","sidebarTitle":"v3.24.0","href":"/sdks/typescript/versions/3.24.0"},{"title":"Braintrust TypeScript SDK","sidebarTitle":"v3.23.1","href":"/sdks/typescript/versions/3.23.1"},{"title":"Braintrust TypeScript SDK","sidebarTitle":"v3.22.0","href":"/sdks/typescript/versions/3.22.0"},{"title":"Braintrust TypeScript SDK","sidebarTitle":"v3.21.0","href":"/sdks/typescript/versions/3.21.0"},{"title":"Braintrust TypeScript SDK","sidebarTitle":"v3.20.0","href":"/sdks/typescript/versions/3.20.0"},{"title":"Braintrust TypeScript SDK","sidebarTitle":"v3.19.0","href":"/sdks/typescript/versions/3.19.0"},{"title":"Braintrust TypeScript SDK","sidebarTitle":"v3.18.0","href":"/sdks/typescript/versions/3.18.0"},{"title":"Braintrust TypeScript SDK","sidebarTitle":"v3.17.0","href":"/sdks/typescript/versions/3.17.0"},{"title":"Braintrust TypeScript SDK","sidebarTitle":"v3.16.0","href":"/sdks/typescript/versions/3.16.0"},{"title":"Braintrust TypeScript SDK","sidebarTitle":"v3.15.0","href":"/sdks/typescript/versions/3.15.0"},{"title":"Braintrust TypeScript SDK","sidebarTitle":"v3.14.0","href":"/sdks/typescript/versions/3.14.0"},{"title":"Braintrust TypeScript SDK","sidebarTitle":"v3.13.0","href":"/sdks/typescript/versions/3.13.0"},{"title":"Braintrust TypeScript SDK","sidebarTitle":"v3.12.0","href":"/sdks/typescript/versions/3.12.0"},{"title":"Braintrust TypeScript SDK","sidebarTitle":"v3.11.0","href":"/sdks/typescript/versions/3.11.0"},{"title":"Braintrust TypeScript SDK","sidebarTitle":"v3.10.0","href":"/sdks/typescript/versions/3.10.0"},{"title":"Braintrust TypeScript SDK","sidebarTitle":"v3.9.0","href":"/sdks/typescript/versions/3.9.0"},{"title":"Braintrust TypeScript SDK","sidebarTitle":"v3.8.0","href":"/sdks/typescript/versions/3.8.0"},{"title":"Braintrust TypeScript SDK","sidebarTitle":"v3.7.1","href":"/sdks/typescript/versions/3.7.1"},{"title":"Braintrust TypeScript SDK","sidebarTitle":"v3.7.0","href":"/sdks/typescript/versions/3.7.0"},{"title":"Braintrust TypeScript SDK","sidebarTitle":"v3.6.0","href":"/sdks/typescript/versions/3.6.0"},{"title":"Braintrust TypeScript SDK","sidebarTitle":"v3.5.0","href":"/sdks/typescript/versions/3.5.0"},{"title":"Braintrust TypeScript SDK","sidebarTitle":"v3.4.0","href":"/sdks/typescript/versions/3.4.0"},{"title":"Braintrust TypeScript SDK","sidebarTitle":"v3.3.0","href":"/sdks/typescript/versions/3.3.0"},{"title":"Braintrust TypeScript SDK","sidebarTitle":"v3.2.0","href":"/sdks/typescript/versions/3.2.0"},{"title":"Braintrust TypeScript SDK","sidebarTitle":"v3.1.0","href":"/sdks/typescript/versions/3.1.0"},{"title":"Braintrust TypeScript SDK","sidebarTitle":"v3.0.0","href":"/sdks/typescript/versions/3.0.0"},{"title":"Braintrust TypeScript SDK","sidebarTitle":"v2.2.2","href":"/sdks/typescript/versions/2.2.2"},{"title":"Braintrust TypeScript SDK","sidebarTitle":"v2.1.0","href":"/sdks/typescript/versions/2.1.0"},{"title":"Braintrust TypeScript SDK","sidebarTitle":"v2.0.2","href":"/sdks/typescript/versions/2.0.2"},{"title":"TypeScript SDK","sidebarTitle":"v1.1.1","href":"/sdks/typescript/versions/1.1.1"}]},{"group":"Migration guides","pages":[{"title":"Migrate from v2.x to v3.x","sidebarTitle":"v2.x to v3.x","href":"/sdks/typescript/migrations/v2-to-v3"},{"title":"Migrate from v1.x to v2.x","sidebarTitle":"v1.x to v2.x","href":"/sdks/typescript/migrations/v1-to-v2"},{"title":"Migrate from v0.x to v1.x","sidebarTitle":"v0.x to v1.x","href":"/sdks/typescript/migrations/v0-to-v1"}]},{"title":"Changelog","url":"https://github.com/braintrustdata/braintrust-sdk-javascript/releases?q=js-sdk-\u0026expanded=true","href":"/sdks/typescript/changelog"},{"title":"GitHub","url":"https://github.com/braintrustdata/braintrust-sdk-javascript","href":"/sdks/typescript/github"}]},{"group":"Related packages","icon":"puzzle","pages":[{"title":"TypeScript SDK: related packages","sidebarTitle":"Overview","href":"/sdks/typescript/related/index"},{"group":"Audio","boost":0.5,"pages":[{"title":"Audio JS package","sidebarTitle":"v0.1.0 (latest)","href":"/sdks/typescript/related/audio/0.1.0"}]},{"group":"Autoevals","boost":0.5,"pages":[{"title":"Autoevals TypeScript API","sidebarTitle":"v0.3.0 (latest)","href":"/sdks/typescript/related/autoevals/0.3.0"},{"title":"Autoevals TypeScript API","sidebarTitle":"v0.0.132","href":"/sdks/typescript/related/autoevals/0.0.132"},{"title":"Autoevals TypeScript API","sidebarTitle":"v0.0.131","href":"/sdks/typescript/related/autoevals/0.0.131"}]},{"group":"LangChain (deprecated)","boost":0.5,"pages":[{"title":"LangChain JS Integration","sidebarTitle":"v0.2.5 (latest)","href":"/sdks/typescript/related/langchain/0.2.5"},{"title":"LangChain JS Integration","sidebarTitle":"v0.2.4","href":"/sdks/typescript/related/langchain/0.2.4"}]},{"group":"OpenAI Agents","boost":0.5,"pages":[{"title":"OpenAI Agents JS Integration","sidebarTitle":"v0.1.7 (latest)","href":"/sdks/typescript/related/openai-agents/0.1.7"},{"title":"OpenAI Agents JS Integration","sidebarTitle":"v0.1.6","href":"/sdks/typescript/related/openai-agents/0.1.6"}]},{"group":"OpenTelemetry","boost":0.5,"pages":[{"title":"OpenTelemetry JS Integration","sidebarTitle":"v1.1.0 (latest)","href":"/sdks/typescript/related/otel/1.1.0"},{"title":"OpenTelemetry JS Integration","sidebarTitle":"v1.0.2","href":"/sdks/typescript/related/otel/1.0.2"},{"title":"OpenTelemetry JS Integration","sidebarTitle":"v1.0.0","href":"/sdks/typescript/related/otel/1.0.0"}]}]}]},{"dropdown":"Python","icon":"https://mintlify.s3.us-west-1.amazonaws.com/braintrust/images/sdk-icons/python.svg","pages":[{"title":"Python SDK quickstart","sidebarTitle":"Quickstart","href":"/sdks/python/quickstart"},{"group":"Use the SDK","icon":"code","pages":[{"title":"Install and instrument","href":"/sdks/python/install-and-instrument"},{"title":"Python SDK integrations","sidebarTitle":"SDK integrations","href":"/sdks/python/sdk-integrations"},{"title":"Troubleshooting","href":"/sdks/python/troubleshooting"}]},{"group":"Features","icon":"component","pages":[{"title":"Workflow evaluations","href":"/sdks/python/workflow-evaluations"},{"title":"Application logs","href":"/sdks/python/application-logs"},{"title":"Redact sensitive data","href":"/sdks/python/redact-sensitive-data"}]},{"group":"Reference","icon":"file-text","pages":[{"title":"API reference","href":"/sdks/python/api-reference"},{"group":"Versions","boost":0.5,"pages":[{"title":"Braintrust Python SDK","sidebarTitle":"v0.49.1 (latest)","href":"/sdks/python/versions/0.49.1"},{"title":"Braintrust Python SDK","sidebarTitle":"v0.48.1","href":"/sdks/python/versions/0.48.1"},{"title":"Braintrust Python SDK","sidebarTitle":"v0.47.0","href":"/sdks/python/versions/0.47.0"},{"title":"Braintrust Python SDK","sidebarTitle":"v0.46.1","href":"/sdks/python/versions/0.46.1"},{"title":"Braintrust Python SDK","sidebarTitle":"v0.45.0","href":"/sdks/python/versions/0.45.0"},{"title":"Braintrust Python SDK","sidebarTitle":"v0.44.1","href":"/sdks/python/versions/0.44.1"},{"title":"Braintrust Python SDK","sidebarTitle":"v0.43.0","href":"/sdks/python/versions/0.43.0"},{"title":"Braintrust Python SDK","sidebarTitle":"v0.42.0","href":"/sdks/python/versions/0.42.0"},{"title":"Braintrust Python SDK","sidebarTitle":"v0.41.1","href":"/sdks/python/versions/0.41.1"},{"title":"Braintrust Python SDK","sidebarTitle":"v0.40.0","href":"/sdks/python/versions/0.40.0"},{"title":"Braintrust Python SDK","sidebarTitle":"v0.39.0","href":"/sdks/python/versions/0.39.0"},{"title":"Braintrust Python SDK","sidebarTitle":"v0.38.0","href":"/sdks/python/versions/0.38.0"},{"title":"Braintrust Python SDK","sidebarTitle":"v0.37.0","href":"/sdks/python/versions/0.37.0"},{"title":"Braintrust Python SDK","sidebarTitle":"v0.36.0","href":"/sdks/python/versions/0.36.0"},{"title":"Braintrust Python SDK","sidebarTitle":"v0.35.0","href":"/sdks/python/versions/0.35.0"},{"title":"Braintrust Python SDK","sidebarTitle":"v0.34.0","href":"/sdks/python/versions/0.34.0"},{"title":"Braintrust Python SDK","sidebarTitle":"v0.33.0","href":"/sdks/python/versions/0.33.0"},{"title":"Braintrust Python SDK","sidebarTitle":"v0.32.0","href":"/sdks/python/versions/0.32.0"},{"title":"Braintrust Python SDK","sidebarTitle":"v0.31.1","href":"/sdks/python/versions/0.31.1"},{"title":"Braintrust Python SDK","sidebarTitle":"v0.31.0","href":"/sdks/python/versions/0.31.0"},{"title":"Braintrust Python SDK","sidebarTitle":"v0.30.1","href":"/sdks/python/versions/0.30.1"},{"title":"Braintrust Python SDK","sidebarTitle":"v0.30.0","href":"/sdks/python/versions/0.30.0"},{"title":"Braintrust Python SDK","sidebarTitle":"v0.29.0","href":"/sdks/python/versions/0.29.0"},{"title":"Braintrust Python SDK","sidebarTitle":"v0.28.0","href":"/sdks/python/versions/0.28.0"},{"title":"Braintrust Python SDK","sidebarTitle":"v0.27.0","href":"/sdks/python/versions/0.27.0"},{"title":"Braintrust Python SDK","sidebarTitle":"v0.26.0","href":"/sdks/python/versions/0.26.0"},{"title":"Braintrust Python SDK","sidebarTitle":"v0.25.0","href":"/sdks/python/versions/0.25.0"},{"title":"Braintrust Python SDK","sidebarTitle":"v0.24.0","href":"/sdks/python/versions/0.24.0"},{"title":"Braintrust Python SDK","sidebarTitle":"v0.23.0","href":"/sdks/python/versions/0.23.0"},{"title":"Braintrust Python SDK","sidebarTitle":"v0.22.1","href":"/sdks/python/versions/0.22.1"},{"title":"Braintrust Python SDK","sidebarTitle":"v0.21.0","href":"/sdks/python/versions/0.21.0"},{"title":"Braintrust Python SDK","sidebarTitle":"v0.20.0","href":"/sdks/python/versions/0.20.0"},{"title":"Braintrust Python SDK","sidebarTitle":"v0.19.0","href":"/sdks/python/versions/0.19.0"},{"title":"Braintrust Python SDK","sidebarTitle":"v0.18.0","href":"/sdks/python/versions/0.18.0"},{"title":"Braintrust Python SDK","sidebarTitle":"v0.17.0","href":"/sdks/python/versions/0.17.0"},{"title":"Braintrust Python SDK","sidebarTitle":"v0.16.0","href":"/sdks/python/versions/0.16.0"},{"title":"Braintrust Python SDK","sidebarTitle":"v0.15.0","href":"/sdks/python/versions/0.15.0"},{"title":"Braintrust Python SDK","sidebarTitle":"v0.14.0","href":"/sdks/python/versions/0.14.0"},{"title":"Braintrust Python SDK","sidebarTitle":"v0.13.0","href":"/sdks/python/versions/0.13.0"},{"title":"Braintrust Python SDK","sidebarTitle":"v0.12.1","href":"/sdks/python/versions/0.12.1"},{"title":"Braintrust Python SDK","sidebarTitle":"v0.11.0","href":"/sdks/python/versions/0.11.0"},{"title":"Braintrust Python SDK","sidebarTitle":"v0.10.0","href":"/sdks/python/versions/0.10.0"},{"title":"Braintrust Python SDK","sidebarTitle":"v0.9.0","href":"/sdks/python/versions/0.9.0"},{"title":"Braintrust Python SDK","sidebarTitle":"v0.8.0","href":"/sdks/python/versions/0.8.0"},{"title":"Braintrust Python SDK","sidebarTitle":"v0.7.0","href":"/sdks/python/versions/0.7.0"},{"title":"Braintrust Python SDK","sidebarTitle":"v0.6.0","href":"/sdks/python/versions/0.6.0"},{"title":"Braintrust Python SDK","sidebarTitle":"v0.5.6","href":"/sdks/python/versions/0.5.6"},{"title":"Braintrust Python SDK","sidebarTitle":"v0.4.3","href":"/sdks/python/versions/0.4.3"},{"title":"Python SDK","sidebarTitle":"v0.3.15","href":"/sdks/python/versions/0.3.15"}]},{"title":"Changelog","url":"https://github.com/braintrustdata/braintrust-sdk-python/releases","href":"/sdks/python/changelog"},{"title":"GitHub","url":"https://github.com/braintrustdata/braintrust-sdk-python","href":"/sdks/python/github"}]},{"group":"Related packages","icon":"puzzle","pages":[{"title":"Python SDK: related packages","sidebarTitle":"Overview","href":"/sdks/python/related/index"},{"group":"Autoevals","boost":0.5,"pages":[{"title":"Autoevals Python API","sidebarTitle":"v0.3.0 (latest)","href":"/sdks/python/related/autoevals/0.3.0"},{"title":"Autoevals Python API","sidebarTitle":"v0.2.0","href":"/sdks/python/related/autoevals/0.2.0"},{"title":"Autoevals Python API","sidebarTitle":"v0.1.0","href":"/sdks/python/related/autoevals/0.1.0"},{"title":"Autoevals Python API","sidebarTitle":"v0.0.131","href":"/sdks/python/related/autoevals/0.0.131"},{"title":"Autoevals Python API","sidebarTitle":"v0.0.130","href":"/sdks/python/related/autoevals/0.0.130"}]},{"group":"LangChain (deprecated)","boost":0.5,"pages":[{"title":"LangChain Python Integration","sidebarTitle":"v0.3.0 (deprecated)","href":"/sdks/python/related/langchain/0.3.0"},{"title":"LangChain Python Integration","sidebarTitle":"v0.2.1 (deprecated)","href":"/sdks/python/related/langchain/0.2.1"},{"title":"LangChain Python Integration","sidebarTitle":"v0.2.0 (deprecated)","href":"/sdks/python/related/langchain/0.2.0"},{"title":"LangChain Python Integration","sidebarTitle":"v0.1.5 (deprecated)","href":"/sdks/python/related/langchain/0.1.5"}]},{"group":"Google ADK (deprecated)","boost":0.5,"pages":[{"title":"Google ADK Integration","sidebarTitle":"v0.4.0 (deprecated)","href":"/sdks/python/related/adk/0.4.0"},{"title":"Google ADK Integration","sidebarTitle":"v0.3.1 (deprecated)","href":"/sdks/python/related/adk/0.3.1"},{"title":"Google ADK Integration","sidebarTitle":"v0.2.4 (deprecated)","href":"/sdks/python/related/adk/0.2.4"}]}]}]},{"dropdown":"Go","icon":"https://mintlify.s3.us-west-1.amazonaws.com/braintrust/images/sdk-icons/go.svg","pages":[{"title":"Go SDK quickstart","sidebarTitle":"Quickstart","href":"/sdks/go/quickstart"},{"group":"Use the SDK","icon":"code","pages":[{"title":"Install and instrument","href":"/sdks/go/install-and-instrument"},{"title":"Go SDK integrations","sidebarTitle":"SDK integrations","href":"/sdks/go/sdk-integrations"},{"title":"Troubleshooting","href":"/sdks/go/troubleshooting"}]},{"group":"Features","icon":"component","pages":[{"title":"Workflow evaluations","href":"/sdks/go/workflow-evaluations"},{"title":"Redact sensitive data","href":"/sdks/go/redact-sensitive-data"}]},{"group":"Reference","icon":"file-text","pages":[{"title":"API reference","href":"/sdks/go/api-reference"},{"group":"Versions","boost":0.5,"pages":[{"title":"Braintrust Go SDK","sidebarTitle":"v0.19.0 (latest)","url":"https://pkg.go.dev/github.com/braintrustdata/braintrust-sdk-go@v0.19.0","href":"/sdks/go/versions/0.19.0"},{"title":"Braintrust Go SDK","sidebarTitle":"v0.18.0","url":"https://pkg.go.dev/github.com/braintrustdata/braintrust-sdk-go@v0.18.0","href":"/sdks/go/versions/0.18.0"},{"title":"Braintrust Go SDK","sidebarTitle":"v0.17.2","url":"https://pkg.go.dev/github.com/braintrustdata/braintrust-sdk-go@v0.17.2","href":"/sdks/go/versions/0.17.2"},{"title":"Braintrust Go SDK","sidebarTitle":"v0.17.1","url":"https://pkg.go.dev/github.com/braintrustdata/braintrust-sdk-go@v0.17.1","href":"/sdks/go/versions/0.17.1"},{"title":"Braintrust Go SDK","sidebarTitle":"v0.17.0","url":"https://pkg.go.dev/github.com/braintrustdata/braintrust-sdk-go@v0.17.0","href":"/sdks/go/versions/0.17.0"},{"title":"Braintrust Go SDK","sidebarTitle":"v0.16.0","url":"https://pkg.go.dev/github.com/braintrustdata/braintrust-sdk-go@v0.16.0","href":"/sdks/go/versions/0.16.0"},{"title":"Braintrust Go SDK","sidebarTitle":"v0.15.0","url":"https://pkg.go.dev/github.com/braintrustdata/braintrust-sdk-go@v0.15.0","href":"/sdks/go/versions/0.15.0"},{"title":"Braintrust Go SDK","sidebarTitle":"v0.14.0","url":"https://pkg.go.dev/github.com/braintrustdata/braintrust-sdk-go@v0.14.0","href":"/sdks/go/versions/0.14.0"},{"title":"Braintrust Go SDK","sidebarTitle":"v0.13.0","url":"https://pkg.go.dev/github.com/braintrustdata/braintrust-sdk-go@v0.13.0","href":"/sdks/go/versions/0.13.0"},{"title":"Braintrust Go SDK","sidebarTitle":"v0.12.0","url":"https://pkg.go.dev/github.com/braintrustdata/braintrust-sdk-go@v0.12.0","href":"/sdks/go/versions/0.12.0"},{"title":"Braintrust Go SDK","sidebarTitle":"v0.11.1","url":"https://pkg.go.dev/github.com/braintrustdata/braintrust-sdk-go@v0.11.1","href":"/sdks/go/versions/0.11.1"},{"title":"Braintrust Go SDK","sidebarTitle":"v0.11.0","url":"https://pkg.go.dev/github.com/braintrustdata/braintrust-sdk-go@v0.11.0","href":"/sdks/go/versions/0.11.0"},{"title":"Braintrust Go SDK","sidebarTitle":"v0.10.0","url":"https://pkg.go.dev/github.com/braintrustdata/braintrust-sdk-go@v0.10.0","href":"/sdks/go/versions/0.10.0"},{"title":"Braintrust Go SDK","sidebarTitle":"v0.9.1","url":"https://pkg.go.dev/github.com/braintrustdata/braintrust-sdk-go@v0.9.1","href":"/sdks/go/versions/0.9.1"},{"title":"Braintrust Go SDK","sidebarTitle":"v0.9.0","url":"https://pkg.go.dev/github.com/braintrustdata/braintrust-sdk-go@v0.9.0","href":"/sdks/go/versions/0.9.0"},{"title":"Braintrust Go SDK","sidebarTitle":"v0.8.0","url":"https://pkg.go.dev/github.com/braintrustdata/braintrust-sdk-go@v0.8.0","href":"/sdks/go/versions/0.8.0"},{"title":"Braintrust Go SDK","sidebarTitle":"v0.7.2","url":"https://pkg.go.dev/github.com/braintrustdata/braintrust-sdk-go@v0.7.2","href":"/sdks/go/versions/0.7.2"},{"title":"Braintrust Go SDK","sidebarTitle":"v0.7.0","url":"https://pkg.go.dev/github.com/braintrustdata/braintrust-sdk-go@v0.7.0","href":"/sdks/go/versions/0.7.0"},{"title":"Braintrust Go SDK","sidebarTitle":"v0.6.1","url":"https://pkg.go.dev/github.com/braintrustdata/braintrust-sdk-go@v0.6.1","href":"/sdks/go/versions/0.6.1"},{"title":"Braintrust Go SDK","sidebarTitle":"v0.6.0","url":"https://pkg.go.dev/github.com/braintrustdata/braintrust-sdk-go@v0.6.0","href":"/sdks/go/versions/0.6.0"},{"title":"Braintrust Go SDK","sidebarTitle":"v0.5.0","url":"https://pkg.go.dev/github.com/braintrustdata/braintrust-sdk-go@v0.5.0","href":"/sdks/go/versions/0.5.0"},{"title":"Braintrust Go SDK","sidebarTitle":"v0.4.1","url":"https://pkg.go.dev/github.com/braintrustdata/braintrust-sdk-go@v0.4.1","href":"/sdks/go/versions/0.4.1"},{"title":"Braintrust Go SDK","sidebarTitle":"v0.4.0","url":"https://pkg.go.dev/github.com/braintrustdata/braintrust-sdk-go@v0.4.0","href":"/sdks/go/versions/0.4.0"},{"title":"Braintrust Go SDK","sidebarTitle":"v0.3.1","url":"https://pkg.go.dev/github.com/braintrustdata/braintrust-sdk-go@v0.3.1","href":"/sdks/go/versions/0.3.1"},{"title":"Braintrust Go SDK","sidebarTitle":"v0.3.0","url":"https://pkg.go.dev/github.com/braintrustdata/braintrust-sdk-go@v0.3.0","href":"/sdks/go/versions/0.3.0"},{"title":"Braintrust Go SDK","sidebarTitle":"v0.2.1","url":"https://pkg.go.dev/github.com/braintrustdata/braintrust-sdk-go@v0.2.1","href":"/sdks/go/versions/0.2.1"},{"title":"Braintrust Go SDK","sidebarTitle":"v0.2.0-beta.1","url":"https://pkg.go.dev/github.com/braintrustdata/braintrust-sdk-go@v0.2.0-beta.1","href":"/sdks/go/versions/0.2.0-beta.1"},{"title":"Braintrust Go SDK","sidebarTitle":"v0.1.2","url":"https://pkg.go.dev/github.com/braintrustdata/braintrust-sdk-go@v0.1.2","href":"/sdks/go/versions/0.1.2"},{"title":"Braintrust Go SDK","sidebarTitle":"v0.1.1","url":"https://pkg.go.dev/github.com/braintrustdata/braintrust-sdk-go@v0.1.1","href":"/sdks/go/versions/0.1.1"},{"title":"Braintrust Go SDK","sidebarTitle":"v0.1.1-beta.1","url":"https://pkg.go.dev/github.com/braintrustdata/braintrust-sdk-go@v0.1.1-beta.1","href":"/sdks/go/versions/0.1.1-beta.1"},{"title":"Braintrust Go SDK","sidebarTitle":"v0.1.0","url":"https://pkg.go.dev/github.com/braintrustdata/braintrust-sdk-go@v0.1.0","href":"/sdks/go/versions/0.1.0"},{"title":"Braintrust Go SDK","sidebarTitle":"v0.0.3","url":"https://pkg.go.dev/github.com/braintrustdata/braintrust-sdk-go@v0.0.3","href":"/sdks/go/versions/0.0.3"},{"title":"Braintrust Go SDK","sidebarTitle":"v0.0.2","url":"https://pkg.go.dev/github.com/braintrustdata/braintrust-sdk-go@v0.0.2","href":"/sdks/go/versions/0.0.2"},{"title":"Braintrust Go SDK","sidebarTitle":"v0.0.1","url":"https://pkg.go.dev/github.com/braintrustdata/braintrust-sdk-go@v0.0.1","href":"/sdks/go/versions/0.0.1"},{"title":"Braintrust Go SDK","sidebarTitle":"v0.0.1-beta.1","url":"https://pkg.go.dev/github.com/braintrustdata/braintrust-sdk-go@v0.0.1-beta.1","href":"/sdks/go/versions/0.0.1-beta.1"}]},{"group":"Migration guides","pages":[{"title":"Migrate from v0.3.x to v0.4.x","sidebarTitle":"v0.3.x to v0.4.x","href":"/sdks/go/migrations/v0-3-to-v0-4"}]},{"title":"Changelog","url":"https://github.com/braintrustdata/braintrust-sdk-go/releases","href":"/sdks/go/changelog"},{"title":"GitHub","url":"https://github.com/braintrustdata/braintrust-sdk-go","href":"/sdks/go/github"}]}]},{"dropdown":"Java","icon":"https://mintlify.s3.us-west-1.amazonaws.com/braintrust/images/sdk-icons/java.svg","pages":[{"title":"Java SDK quickstart","sidebarTitle":"Quickstart","href":"/sdks/java/quickstart"},{"group":"Use the SDK","icon":"code","pages":[{"title":"Install and instrument","href":"/sdks/java/install-and-instrument"},{"title":"Java SDK integrations","sidebarTitle":"SDK integrations","href":"/sdks/java/sdk-integrations"},{"title":"Troubleshooting","href":"/sdks/java/troubleshooting"}]},{"group":"Features","icon":"component","pages":[{"title":"Redact sensitive data","href":"/sdks/java/redact-sensitive-data"}]},{"group":"Reference","icon":"file-text","pages":[{"title":"API reference","href":"/sdks/java/api-reference"},{"group":"Versions","boost":0.5,"pages":[{"title":"0.3.26","url":"https://javadoc.io/doc/dev.braintrust/braintrust-sdk-java/0.3.26","href":"/sdks/java/versions/0.3.26"},{"title":"0.3.25","url":"https://javadoc.io/doc/dev.braintrust/braintrust-sdk-java/0.3.25","href":"/sdks/java/versions/0.3.25"},{"title":"0.3.24","url":"https://javadoc.io/doc/dev.braintrust/braintrust-sdk-java/0.3.24","href":"/sdks/java/versions/0.3.24"},{"title":"0.3.23","url":"https://javadoc.io/doc/dev.braintrust/braintrust-sdk-java/0.3.23","href":"/sdks/java/versions/0.3.23"},{"title":"0.3.22","url":"https://javadoc.io/doc/dev.braintrust/braintrust-sdk-java/0.3.22","href":"/sdks/java/versions/0.3.22"},{"title":"0.3.21","url":"https://javadoc.io/doc/dev.braintrust/braintrust-sdk-java/0.3.21","href":"/sdks/java/versions/0.3.21"},{"title":"0.3.20","url":"https://javadoc.io/doc/dev.braintrust/braintrust-sdk-java/0.3.20","href":"/sdks/java/versions/0.3.20"},{"title":"0.3.19","url":"https://javadoc.io/doc/dev.braintrust/braintrust-sdk-java/0.3.19","href":"/sdks/java/versions/0.3.19"},{"title":"0.3.18","url":"https://javadoc.io/doc/dev.braintrust/braintrust-sdk-java/0.3.18","href":"/sdks/java/versions/0.3.18"},{"title":"0.3.17","url":"https://javadoc.io/doc/dev.braintrust/braintrust-sdk-java/0.3.17","href":"/sdks/java/versions/0.3.17"},{"title":"0.3.16","url":"https://javadoc.io/doc/dev.braintrust/braintrust-sdk-java/0.3.16","href":"/sdks/java/versions/0.3.16"},{"title":"0.3.15","url":"https://javadoc.io/doc/dev.braintrust/braintrust-sdk-java/0.3.15","href":"/sdks/java/versions/0.3.15"},{"title":"0.3.14","url":"https://javadoc.io/doc/dev.braintrust/braintrust-sdk-java/0.3.14","href":"/sdks/java/versions/0.3.14"},{"title":"0.3.13","url":"https://javadoc.io/doc/dev.braintrust/braintrust-sdk-java/0.3.13","href":"/sdks/java/versions/0.3.13"},{"title":"0.3.12","url":"https://javadoc.io/doc/dev.braintrust/braintrust-sdk-java/0.3.12","href":"/sdks/java/versions/0.3.12"},{"title":"0.3.11","url":"https://javadoc.io/doc/dev.braintrust/braintrust-sdk-java/0.3.11","href":"/sdks/java/versions/0.3.11"},{"title":"0.3.10","url":"https://javadoc.io/doc/dev.braintrust/braintrust-sdk-java/0.3.10","href":"/sdks/java/versions/0.3.10"},{"title":"0.3.9","url":"https://javadoc.io/doc/dev.braintrust/braintrust-sdk-java/0.3.9","href":"/sdks/java/versions/0.3.9"},{"title":"0.3.8","url":"https://javadoc.io/doc/dev.braintrust/braintrust-sdk-java/0.3.8","href":"/sdks/java/versions/0.3.8"},{"title":"0.3.7","url":"https://javadoc.io/doc/dev.braintrust/braintrust-sdk-java/0.3.7","href":"/sdks/java/versions/0.3.7"},{"title":"0.3.6","url":"https://javadoc.io/doc/dev.braintrust/braintrust-sdk-java/0.3.6","href":"/sdks/java/versions/0.3.6"},{"title":"0.3.5","url":"https://javadoc.io/doc/dev.braintrust/braintrust-sdk-java/0.3.5","href":"/sdks/java/versions/0.3.5"},{"title":"0.3.4","url":"https://javadoc.io/doc/dev.braintrust/braintrust-sdk-java/0.3.4","href":"/sdks/java/versions/0.3.4"},{"title":"0.3.3","url":"https://javadoc.io/doc/dev.braintrust/braintrust-sdk-java/0.3.3","href":"/sdks/java/versions/0.3.3"},{"title":"0.3.2","url":"https://javadoc.io/doc/dev.braintrust/braintrust-sdk-java/0.3.2","href":"/sdks/java/versions/0.3.2"},{"title":"0.3.1","url":"https://javadoc.io/doc/dev.braintrust/braintrust-sdk-java/0.3.1","href":"/sdks/java/versions/0.3.1"},{"title":"0.3.0","url":"https://javadoc.io/doc/dev.braintrust/braintrust-sdk-java/0.3.0","href":"/sdks/java/versions/0.3.0"},{"title":"0.2.11","url":"https://javadoc.io/doc/dev.braintrust/braintrust-sdk-java/0.2.11","href":"/sdks/java/versions/0.2.11"},{"title":"0.2.10","url":"https://javadoc.io/doc/dev.braintrust/braintrust-sdk-java/0.2.10","href":"/sdks/java/versions/0.2.10"},{"title":"0.2.9","url":"https://javadoc.io/doc/dev.braintrust/braintrust-sdk-java/0.2.9","href":"/sdks/java/versions/0.2.9"},{"title":"0.2.8","url":"https://javadoc.io/doc/dev.braintrust/braintrust-sdk-java/0.2.8","href":"/sdks/java/versions/0.2.8"},{"title":"0.2.7","url":"https://javadoc.io/doc/dev.braintrust/braintrust-sdk-java/0.2.7","href":"/sdks/java/versions/0.2.7"},{"title":"0.2.6","url":"https://javadoc.io/doc/dev.braintrust/braintrust-sdk-java/0.2.6","href":"/sdks/java/versions/0.2.6"},{"title":"0.2.5","url":"https://javadoc.io/doc/dev.braintrust/braintrust-sdk-java/0.2.5","href":"/sdks/java/versions/0.2.5"},{"title":"0.2.4","url":"https://javadoc.io/doc/dev.braintrust/braintrust-sdk-java/0.2.4","href":"/sdks/java/versions/0.2.4"},{"title":"0.2.3","url":"https://javadoc.io/doc/dev.braintrust/braintrust-sdk-java/0.2.3","href":"/sdks/java/versions/0.2.3"},{"title":"0.2.2","url":"https://javadoc.io/doc/dev.braintrust/braintrust-sdk-java/0.2.2","href":"/sdks/java/versions/0.2.2"},{"title":"0.2.1","url":"https://javadoc.io/doc/dev.braintrust/braintrust-sdk-java/0.2.1","href":"/sdks/java/versions/0.2.1"},{"title":"0.2.0","url":"https://javadoc.io/doc/dev.braintrust/braintrust-sdk-java/0.2.0","href":"/sdks/java/versions/0.2.0"},{"title":"0.1.3","url":"https://javadoc.io/doc/dev.braintrust/braintrust-sdk-java/0.1.3","href":"/sdks/java/versions/0.1.3"},{"title":"0.1.2","url":"https://javadoc.io/doc/dev.braintrust/braintrust-sdk-java/0.1.2","href":"/sdks/java/versions/0.1.2"},{"title":"0.1.1","url":"https://javadoc.io/doc/dev.braintrust/braintrust-sdk-java/0.1.1","href":"/sdks/java/versions/0.1.1"},{"title":"0.1.0","url":"https://javadoc.io/doc/dev.braintrust/braintrust-sdk-java/0.1.0","href":"/sdks/java/versions/0.1.0"},{"title":"0.0.2","url":"https://javadoc.io/doc/dev.braintrust/braintrust-sdk-java/0.0.2","href":"/sdks/java/versions/0.0.2"},{"title":"0.0.1","url":"https://javadoc.io/doc/dev.braintrust/braintrust-sdk-java/0.0.1","href":"/sdks/java/versions/0.0.1"}]},{"title":"Changelog","url":"https://github.com/braintrustdata/braintrust-sdk-java/releases","href":"/sdks/java/changelog"},{"title":"GitHub","url":"https://github.com/braintrustdata/braintrust-sdk-java","href":"/sdks/java/github"}]}]},{"dropdown":"Ruby","icon":"https://mintlify.s3.us-west-1.amazonaws.com/braintrust/images/sdk-icons/ruby.svg","pages":[{"title":"Ruby SDK quickstart","sidebarTitle":"Quickstart","href":"/sdks/ruby/quickstart"},{"group":"Use the SDK","icon":"code","pages":[{"title":"Install and instrument","href":"/sdks/ruby/install-and-instrument"},{"title":"Ruby SDK integrations","sidebarTitle":"SDK integrations","href":"/sdks/ruby/sdk-integrations"},{"title":"Troubleshooting","href":"/sdks/ruby/troubleshooting"}]},{"group":"Features","icon":"component","pages":[{"title":"Redact sensitive data","href":"/sdks/ruby/redact-sensitive-data"}]},{"group":"Reference","icon":"file-text","pages":[{"title":"API reference","href":"/sdks/ruby/api-reference"},{"group":"Versions","boost":0.5,"pages":[{"title":"0.6.0","url":"https://gemdocs.org/gems/braintrust/0.6.0/","href":"/sdks/ruby/versions/0.6.0"},{"title":"0.5.0","url":"https://gemdocs.org/gems/braintrust/0.5.0/","href":"/sdks/ruby/versions/0.5.0"},{"title":"0.4.2","url":"https://gemdocs.org/gems/braintrust/0.4.2/","href":"/sdks/ruby/versions/0.4.2"},{"title":"0.4.1","url":"https://gemdocs.org/gems/braintrust/0.4.1/","href":"/sdks/ruby/versions/0.4.1"},{"title":"0.4.0","url":"https://gemdocs.org/gems/braintrust/0.4.0/","href":"/sdks/ruby/versions/0.4.0"},{"title":"0.3.2","url":"https://gemdocs.org/gems/braintrust/0.3.2/","href":"/sdks/ruby/versions/0.3.2"},{"title":"0.3.1","url":"https://gemdocs.org/gems/braintrust/0.3.1/","href":"/sdks/ruby/versions/0.3.1"},{"title":"0.3.0","url":"https://gemdocs.org/gems/braintrust/0.3.0/","href":"/sdks/ruby/versions/0.3.0"},{"title":"0.2.1","url":"https://gemdocs.org/gems/braintrust/0.2.1/","href":"/sdks/ruby/versions/0.2.1"},{"title":"0.2.0","url":"https://gemdocs.org/gems/braintrust/0.2.0/","href":"/sdks/ruby/versions/0.2.0"},{"title":"0.1.4","url":"https://gemdocs.org/gems/braintrust/0.1.4/","href":"/sdks/ruby/versions/0.1.4"},{"title":"0.1.3","url":"https://gemdocs.org/gems/braintrust/0.1.3/","href":"/sdks/ruby/versions/0.1.3"},{"title":"0.1.2","url":"https://gemdocs.org/gems/braintrust/0.1.2/","href":"/sdks/ruby/versions/0.1.2"},{"title":"0.1.1","url":"https://gemdocs.org/gems/braintrust/0.1.1/","href":"/sdks/ruby/versions/0.1.1"},{"title":"0.1.0","url":"https://gemdocs.org/gems/braintrust/0.1.0/","href":"/sdks/ruby/versions/0.1.0"},{"title":"0.0.12","url":"https://gemdocs.org/gems/braintrust/0.0.12/","href":"/sdks/ruby/versions/0.0.12"},{"title":"0.0.11","url":"https://gemdocs.org/gems/braintrust/0.0.11/","href":"/sdks/ruby/versions/0.0.11"},{"title":"0.0.10","url":"https://gemdocs.org/gems/braintrust/0.0.10/","href":"/sdks/ruby/versions/0.0.10"},{"title":"0.0.9","url":"https://gemdocs.org/gems/braintrust/0.0.9/","href":"/sdks/ruby/versions/0.0.9"},{"title":"0.0.8","url":"https://gemdocs.org/gems/braintrust/0.0.8/","href":"/sdks/ruby/versions/0.0.8"},{"title":"0.0.7","url":"https://gemdocs.org/gems/braintrust/0.0.7/","href":"/sdks/ruby/versions/0.0.7"},{"title":"0.0.6","url":"https://gemdocs.org/gems/braintrust/0.0.6/","href":"/sdks/ruby/versions/0.0.6"},{"title":"0.0.5","url":"https://gemdocs.org/gems/braintrust/0.0.5/","href":"/sdks/ruby/versions/0.0.5"},{"title":"0.0.4","url":"https://gemdocs.org/gems/braintrust/0.0.4/","href":"/sdks/ruby/versions/0.0.4"},{"title":"0.0.3","url":"https://gemdocs.org/gems/braintrust/0.0.3/","href":"/sdks/ruby/versions/0.0.3"},{"title":"0.0.2","url":"https://gemdocs.org/gems/braintrust/0.0.2/","href":"/sdks/ruby/versions/0.0.2"},{"title":"0.0.1","url":"https://gemdocs.org/gems/braintrust/0.0.1/","href":"/sdks/ruby/versions/0.0.1"}]},{"title":"Changelog","url":"https://github.com/braintrustdata/braintrust-sdk-ruby/releases","href":"/sdks/ruby/changelog"},{"title":"GitHub","url":"https://github.com/braintrustdata/braintrust-sdk-ruby","href":"/sdks/ruby/github"}]}]},{"dropdown":"C#","icon":"https://mintlify.s3.us-west-1.amazonaws.com/braintrust/images/sdk-icons/csharp.svg","pages":[{"title":"C# SDK quickstart","sidebarTitle":"Quickstart","href":"/sdks/csharp/quickstart"},{"group":"Use the SDK","icon":"code","pages":[{"title":"Install and instrument","href":"/sdks/csharp/install-and-instrument"},{"title":"C# SDK integrations","sidebarTitle":"SDK integrations","href":"/sdks/csharp/sdk-integrations"},{"title":"Troubleshooting","href":"/sdks/csharp/troubleshooting"}]},{"group":"Reference","icon":"file-text","pages":[{"title":"API reference","href":"/sdks/csharp/api-reference"},{"title":"Changelog","url":"https://github.com/braintrustdata/braintrust-sdk-dotnet/releases","href":"/sdks/csharp/changelog"},{"title":"GitHub","url":"https://github.com/braintrustdata/braintrust-sdk-dotnet","href":"/sdks/csharp/github"}]}]}]},{"tab":"Reference","icon":"code","pages":[{"title":"Reference","href":"/reference"}]},{"tab":"Cookbook","icon":"notebook","pages":[{"title":"Cookbook","href":"/cookbook"}]},{"tab":"Troubleshooting","icon":"wrench","pages":[{"title":"Troubleshooting","href":"/kb"}]},{"tab":"Changelog","icon":"mailbox","pages":[{"title":"Changelog","href":"/changelog"}]}]},"basePath":"","title":"Upgrade your deployment - Braintrust","buildId":"dpl_G9nrg4qeJSZtah1Ziwbc2n6WkLch","deploymentId":"dpl_G9nrg4qeJSZtah1Ziwbc2n6WkLch","dynamics":[],"chunks":[]}