Author the config
.fused/sdks/support-sdk.yaml:
fused-cli workspace services list -q <slug> — being visible in the Registry is not the same as being enabled here.
operations and select_all: true are alternatives. Exactly one is required per service, never both and never neither.
init fills in the routing for you
Some provider hosts are templated —https://api-{app_id}.sendbird.com needs an app_id before it can be called. init spots those and writes the injection itself:
Plan, apply, download
1
Validate the config
2
Preview
3
Generate
Skip the package
Some SDKs are never imported. The product calls them over REST instead, and a generated package is dead weight. Setgenerate: false and apply publishes the version without building one:
POST /v1/apps/{app_id}/executions, still describable with fused-cli sdk openapi. Only the download is gone: sdk apply --json reports generation.status: "skipped", and --download is refused before anything is applied.
Flipping the field edits the file, which moves the source hash, so switching between the two needs a version bump like any other scope change.
Point the client at the Engine
The generated client takesgrpcUrl — grpc_url in Python. The name is the instruction: it wants the Engine’s gRPC address, not the HTTP one you give the CLI.
grpcUrl/grpc_urlpassed to the constructorFUSED_ENGINE_GRPC_URLFUSED_ENGINE_URLhttp://127.0.0.1:50051
FusedSDK instance opens one gRPC channel that every service on it shares, so there is no per-service connection cost.
What is in the package
Alongside the typed client, generation writes two files from your actual selections:
Both are derived from the generated source and validated against it, so the methods they demonstrate exist. Neither is a substitute for this site — they describe your package, not the platform.
Flags
sdk init
Creating never replaces an existing file.
--extend is additive and idempotent — re-running it reports unchanged rather than duplicating a service.
sdk plan
--interactive is incompatible with --json, --no-input, and CI=true. It never creates or substitutes a bucket.
sdk apply
For pipelines, prefer separate apply and download steps so a failed transfer can be retried without replaying the apply.
Adjust the selection
sdk operation add accepts --interactive to pick from a list, and --apply (or --download, which implies it) to push the change straight through.
Choosing auth
auth.type picks a Registry-declared scheme — basic, bearer, api_key, oauth, oidc, or mtls — and auth.name disambiguates two schemes of the same type.
connect.scopes is a ceiling: an application can request fewer scopes per user, never more.
The operation’s imported security requirements are authoritative, and they are an ordered OR of ANDs: alternatives are OR, schemes within one alternative are AND, and an empty alternative permits anonymous execution.
Where a service declares several named schemes of one type, carry both the type and the exact name. Never rely on declaration order.
Credentials themselves never appear in this file. They resolve from the bucket at generation and dispatch time.
Store the credentials
A plan that reports
bucket_credentials_missing is telling you the bucket is not ready yet.