fused-cli command talks to an Engine. If you do not have one yet, nothing else on this site will work — so start here.
There are two ways to get one.
Fused-hosted
Choose a hosted Engine when you create your account and Fused provisions an isolated one for you. You get a URL — skip to pointing the CLI at it.
Self-hosted
Run the Engine in your own infrastructure and own its credential storage, execution, and records. You can also opt into Managed services for provider authentication and event brokering. The rest of this page covers deployment.
What you need first
- PostgreSQL 16+. The Engine creates and upgrades its own tables on startup, through one standard connection string. There is no provider-specific branching.
- A Fused license key. Signing up issues one; choose the license-only path and the key is yours to deploy with. An onboarding contact can also provide it.
Install the binary
latest/download for download/<tag> using a tag from the releases page.
Then start it:
:8081, the SDK gRPC listener on :50051, and — since no external NATS is configured — an embedded NATS server on :4222.
Those first two are different audiences.
fused-cli talks to :8081; a generated SDK talks gRPC to :50051. Both get called an “Engine URL”, so it is worth exporting FUSED_ENGINE_URL and FUSED_ENGINE_GRPC_URL as separate values from the start.Or run the container
Two image variants are published:
Both are moving tags. Every release is also published under its own version tag —
:<tag> and :<tag>-headless — and production deployments should pin one.
All three environment variables are required. A container started with only the license key will not come up.
unauthorized, the package may not be public yet. Authenticate with a GitHub token carrying read:packages:
The encryption key
FUSED_ENCRYPTION_KEY is a 32-byte AES key encrypting everything at rest — webhook signing secrets, auth credentials in Engine-local storage, and connect session state.
Configuration and precedence
Settings come from flags, environment variables, orengine.yaml (--config, defaulting to engine.yaml). Flags win over environment variables, which win over the config file.
--license-key, then FUSED_LICENSE_KEY in a local .env, then engine.license_key in engine.yaml, then an inherited FUSED_LICENSE_KEY process variable. FUSED_API_KEY is never a license source.
Prefer a deployment-managed .env or secret-backed config in production. Do not commit production keys to engine.yaml.
Common overrides:
Confirm it is up
Point the CLI at it
login opens the Engine’s sign-in page — managed Fused Auth, or an existing Engine API key. The credential is generated locally and the Engine stores only its hash, so the browser never sees it. Use --no-browser on a headless machine to print the URL and approve from another device.
To save the URL rather than passing it each time:
fused-cli config list shows the keys you can set.
whoami shows which credential actually won the precedence chain — worth checking when a saved login, FUSED_API_KEY, and FUSED_LICENSE_KEY might all be present.
Before production
- Pin a version tag.
latestmoves; a deploy that reruns should not quietly change Engine underneath you. - Set a real encryption key. Not the committed example.
- External NATS for replicas. The embedded server is single-instance. Horizontal replication needs
NATS_URLwithout embedded credentials, plus exactly one ofNATS_CREDS_FILE,NATS_NKEY_SEED_FILE,NATS_TOKEN, or pairedNATS_USERNAME/NATS_PASSWORD. Mount credential and TLS files read-only; never bake them into an image. - Check your license terms. The Engine is source-available under PolyForm Noncommercial 1.0.0. Commercial or production use needs a separate written agreement with Fused in addition to a valid key.
That last one is worth starting early. If you are deploying this for a company, register your interest — production licensing, SSO, and support are all settled in the same conversation, and it is a shorter one before you have shipped than after.
Quickstart
With an Engine reachable, enable a service and ship an SDK.