Skip to main content
Fused keeps the common path short without removing any control boundary. Guided commands compose the same plan and apply functions used by the explicit workflow, and Fused still owns validation, permissions, and immutable state.

Choose the right level of control

Terminal commands prompt when a decision is needed. Use --no-input for unattended runs; connect then requires an exact method selection when several methods match.

Plan and apply separately

SDK, REST, MCP, and Unified App configs all use app plan, app apply, and app validate. Select the intended file with -f (--file). Without it, the CLI discovers configs under .fused/: multiple app kinds produce multiple app types found, while multiple configs of the same app kind are selected together. SDK and REST delivery share kind: sdk. An explicit file keeps the workflow scoped to the app you are changing. Use the explicit SDK lifecycle when you are editing an existing config, need an independent approval boundary, or want to retry package transfer separately:
1

Preview

Plan validates the local config before contacting Fused. If the exact selected bucket is missing a credential, a terminal plan can securely offer to write it and retry once.
2

Apply

Apply commits only the config content and Fused recorded by the receipt.
3

Download

Keeping transfer separate lets you retry a failed download without replaying apply.
The same lifecycle applies to other config kinds:

Stop after planning

Add --no-apply to the guided init command when you want it to resolve the service version and operations, write validated desired state, and retain the available plan receipts without applying anything:
The command ends by printing the exact commands needed to finish. If Linear was already active, the SDK plan receipt is ready and the remaining command is:
If Linear still needs workspace activation, Fused cannot bind an SDK plan to that runtime snapshot yet. Init saves the workspace plan receipt and prints the dependency order instead:
The same output uses app apply without --download for a direct API and app apply for an MCP server. If a saved receipt is stale when you return, rerun its plan command before apply. Only terminal SDK planning offers optional credential setup. Workspace, MCP, webhook, and import planning do not mutate credentials; missing SDK or MCP values are readiness warnings rather than plan or apply failures.

Review credentials during init

Interactive init adds a credential review before publishing SDK, MCP, and combined Apps. This review is separate from standalone app plan behavior. Setup and recheck return to the menu while credentials remain missing. Cancellation does not undo service activation or credential writes already completed. With --no-input or CI=true, init reports readiness warnings and continues without prompting or storing credentials.

Make automation explicit

Use --no-input for every unattended command. Commands that require explicit input fail with guidance instead of waiting for terminal input. Missing provider credentials during app init or planning remain readiness warnings; an affected runtime call fails until those credentials are configured. connect requires values when its selected method is not already configured. Add --json when the command exposes structured output. For App initialization, bare services select all operations automatically, while inline lists select only the named operations. The same selectors work in terminals and automation. No method flag creates the combined App:
Use --service 'linear;slack' instead when the App needs all operations from both services. Semicolons separate services; commas separate operations within one service, as in --service 'linear=issueUpdate;slack=chatPostMessage,conversationsList'. Keep the value quoted so the shell preserves semicolons. Add --sdk, --rest, or --mcp only when you want one delivery method. Top-level extend infers the app mode from the existing YAML and updates that same file; no parallel config is created. A real change to a stable SemVer version advances to the next minor version deterministically, including under --no-input:
For example, 1.0.0 becomes 1.1.0. A terminal includes the inferred successor in its combined confirmation. An idempotent extension keeps its current version. Pass --version to override the inference; prerelease and non-SemVer identities always require an explicit successor. An unattended MCP init also requires an authored description:
Replace <auth-name> with the service’s exact authentication scheme from fused-cli service show --registry linear --json. connect accepts one quoted, comma-separated assignment argument; the shell expands environment variables before invocation. --no-input disables the picker and value prompts. See credential setup for paired methods and selection rules. Planning reports missing entries in structured credential_readiness metadata and continues. If an affected operation is called before setup, execution stops before contacting the provider with bucket_credentials_missing and the exact safe connect command.

Create and extend apps

Use the top-level creation command for SDK, REST API, and MCP onboarding. Use extend to add selections to an existing config.
Manage deployed apps through fused-cli app. Config kind and selected app identity determine the supported capabilities. For discovery, make both choices explicit as well:

Use offline validation deliberately

Plan already validates the local config before its first Fused request. Run standalone validation only when the check must stay offline:

Keep and move receipts deliberately

A receipt binds a plan to the exact config hash and normalized Fused URL. Apply refuses a stale file, a receipt without Fused identity, or a receipt created for another Fused deployment. Use a direct plan ID only when it came from the exact current config and Fused. Re-plan after the config or target Fused changes.

Recover without guessing

  • A workspace activation saves executable contract data without SDK generation input. A generated app plan requests that input and attaches it only when its exact saved runtime contract and source revision still match Registry. If generated init (including the default combined App) receives generation_contract_pin_unavailable, it first resolves every selected active workspace version. It then prints Refreshing immutable SDK generation snapshot for <service>@<version>... as it refreshes each exact snapshot and retries the unchanged plan once. --no-input uses the same deterministic path without prompting. The CLI never derives a pin locally, substitutes the runtime contract hash, selects a newer version, or retries twice. REST-only mode, MCP-only mode, ordinary app plan, and unrelated failures do not refresh snapshots.
  • If exact resolution or refresh fails, init does not retry the plan or create the app config. If the one retry fails, the error reports every refresh that already completed. A repeated missing-pin response directs you to Fused and Registry logs or another enabled version. A workspace activation may already be applied under its separate receipt. Changing credentials or operation selection does not repair this failure.
  • If SDK credential remediation is declined or unavailable, store the credential in the selected bucket and rerun app plan.
  • If package transfer fails after a successful SDK apply, rerun app download, not apply.
  • If import apply times out or loses its response, run fused-cli import status <operation-id> with the receipt’s plan ID. Do not replay the mutation while its commit state is unknown.
  • If a scoped workspace activation partially succeeds, use the exact ID-pinned recovery command printed by the CLI.
For explicit workspace maintenance, run:
This advanced command refreshes only a bounded batch of activated versions whose runtime contract snapshot is missing or unpinned. It reacquires each exact immutable contract from Registry. Use it when the saved runtime contract has changed and SDK planning cannot attach a generation contract to that earlier snapshot. It does not manufacture a generation pin, float to another version, or run automatically as a workspace-wide fallback.

Build an SDK

Return to the guided creation path.

Enable a service

Activate one service without mirroring the full workspace.