docs blog library
github

Config file reference

Every setting ~/.jazz/config.json (or a project’s ./.jazz/config.json) accepts. The table is generated from the schema Jazz validates config files against, so a key missing here is a key Jazz rejects: jazz config validate names it and suggests the closest real one.

  • Key is the dotted path jazz config get and jazz config set take. <provider>, <model>, <server> and <header> stand for a name you choose or a member of a family; [] marks a list whose entries each have these fields.
  • Accepts is what the value must be, in the words jazz config validate uses.
  • Secret keys belong in the keyring. jazz config set stores them there when one is available, and falls back to the protected secrets file otherwise. Environment variables for the same secrets are listed in Environment variables.

Jazz configuration explains how global and project files merge, and the agent file has its own keys.

KeyAcceptsSecretWhat it does
storage.typefile or databaseStorage backend. file is the only one Jazz implements.
storage.pathtextData directory for file storage. Defaults to the Jazz home (~/.jazz).
storage.connectionStringtextConnection string for database storage, which Jazz does not implement.
logging.leveldebug, info, warn, or errorLowest level written to the log files. Defaults to info; --debug sets debug.
logging.formatjson or plainLog line format. Defaults to plain; json writes one object per line.
logging.retentionDaysa whole number greater than 0Days log files are kept after their last write. Defaults to 14; one-shot firing logs are kept for one day.
logging.maxTotalSizeMBa whole number greater than 0Size cap for the logs directory in megabytes. Oldest files are removed first. Defaults to 200.
llm.streamIdleTimeoutMsa whole number greater than 0How long a model stream may stay silent before Jazz abandons it, in milliseconds. Defaults to 120000.
llm.capabilityOverrides.<provider>.<model>.reasoning.kindunsupported, toggle, effort, manual, adaptive, or budgetWhich reasoning control the model accepts. See Model providers.
llm.capabilityOverrides.<provider>.<model>.reasoning.transportollama.chat.think, openai-compatible.chat.template-enable-thinking, openai.responses.reasoning-effort, openai-compatible.chat.reasoning-effort, anthropic.messages.extended-thinking, anthropic.messages.adaptive-thinking, or openai-compatible.chat.template-thinking-budgetThe request field that carries the reasoning control. Each kind accepts its own transports.
llm.capabilityOverrides.<provider>.<model>.reasoning.canDisableReasoningtrue or falseWhether the model accepts reasoning turned off.
llm.capabilityOverrides.<provider>.<model>.reasoning.effortsa listEffort levels the model accepts, for effort, adaptive and manual.
llm.capabilityOverrides.<provider>.<model>.reasoning.minimumBudgetTokensa whole number greater than 0Smallest thinking budget the model accepts, for manual and budget.
llm.capabilityOverrides.<provider>.<model>.reasoning.maximumBudgetTokensa whole number greater than 0Largest thinking budget the model accepts, for manual and budget.
llm.capabilityOverrides.<provider>.<model>.supportsToolstrue or falseWhether the model can call tools, overriding the model catalog.
llm.<provider>.api_keytextyesAPI key for the provider, kept in the keyring when one is available. The provider’s environment variable also works. See Model providers. Applies to every provider except chatgpt.
llm.anthropic.workspace_idtextAnthropic workspace, needed alongside a key tied to a Console user rather than a workspace.
llm.chatgpt.account_idtextAccount of the ChatGPT sign-in. Written by Jazz when you sign in.
llm.chatgpt.plantextPlan of the ChatGPT sign-in, such as plus or pro. Written by Jazz.
llm.<provider>.base_urltextServer address of a self-hosted provider. Applies to llamacpp, ollama, sglang, vllm.
llm.ollama.keep_alivetextHow long Ollama keeps the model loaded, such as 30m, or -1 to keep it resident.
web_search.<provider>.api_keytextyesAPI key for the web search provider.
web_search.providerexa, parallel, tavily, brave, perplexity, linkup, or tregWeb search provider agents use when an agent does not name one.
network.allowPrivateHostsa listHosts on this machine or your local network agents may reach without asking: hostnames, *.suffix wildcards, IP addresses or CIDR blocks, at most 64. Any other private address asks for approval, and approving adds it here. Read from the global config only. See Private network hosts.
network.httpApprovalallow or a listHTTP requests and web fetches run automatically by default, including private destinations and after untrusted content. Set a URL array to approve only matching requests automatically; every other request asks or parks. Exact HTTP(S) URLs include query strings; trailing /* grants a path prefix on the same origin. A one-call approval never changes the list. The browser tools load only matching URLs. Global config only.
browser.headlesstrue or falseRun a launched browser headless by default; set false for a visible window to watch the run.
browser.endpointan http(s):// or ws(s):// DevTools URLA running browser the browser tools drive: an http(s):// or ws(s):// DevTools URL. Without it, the tools try a browser you run on the local DevTools port (http://127.0.0.1:9222), then a launched Chrome. Page content and typed text reach the browser’s host. Global config only. See Browser Use.
output.showReasoningtrue or falseShow the model’s reasoning. Defaults to true.
output.showToolExecutiontrue or falseShow each tool call as it runs. Defaults to true.
output.collapseReasoningtrue or falseCollapse finished reasoning to one line; Ctrl+R expands it. Defaults to true.
output.moderendered, hybrid, raw, or quietTerminal output style. Defaults to hybrid; quiet suppresses output for background runs.
output.colorProfilefull, basic, or noneColor depth: full, basic (16 colors, no emoji) or none. Detected from the terminal when unset.
output.showMetricstrue or falseShow first-token latency, tokens per second and duration after each answer. Defaults to true.
output.streaming.enabledtrue, false, or autoStream answers as they arrive. Defaults to auto, which streams on a terminal.
output.streaming.textBufferMsa whole number of 0 or moreHow long streamed text is batched before it is drawn, in milliseconds. Defaults to 50.
mcpServers.<server>.enabledtrue or falseTurn a server defined in .agents/mcp.json on or off.
mcpServers.<server>.trustedtrue or falseLet the server’s tool annotations set their risk level. See MCP.
notifications.enabledtrue or falseSend desktop notifications for completions and approvals.
notifications.soundtrue or falsePlay a sound with desktop notifications.
notifications.terminalauto, osc99, osc777, osc9, or offHow desktop notifications reach a terminal that shows them itself: auto detects kitty, Ghostty, WezTerm, Warp and iTerm2; osc99, osc777 or osc9 forces that escape sequence (for example over SSH); off always uses the system notifier. JAZZ_NOTIFICATIONS_TERMINAL wins. Defaults to auto. See Desktop notifications.
autoApprovedCommandsa listShell commands approved without asking. See Approvals.
telemetry.enabledtrue or falseRecord local telemetry. Defaults to true.
telemetry.storagePathtextDirectory for local telemetry. Defaults to telemetry in the Jazz home.
telemetry.bufferSizea whole number of 0 or moreEvents held in memory before a flush. Defaults to 100.
telemetry.flushIntervalMsa whole number of 0 or moreTime between automatic flushes, in milliseconds. Defaults to 30000.
telemetry.retentionDaysa whole number of 0 or moreDays local telemetry is kept. Defaults to 90.
telemetry.otlp.enabledtrue or falseSet to false to stop OTLP export while keeping the endpoint configured. Export is on whenever an endpoint is set.
telemetry.otlp.signalsa listSignals to export. Defaults to traces; add logs or metrics.
telemetry.otlp.endpointtextCollector base URL, such as http://localhost:4318. Falls back to OTEL_EXPORTER_OTLP_ENDPOINT.
telemetry.otlp.tracesEndpointtextFull traces URL, overriding endpoint.
telemetry.otlp.logsEndpointtextFull logs URL, overriding endpoint.
telemetry.otlp.metricsEndpointtextFull metrics URL, overriding endpoint.
telemetry.otlp.headers.<header>textyesAn HTTP header sent with every export, typically auth. Every header is stored as a secret.
telemetry.otlp.serviceNametextservice.name on exported records. Defaults to jazz.
telemetry.otlp.resourceAttributes.<attribute>textA resource attribute on every exported record, such as deployment.environment.
telemetry.otlp.timeoutMsa whole number of 0 or morePer-request export timeout, in milliseconds. Defaults to 10000.
telemetry.otlp.maxQueuedBytesa whole number greater than 0Disk space for pending traces and logs. Defaults to 32 MiB.
telemetry.otlp.maxQueueAgeMsa whole number greater than 0Age at which pending traces and logs are dropped, in milliseconds. Defaults to seven days.
telemetry.otlp.metricExportIntervalMsa whole number greater than 0Time between metric exports, in milliseconds. Defaults to 30000.
maxRetriesa whole number of 0 or moreRetries for a transient model API failure. Defaults to 10.
editortextEditor for jazz persona edit and jazz mcp add, such as code --wait. Defaults to $VISUAL, then $EDITOR, then vi.
maxSubagentDeptha whole number of 0 or moreHow many levels of sub-agents may nest. Defaults to 3; 0 turns delegation off.
maxLiveSubagentsa whole number greater than 0Sub-agents running at once in a run, or in a chat across its turns. Defaults to 10.
maxIterationsa whole number of 0 or more, where 0 means unlimitedModel rounds per top-level run. 0 = unlimited. Unset: unlimited in a terminal, 100 when unattended; --max-iterations wins. A user-visible warning fires at 50/70/90% of the cap.
maxSubagentIterationsa whole number of 0 or more, where 0 means unlimitedModel rounds per sub-agent run. 0 = unlimited. Unset: unlimited under an attended run, 30 when unattended; --max-subagent-iterations wins.
maxCostUSDa number greater than 0Spend ceiling per run, in US dollars. Unset means no ceiling; --max-cost-usd wins. See Budgets.
maxTokensa whole number greater than 0Token ceiling per run. Unset means no ceiling; --max-tokens wins.
maxDurationMsa whole number greater than 0Wall-clock ceiling per run, in milliseconds. Unset means no ceiling; --max-duration-ms wins.
context.warnThresholdRatioa number greater than 0 and less than 1Share of the context window at which the model is told it is filling up. Defaults to 0.7.
context.compactThresholdRatioa number greater than 0 and less than 0.95Share of the context window at which history is compacted. Defaults to 0.8.
history.maxConversationsPerAgenta whole number greater than 0Conversations kept in each agent’s live history. Older conversations are archived, not deleted; active goal, loop and run conversations are protected. Defaults to 100.
workspaceMaxTotalBytesPerAgenta whole number greater than 0Size cap for one agent’s workspace directory, in bytes. Defaults to 1 GB.
scheduler.modeauto or in-processauto schedules workflows with launchd on macOS and cron on Linux; in-process leaves it to jazz daemon. See Scheduling.
peers[].nametextLocal name for the peer, used in commands and the ledger. See Agent-to-agent.
peers[].urltextThe peer’s endpoint, needed to ask them.
peers[].disclosurenone, public, internal, or privateThe tier you grant this peer when it asks you. Unset grants nothing.
peers[].personatextPersona your agent answers this peer with.
peers[].allowa listTools this peer may reach by name, beyond its disclosure tier.
peers[].budget.maxTokensa whole number greater than 0Token ceiling for each run this peer starts.
peers[].budget.maxCostUSDa number greater than 0Spend ceiling in US dollars for each run this peer starts.
peers[].budget.maxDurationMsa whole number greater than 0Wall-clock ceiling in milliseconds for each run this peer starts.
peers[].maxConcurrentRunsa whole number greater than 0Runs this peer may have in flight at once; a request past it is refused with 429. Defaults to 4.
hosts[].nametextName of a machine registered for detached conversations. See Detached conversations.
hosts[].sshTargettextSSH config alias for the machine.
hosts[].workspacePathtextAbsolute directory on the machine dedicated to Jazz transfers.
hosts[].allowFileSecretstrue or falseLet a machine without a keyring keep handed-off provider keys in its secrets file. Off by default.
webhooks[].nametextName in the webhook URL. See Webhooks.
webhooks[].agentIdtextAgent the webhook runs.
webhooks[].promptTemplatetextPrompt run when the webhook fires. {{payload}} becomes the request body, quoted as data.
webhooks[].descriptiontextWhat the webhook is for.
webhooks[].conversationephemeral or threadedephemeral starts fresh on each call; threaded continues one conversation.
webhooks[].disclosurenone, public, internal, or privateWhat the webhook’s answers may reveal. Defaults to internal.
webhooks[].allowa listTools the webhook run may reach by name, beyond its disclosure tier.
webhooks[].signature.formathmac-sha256Authenticate each request by an hmac-sha256 signature over its body instead of a bearer token. Set the shared secret with jazz webhook secret <name>.
webhooks[].signature.headertextRequest header holding the signature. Defaults to x-hub-signature-256.
webhooks[].signature.prefixtextText before the hex digest in that header. Defaults to sha256=.
webhooks[].deliveryIdHeadertextHeader carrying each delivery’s id; a delivery already received is refused. Defaults to x-github-delivery.
webhooks[].budget.maxTokensa whole number greater than 0Token ceiling for each run this webhook starts.
webhooks[].budget.maxCostUSDa number greater than 0Spend ceiling in US dollars for each run this webhook starts.
webhooks[].budget.maxDurationMsa whole number greater than 0Wall-clock ceiling in milliseconds for each run this webhook starts.
webhooks[].maxConcurrentRunsa whole number greater than 0Runs this webhook may have in flight at once; a request past it is refused with 429. Defaults to 4.
daemon.tokentextyesThe daemon’s bearer token, written here only on a host without a keyring. Written by Jazz.
daemon.dailyCostUSDa number greater than 0Most dollars unattended runs may spend per day, across all of them. Reaching it, or an unpriced unattended run today, pauses the daemon’s own work until midnight or jazz daemon resume. Unset is unlimited. See Spend caps.
daemon.monthlyCostUSDa number greater than 0Most dollars unattended runs may spend per local month, across all of them. Unset is unlimited.
daemon.dailyTokensa whole number greater than 0Most prompt and completion tokens unattended runs may spend per day, across all of them.
daemon.goals.dailyCostUSDa number greater than 0Combined goal-cycle and loop-run spend cap per local day, in dollars. Unset is unlimited.
daemon.goals.monthlyCostUSDa number greater than 0Combined goal-cycle and loop-run spend cap per local month, in dollars. Unset is unlimited.
daemon.agents.<agent>.dailyCostUSDa number greater than 0Unattended spend cap per local day, in dollars, for the agent this key names (agent name or id). Unset is unlimited.
daemon.agents.<agent>.monthlyCostUSDa number greater than 0Unattended spend cap per local month, in dollars, for the agent this key names (agent name or id). Unset is unlimited.
notify.targets[].namea lowercase name of letters, digits, - and _This target’s name: the key its secrets are stored under (notify.targets.<name>.<field>) and what a workflow’s deliver field names. See Notifications.
notify.targets[].eventsa listEvent subscriptions. Unset receives every subscribable event; workflow results go to the targets named by the workflow’s deliver field.
notify.targets[].kinddesktop, ntfy, webhook, telegram, or discordDelivery transport: desktop, ntfy, webhook, telegram or discord.
notify.targets[].urlan http:// or https:// URLntfy topic URL, or the endpoint that receives each notification as a JSON POST (signed when the target has a secret).
notify.targets[].chatIdtextTelegram chat id to receive notifications.
notify.targets[].apiBaseUrlan http:// or https:// URLOverride the Telegram or Discord API base URL for bot delivery.
notify.targets[].approveFromChattrue or falseInclude chat approval commands in parked-run notifications. Requires a running bridge with operators and JAZZ_APPROVALS_HOME configured. Defaults to false.
notify.targets[].channelIdtextDiscord channel id for delivery using a bot token.
ui.themea theme name, optionally with :dark or :lightThe theme, such as jazz, catppuccin:light or a file in ~/.jazz/themes. /theme writes it; JAZZ_THEME wins. Defaults to system (your terminal’s own colours).
ui.canvasinherit or paintedinherit leaves your terminal’s background showing; painted fills every cell with the theme’s background. Defaults to inherit.
chat.defaultCostLimitUSDa number greater than 0Starting value of a new chat session’s /limit usd cap, in dollars. /limit can still raise, lower or clear it for that session. Unset is unlimited.

machine-readable: /docs/configure/config-reference.md · /llms.txt · /llms-full.txt