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, so credentials, payloads, and execution records never leave it. The rest of this page.
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.