Deployment Modes

Pick from three deployment modes, Standalone, Daemon, or Cloud, sharing the same guard() / createRun() API. Switching modes is config, not code.

Choosing a mode

StandaloneDaemonCloud
SetupNothingnpx fuze-ai daemonFUZE_API_KEY
Protection (guard, budget, loop detection)YesYesYes
Audit trailJSONL fileSQLite (hash-chained)Supabase (cloud)
DashboardNoNoapp.fuze-ai.tech
Remote tool configNoVia API key (hybrid)Yes
Cross-run analyticsNoSQLiteYes
Kill switchNoVia daemon REST APIYes (dashboard)
CostFreeFreePaid

Use Standalone when you're developing locally, running in CI, or don't need persistent storage. Traces write to fuze-traces.jsonl.

Use Daemon when you need persistent cross-run storage, on-prem data (nothing leaves the machine), or air-gapped deployments. Add FUZE_API_KEY to get the daemon syncing to cloud as well.

Use Cloud when you want the full dashboard, live run monitoring, tool analytics, workflow patterns, compliance reports, and remote tool configuration from the UI.

How mode selection works

The SDK selects a mode automatically based on config, no API to call:

import { configure } from 'fuze-ai'

// Cloud mode, set FUZE_API_KEY env var, or:
configure({ cloud: { apiKey: 'fz_...' } })

// Daemon mode
configure({ daemon: { enabled: true } })

// Standalone, default, no configure() needed

Priority when multiple are configured: Cloud > Daemon > Standalone.

Cloud mode

code
Your agent
  │  (guard / createRun)
  │
  ▼
fuze-ai SDK (ApiService)
  │  HTTPS batched to api.fuze-ai.tech
  │
  ▼
Supabase (runs, steps, tool configs)
  │
  ▼
app.fuze-ai.tech dashboard

The SDK batches telemetry and ships it to api.fuze-ai.tech. Tool configs flow the other direction, the SDK pulls them every 30s so dashboard edits (change a budget, disable a tool) take effect without redeployment.

Setup:

  1. Sign up at app.fuze-ai.tech and create a project
  2. Copy your API key
  3. export FUZE_API_KEY=fz_... (or set in fuze.toml)
  4. Call registerTools() at startup so your tools appear in the dashboard

See Tools & Remote Config and Dashboard.

Daemon mode

code
Your agent
  │  (guard / createRun)
  │
  ▼
fuze-ai SDK (DaemonService)
  │  Unix Domain Socket / Windows named pipe
  │
  ▼
Fuze Daemon process
  ├── SQLite (hash-chained audit.db)
  ├── ConfigCache (tool configs)
  └── REST API at :7821
        GET  /api/runs
        GET  /api/runs/:id
        POST /api/runs/:id/kill
        GET  /api/budget
        WS   /ws  (alerts)

The daemon stores everything locally. There is no web UI, the REST API at :7821 is for direct queries or custom dashboards. If you add FUZE_API_KEY to the daemon process environment, it also syncs configs and telemetry to the cloud API (hybrid mode).

Setup:

npx fuze-ai daemon &   # or run as a service

See Daemon.

Standalone mode

No daemon, no API key. The SDK runs entirely in-process. Protection (guard, budget, loop detection) works the same. Audit output goes to fuze-traces.jsonl in the current directory.

No configuration needed:

import { createRun } from 'fuze-ai'

const run = createRun('my-agent', { maxCostPerRun: 2.00 })
// Everything works, guard, budget, loop detection
// Traces written to fuze-traces.jsonl

This is the right default for development and CI.