fused-cli is the config-as-code and operations CLI for the
Fused integration gateway. Use it to connect to an
Engine, import APIs, generate SDKs, and deploy MCP servers.
curl -sSL https://raw.githubusercontent.com/Usefused/cli/main/install.sh | bashThe script asks before installing to /usr/local/bin. To inspect it first:
curl -sSL -o install.sh https://raw.githubusercontent.com/Usefused/cli/main/install.sh
less install.sh
bash install.shFor CI or a specific release:
curl -sSL https://raw.githubusercontent.com/Usefused/cli/main/install.sh | ASSUME_YES=1 bash
curl -sSL https://raw.githubusercontent.com/Usefused/cli/main/install.sh | VERSION=v1.0.0 ASSUME_YES=1 bashirm https://raw.githubusercontent.com/Usefused/cli/main/install.ps1 | iexInstall a specific release:
$env:VERSION="v1.0.0"; irm https://raw.githubusercontent.com/Usefused/cli/main/install.ps1 | iexThe installer writes to %LOCALAPPDATA%\Programs\fused-cli and adds it to the
user PATH.
go install github.com/Usefused/cli@latestAlternatively, download the archive for your platform from
Releases and place fused-cli on
your PATH.
fused-cli --engine-url http://localhost:8081 login
fused-cli whoami
fused-cli workspace services listAutomation can use --key, FUSED_API_KEY, or FUSED_LICENSE_KEY instead of
browser login. See CLI setup and operation for configuration
precedence, headless login, credentials, teams, and automation-safe execution.
The CLI ships task-specific skills that teach coding agents how to discover services, inspect authentication, prepare reviewable SDK/MCP config, and use plan/apply safely.
# See the bundled skills.
fused-cli skill list
# Install all skills for an agent.
fused-cli skill install --for codex
# Or install one skill only.
fused-cli skill install --for codex --skill fused-sdkSupported targets are codex, claude, antigravity, cursor, and
windsurf. Use --scope project for repository-local installation or
--scope user where the target supports it:
fused-cli skill install --for codex --scope projectInstallation writes the files into the selected agent's normal skill or rules directory. Release installs use the versioned skill snapshot shipped beside the binary, so this also works offline. The agent discovers and loads the relevant skill when a task matches; the command does not inject new instructions into an already-running context.
Plan the import first, review it, then apply the exact plan:
fused-cli import plan ./openapi.json \
--name "Internal Billing API" \
--slug billing-api
fused-cli import applyFor a webhook-only contract that has its own source info.version, attach it
to an exact existing service version without combining specifications or
rewriting provenance:
fused-cli import plan ./webhooks.openapi.yaml \
--name "Internal Billing API" \
--slug billing-api \
--target webhooks \
--destination-version 2026-08-19
fused-cli import applyFor a remote specification:
fused-cli import plan \
--url https://developer.example.com/openapi.json \
--name "Example API" \
--slug example-api
fused-cli import applyWhen you have a provider URL rather than a known specification, start one reviewed discovery session. Fused tries a machine-readable contract first, then performs a bounded documentation crawl when necessary. In an interactive terminal, the command opens the Engine's browser review when the draft is ready and waits for you to finish that review:
fused-cli import discover \
--url https://docs.example.com/api \
--name "Example API" \
--slug example-api
# Resume the same authoritative session after interruption.
fused-cli import discover --session <session-id>
fused-cli import applyPass --no-browser to print the review URL and wait without opening it. For
flag-driven automation, use global --no-input with --all or repeat
--select METHOD:/path, and either repeat --accept-proposal <id> or pass
--reject-enrichment. Automation does not open or wait for browser review.
Discovery never creates or activates the service. When review produces a plan,
the CLI atomically writes .fused/.state/import.plan.json, replacing the
previous import-plan receipt at that path. Use --receipt-out <path> to choose
a different receipt; an existing file at that path is replaced the same way.
Run the separate fused-cli import apply command to commit exactly that
reviewed plan; with no --receipt, it consumes the default receipt.
Fused detects the supported source format. See Importing services for reviewed discovery, GraphQL, AsyncAPI, Postman, WSDL, Google Discovery, overlays, strict mode, and diagnostics.
Start from the service you want to use. The CLI defaults its version, lets you accept all operations with Enter or search a narrower set, enables the service when needed, and drives the existing plan/apply boundaries:
fused-cli init support-sdk --sdk --service linear
fused-cli init support-api --api --service linear
fused-cli init support-agent --mcp \
--description "Read and update support issues" \
--service linearSDK mode downloads a typed package, API mode prints a central Engine REST
request template without generating a package, and MCP mode reports the hosted
server connection details. Omit the mode in a terminal to choose it. For
automation, pass --no-input and one explicit mode. SDK, API, and MCP modes
also require --operation or --select-all for every service.
Pass --no-apply to plan without applying. Fused writes the app config and any
required workspace service additions, saves every plan receipt whose
dependencies are already active, applies no desired-state changes, and starts no
generation or download job. When a service still needs activation, its
workspace receipt is saved and app planning waits until that receipt is
applied. The output prints the exact remaining commands; SDK completion
includes sdk apply --download.
Create an inbound webhook registration with --webhook. It requires services,
but no operation selection or app version:
fused-cli init alerts --webhook --service github \
--secret 'github=${bucket.default.secret.github_signing}'This writes .fused/webhooks/alerts.yaml, enables missing workspace services,
then plans and applies the webhook registration and prints its ingress URL.
Omit --secret only when the provider does not require a signing secret.
--secret accepts bucket references, never literal credentials. Use --no-apply
to retain validated desired state and available receipts for later apply.
To receive events in an SDK, set webhook_attachment: alerts and explicitly
select that SDK's webhook events. To update the registration later, edit its
file and use webhook plan / webhook apply.
To extend an existing app without creating another file, use extend. It reads
the existing YAML to infer SDK, API, or MCP mode. A real change advances a
stable SemVer version to its next minor, while an idempotent extension keeps the
current version. Terminal confirmation shows the inferred successor, and
--no-input uses the same deterministic result:
fused-cli extend support-sdk \
--service slack --select-all slack --no-inputThe YAML path and stable app family stay the same; apply creates the new
immutable version. Pass --version to override inference. Prerelease and
non-SemVer versions require an explicit successor.
Every initialized app remains ordinary config as code. Edit its YAML, then use the explicit lifecycle when you want separate reviews or structured output:
apiVersion: fused/v1
kind: sdk
name: support-sdk
version: "1.0.0"
bucket: default
services:
linear:
version: "v1"
operations: [getIssue, updateIssue]fused-cli sdk plan --json -f .fused/sdks/support-sdk.yaml
fused-cli sdk apply --json -f .fused/sdks/support-sdk.yamlStandalone validation remains available for offline checks, but plan already validates before contacting the Engine.
- CLI setup and operation — authentication, automation, credentials, buckets, teams, and access.
- Importing services — supported sources, diagnostics, overlays, and execution compatibility.
- Config as code — workspace/SDK YAML, plan/apply, sync, and execution policies.
- Command reference — every command and flag.
Run fused-cli --help for command discovery. fused-cli --readme prints this
onboarding guide without appending the command reference.