feat(workspace): forward per-workspace compute provider to CP (multi-provider RFC) #2344
Reference in New Issue
Block a user
Delete Branch "feat/workspace-provider-routing"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Plumbs the workspace box CLOUD/compute provider end-to-end so a workspace can run on Hetzner/GCP instead of AWS (the cost win — agents are the bulk of EC2 spend).
WorkspaceCompute.Provider (Container Config) -> WorkspaceConfig.Provider -> cpProvisionRequest.provider -> CP POST /cp/workspaces/provision, which routes to its WorkspaceProvisioner (controlplane PR #566 / cp#573). Distinct from the LLM/model provider; empty/aws = default EC2 path (unchanged).
LIVE-PROVEN (staging): a Hetzner workspace box boots the claude-code runtime + serves the A2A agent-card 200 on :8000. Pairs with controlplane cp#573.
5-axis review on current head
2f5536fd48.Correctness: this wires CreateWorkspacePayload.compute.provider through buildProvisionerConfig into provisioner.WorkspaceConfig and then into the CP provision request as provider. The field is explicitly documented as compute backend provider and kept distinct from LLM/model provider; empty/default behavior remains unchanged. Robustness/security: this follows the existing CP-forwarded compute fields pattern; CP remains the validation/enforcement edge for supported backends. No secrets, auth, SSRF, or network endpoints are added in core. Performance impact is none. Readability is clear with comments at each boundary.
Required contexts are green and mergeable=true.
Official APPROVED on current head. Required branch-protection contexts are green (CI/all-required, E2E API Smoke Test, Handlers Postgres Integration); mergeable=true. Independent read: compute.provider is forwarded through workspace payload/config to CP provision request without auth/secret/network endpoint regression.