feat(dbos): add opt-in DBOS Conductor support#3408
Merged
Conversation
Wire DBOS_CONDUCTOR_KEY/DBOS_CONDUCTOR_URL into DBOS.launch() so the SDK can dial out to a Conductor service for workflow recovery, observability, and retention. Disconnects don't affect the request path. Helm: add a dbosConductor block to the studio chart with both inline key and existingSecret support, plus validations for misconfigured combinations. Disabled by default. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Contributor
🧪 BenchmarkShould we run the Virtual MCP strategy benchmark for this PR? React with 👍 to run the benchmark.
Benchmark will run on the next push after you react. |
Contributor
Release OptionsSuggested: Minor ( React with an emoji to override the release type:
Current version:
|
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
DBOS_CONDUCTOR_KEY/DBOS_CONDUCTOR_URLenv vars intoDBOS.launch()inapps/mesh/src/index.ts. When unset, behavior is unchanged.dbosConductorblock todeploy/helm/studio/: opt-in (enabled: falseby default), supports either an inlinekey(written into the chart-managed Secret) or a pre-existing Secret viaexistingSecret/existingSecretKey.secret.secretNameset withoutdbosConductor.existingSecret— since the chart-managed Secret is skipped in that case).Context
DBOS Conductor is an out-of-band management service that dials over WebSocket to provide workflow recovery across executors, observability dashboards, and retention. Conductor is not on the request path — disconnects don't affect serving traffic; the SDK reconnects in the background.
The smallest viable deployment shape is "managed Conductor": no extra K8s manifests needed, just an outbound
wss://connection and an API key from DBOS Cloud. This PR is exactly that.A self-hosted Conductor deployment (Conductor + Console + their own Postgres) is a much larger lift and is intentionally not included here. If/when we want it,
dbosConductor.urlalready accepts a custom endpoint.Test plan
helm templatewith default values: noDBOS_CONDUCTOR_*env vars rendered, no behavior change.helm templatewithdbosConductor.enabled=true --set dbosConductor.key=…:DBOS_CONDUCTOR_KEYwritten into chart-managed Secret and referenced viasecretKeyRefin the Deployment.helm templatewithdbosConductor.existingSecret=…:DBOS_CONDUCTOR_KEYnot written into chart-managed Secret; Deployment references the external Secret.helm templatevalidation failures: enabled without key, both key+existingSecret,secret.secretNameset withoutexistingSecret— all fail with clear messages.tsc --noEmitclean onapps/mesh.enabled: trueon any environment.🤖 Generated with Claude Code
Summary by cubic
Add opt-in DBOS Conductor integration. When enabled, the app dials Conductor for workflow recovery, observability, and retention; default behavior is unchanged.
New Features
DBOS_CONDUCTOR_KEYand optionalDBOS_CONDUCTOR_URLintoDBOS.launch()(only passed when a key is set).dbosConductorblock (enabled=false by default) withkey,url,existingSecret, andexistingSecretKey.DBOS_CONDUCTOR_KEY/URL; chart-managed Secret stores the key when provided inline.secret.secretNamewithoutdbosConductor.existingSecret).Migration
dbosConductor.enabled=trueand eitherdbosConductor.key=<api-key>ordbosConductor.existingSecret=<name>.dbosConductor.urlto override the SDK’s default conductor URL.Written for commit 5384b2e. Summary will update on new commits. Review in cubic