Fuze is configured via fuze.toml in your project root. All settings have sensible defaults — you don't need a config file to get started.
Full reference
[defaults]
max_retries = 3
timeout = "30s"
max_cost_per_step = 1.00
max_cost_per_run = 10.00
max_iterations = 25
on_loop = "kill"
trace_output = "./fuze-traces.jsonl"
[loop_detection]
window_size = 5
repeat_threshold = 3
max_flat_steps = 4
cost_velocity_window = 60
cost_velocity_threshold = 1.0
[daemon]
socket_path = "/tmp/fuze.sock"
api_port = 7700
storage = "sqlite"
storage_path = "~/.fuze/traces.db"
retention_days = 180
[daemon.budget]
org_daily_budget = 100.00
per_agent_daily_budget = 10.00
alert_threshold = 0.80
[daemon.alerts]
dedup_window_ms = 60000
webhook_urls = []
[providers]
[alerts]
budget_threshold = 0.80
webhook_url = ""
[compliance]
enabled = false
risk_level = "minimal"
log_pii = false
Configuration priority
Settings are merged in this order (last wins):
- Built-in defaults — sensible values for all options
fuze.toml — project-level configuration
- Per-function options —
guard(fn, { maxCost: 0.50 }) overrides everything
Sections
[defaults]
| Key | Type | Default | Description |
|---|
max_retries | number | 3 | Maximum retry attempts |
timeout | string | "30s" | Per-call timeout |
max_cost_per_step | number | 1.00 | USD ceiling per call |
max_cost_per_run | number | 10.00 | USD ceiling per run |
max_iterations | number | 25 | Hard iteration cap |
on_loop | string | "kill" | Behavior on loop detection: "kill", "warn", or "skip" |
trace_output | string | "./fuze-traces.jsonl" | File path for trace output |
[loop_detection]
Controls how Fuze detects repetitive agent behavior.
| Key | Type | Default | Description |
|---|
window_size | number | 5 | Number of recent outputs to compare |
repeat_threshold | number | 3 | Consecutive identical outputs before triggering |
max_flat_steps | number | 4 | Max steps with no cost change before flagging |
cost_velocity_window | number | 60 | Window in seconds for cost velocity check |
cost_velocity_threshold | number | 1.0 | USD/min threshold that triggers an alert |
[daemon]
| Key | Type | Default | Description |
|---|
socket_path | string | "/tmp/fuze.sock" | Socket path. On Windows use \\.\pipe\fuze.sock |
api_port | number | 7700 | HTTP API port for the daemon |
storage | string | "sqlite" | Storage backend |
storage_path | string | "~/.fuze/traces.db" | Database file path |
retention_days | number | 180 | Log retention (min 180 for Art. 19) |
[daemon.budget]
| Key | Type | Default | Description |
|---|
org_daily_budget | number | 100.00 | Organization-wide daily spend ceiling (USD) |
per_agent_daily_budget | number | 10.00 | Per-agent daily spend ceiling (USD) |
alert_threshold | number | 0.80 | Alert at this fraction of the ceiling |
[daemon.alerts]
| Key | Type | Default | Description |
|---|
dedup_window_ms | number | 60000 | Suppress duplicate alerts within this window (ms) |
webhook_urls | array | [] | List of webhook URLs for alert delivery |
[compliance]
| Key | Type | Default | Description |
|---|
enabled | boolean | false | Enable compliance features |
risk_level | string | "minimal" | AI system risk classification |
log_pii | boolean | false | Store raw args/results (GDPR warning) |