docs blog library
github

Environment variables

Every variable Jazz reads, grouped by what it controls. A command-line flag wins over its variable, and a setting in config.json wins over a variable unless the row says otherwise. Boolean switches marked 1 accept only 1; anything else leaves them off.

Where Jazz keeps things

VariableEffect
JAZZ_HOMEDirectory for config, agents, conversations, memory, logs and secrets. Defaults to ~/.jazz. --data-dir wins.
JAZZ_CONFIG_PATHGlobal config file to use instead of $JAZZ_HOME/config.json. ~ is expanded.
JAZZ_LOG_DIRDirectory for log files. Defaults to $JAZZ_HOME/logs.
JAZZ_DISABLE_KEYRINGAny value other than empty, 0 or false turns off the OS keyring and the secrets-file fallback, so Jazz stores no secrets and reads keys only from the environment. Useful for CI and for isolated test homes.
JAZZ_DANGEROUSLY_ALLOW_READING_SECRETSAny value other than empty, 0 or false lets agents load saved secrets and use typed ones without a person approving each use, under every approval mode. Set by --dangerously-allow-reading-secrets. For unattended runs only.
JAZZ_CHATGPT_CREDENTIALOptional JSON ChatGPT OAuth bundle used only when Jazz has no stored ChatGPT credential. Jazz removes it from child-process environments after reading it.
JAZZ_CHATGPT_CREDENTIAL_OUTPUTOptional file path where Jazz writes a rotated ChatGPT OAuth bundle after refresh. The file is created with mode 0600; use it only to persist the refreshed credential in hosted CI.

Terminal and display

VariableEffect
JAZZ_OUTPUT_MODErendered, hybrid, raw or quiet. Wins over output.mode; --output wins over it. Other values are ignored.
JAZZ_NO_TUI1 turns off the terminal UI entirely and prints plain output. --no-tui sets it.
JAZZ_FULLSCREEN0 or false keeps the interactive UI but draws it inline instead of on the alternate screen.
JAZZ_A11Y, INK_SCREEN_READER1 turns off the fullscreen interface, for screen readers.
JAZZ_THEMEA theme name, optionally with :dark or :light, such as catppuccin:light. Wins over ui.theme. /theme lists available themes.
JAZZ_UI_GLYPHSunicode or ascii symbols. Detected from the terminal when unset.
JAZZ_TABLE_STYLEunicode, minimal or ascii borders for Markdown tables. Follows JAZZ_UI_GLYPHS when unset.
JAZZ_TERMINALOverrides terminal detection, such as iterm2, terminal-app, warp or xterm. Detected from TERM_PROGRAM and TERM when unset.
JAZZ_NOTIFICATIONS_TERMINALauto, osc99, osc777, osc9 or off: how desktop notifications reach the terminal. Wins over notifications.terminal. Other values are ignored. See Desktop notifications.
JAZZ_OSC75010, false or off turns off OSC 7501 program-status reports (the state=working / blocked / done signals terminals like Ghostty and Rex show in the tab). Emitted by default whenever a terminal is attached.
JAZZ_OSC_CWD0, false or off turns off OSC 7 working-directory reports (tab titles, tmux). Emitted by default at the start of a session and a jazz run.
NO_COLOR, NODE_DISABLE_COLORSAny value turns color off.
VISUAL, EDITOREditor for jazz persona edit and jazz mcp add, after the editor setting. Falls back to vi.

Network and catalogs

VariableEffect
JAZZ_OFFLINE1 or true stops the requests Jazz makes on its own: the update check and the models.dev and library catalogs, which fall back to their caches. Model requests are unaffected. See Privacy.
JAZZ_DISABLE_UPDATE_CHECK1 skips the update check when a command starts.
JAZZ_MODELS_DEV_URLReplacement URL for the models.dev catalog.
JAZZ_LIBRARY_URLReplacement base URL for the persona, workflow and skill library. Defaults to https://jazz-cli.vercel.app/library.
JAZZ_PLUGIN_CATALOG_URLReplacement base URL for plugin catalog ids. Defaults to https://jazz-cli.vercel.app/library/plugins/.
HTTP_PROXY, HTTPS_PROXY, ALL_PROXY, NO_PROXYRoute every request Jazz makes through a proxy. Lowercase forms win over uppercase; ALL_PROXY covers both schemes.

Runs, scheduling and the daemon

VariableEffect
JAZZ_STREAM_IDLE_TIMEOUT_MSHow long a model stream may stay silent before Jazz abandons it, in milliseconds. llm.streamIdleTimeoutMs wins. Defaults to 120000.
JAZZ_SCHEDULERin-process leaves scheduled work to jazz daemon instead of launchd or cron, like scheduler.mode.
JAZZ_DAEMON_TICK_MSHow often the daemon checks for due work, in milliseconds. Defaults to 5000.
JAZZ_DISABLE_CATCH_UP1 skips the prompt to run workflows missed while the machine was off, and the failed-runs notice.

JAZZ_NOTIFY_<NAME>_<FIELD> supplies a notify target secret, taking precedence over the keyring: for example, JAZZ_NOTIFY_PHONE_BOT_TOKEN, JAZZ_NOTIFY_TEAM_WEBHOOK_URL, or JAZZ_NOTIFY_OPS_SECRET. Target names and field names become uppercase with underscores. See Notifications.

JAZZ_SPEND_LEDGER=parent tells a child process that its caller records its spend. The child skips its own ledger recording and cap checks; chat bridges set this to avoid counting a run twice. Leave it unset for standalone runs.

Model provider keys and servers

A provider key in the environment overrides a stored global key. An agent-specific config.llm.apiKeys override takes precedence over both. See Model providers for the order Jazz checks.

ProviderKey variable
ai_gatewayAI_GATEWAY_API_KEY
alibabaALIBABA_API_KEY
anthropicANTHROPIC_API_KEY (and ANTHROPIC_WORKSPACE_ID)
cerebrasCEREBRAS_API_KEY
deepseekDEEPSEEK_API_KEY
fireworksFIREWORKS_API_KEY
geminiGOOGLE_GENERATIVE_AI_API_KEY, or GEMINI_API_KEY
groqGROQ_API_KEY
llamacppLLAMACPP_API_KEY
minimaxMINIMAX_API_KEY
mistralMISTRAL_API_KEY
moonshotaiMOONSHOT_API_KEY
nvidiaNVIDIA_API_KEY, or NIM_API_KEY
ollamaOLLAMA_API_KEY (Ollama Cloud models)
openaiOPENAI_API_KEY
openrouterOPENROUTER_API_KEY
orcarouterORCAROUTER_API_KEY
sglangSGLANG_API_KEY
togetheraiTOGETHER_AI_API_KEY
vllmVLLM_API_KEY
xaiXAI_API_KEY
zhipuaiZHIPU_API_KEY

chatgpt has no key variable: sign in from /settings → Model providers in the jazz home screen.

Self-hosted servers are found at these addresses. A saved llm.<provider>.base_url wins over the variable.

VariableDefault
OLLAMA_BASE_URLhttp://127.0.0.1:11434/api
LLAMACPP_BASE_URLhttp://127.0.0.1:8080/v1
VLLM_BASE_URLhttp://127.0.0.1:8000/v1
SGLANG_BASE_URLhttp://127.0.0.1:30000/v1

Web search keys: BRAVE_API_KEY, EXA_API_KEY, LINKUP_API_KEY, PARALLEL_API_KEY, PERPLEXITY_API_KEY, TAVILY_API_KEY, and TREG_TOKEN. See Web search.

Daemon, peer and webhook tokens

Each is checked before the keyring.

VariableEffect
JAZZ_DAEMON_TOKENThe daemon’s bearer token.
JAZZ_PEER_TOKEN_<NAME>The token for one peer. <NAME> is the peer name in upper case, with every character outside A-Z and 0-9 turned into _.
JAZZ_PEER_TOKENWhere jazz peers set-token <name> reads the token from, unless --from-env names another variable.
JAZZ_WEBHOOK_TOKEN_<NAME>The token for one webhook, named the same way.
JAZZ_WEBHOOK_SECRET_<NAME>The signing secret for one webhook that uses signature, named the same way.

Telemetry

The standard OpenTelemetry variables configure OTLP export when telemetry.otlp does not: OTEL_EXPORTER_OTLP_ENDPOINT, OTEL_EXPORTER_OTLP_TRACES_ENDPOINT, OTEL_EXPORTER_OTLP_LOGS_ENDPOINT, OTEL_EXPORTER_OTLP_METRICS_ENDPOINT, OTEL_EXPORTER_OTLP_HEADERS (and the per-signal _HEADERS forms), OTEL_EXPORTER_OTLP_TIMEOUT, OTEL_SERVICE_NAME and OTEL_RESOURCE_ATTRIBUTES. See Observability.

Tools and plugins

VariableEffect
PUPPETEER_EXECUTABLE_PATHChrome or Chromium binary for the web page and PDF tools.
JAZZ_COMPUTER_DRIVERPath to the cua-driver executable for computer use. Searched on PATH when unset.
JAZZ_TERMINAL_NOTIFIER, TERMINAL_NOTIFIERPath to terminal-notifier for desktop notifications on macOS. The bundled copy is used otherwise.
JAZZ_LSP_CONFIGServer list for the lsp plugin. Defaults to ~/.jazz/lsp.json, whatever JAZZ_HOME is.
JAZZ_CLOUDFLARE_CONFIGCloudflare credentials for publish_composition ({ "token", "accountId", "accessEmail", "pagesHost" }). Defaults to ~/.config/jazz/cloudflare.json.

Installer

install.sh reads these variables:

VariableEffect
JAZZ_INSTALL_DIRDirectory for the binary. Defaults to ~/.local/bin.
JAZZ_VERSIONRelease to install, such as v0.15.44. Defaults to the latest.

Chat bots

The bridges read these when they start each run. Each bridge’s README has the full setup: Telegram, Discord, iMessage on your Mac, iMessage through Photon and WhatsApp.

Bridge controls:

VariableEffect
JAZZ_BOT_MAX_CONCURRENT_RUNSMaximum active runs across a bridge process. Positive integer; defaults to 4.
JAZZ_BOT_MAX_QUEUED_MESSAGESMaximum messages waiting behind a conversation’s active run: commands and other people’s messages. The requester’s own messages go into the run instead. Positive integer; defaults to 5.
JAZZ_BRIDGE_HEALTH_PORTOptional health HTTP port for iMessage, Photon and WhatsApp. Disabled when unset. Telegram and Discord use their existing HTTP servers.
JAZZ_APPROVALS_HOMEJazz home whose parked runs Telegram or Discord operators may approve or reject. Unset disables these chat commands. Runs as the bridge process, outside the conversation sandbox.

Shared by every bridge:

VariableEffect
JAZZ_APPROVAL_POLICYApproval policy for each run: read-only, low-risk or high-risk. Defaults to low-risk.
JAZZ_AUTO_APPROVE_TOOLSComma-separated tools approved without asking.
JAZZ_REASONINGReasoning effort of the agent the bridge creates. Defaults to medium.
JAZZ_RUN_TIMEOUT_MSTime limit per run, in milliseconds. Defaults to 300000.
JAZZ_DAILY_COST_CAP_USDDaily spend cap in US dollars. 0, the default, means no cap.
JAZZ_BINThe jazz binary the bridge runs.
JAZZ_BUILTIN_PERSONAS_DIRDirectory of built-in personas, set by the Docker images.
JAZZ_OLLAMA_KEEP_ALIVEWritten to llm.ollama.keep_alive in the bridge’s config.
BRAVE_API_KEYAlso selects Brave as the bridge’s web search provider.
TZTimezone for a chat that has not set one. Defaults to UTC.
JAZZ_BOT_CHAT_ISOLATIONGives each conversation its own user and home when the bridge runs as root with setpriv and useradd, as the Telegram and Discord images do. 0, false, off or no turns it off.
JAZZ_BOT_OPERATOR_GIDGroup allowed to read every conversation’s state. Defaults to the group owning the data directory.
JAZZ_BOT_RUN_ASContainer user: in the Docker Compose files. Defaults to 0:0.
JAZZ_DEPLOY_BRANCHBranch auto-update.sh follows. See Keeping it updated.

Each bridge creates and runs its own agent. The agent id, provider and model apply when the bridge creates it; the provider defaults to openai.

BridgeAgent id (default)Provider and modelShow reasoning (default)
TelegramJAZZ_TELEGRAM_AGENT (telegram)JAZZ_TELEGRAM_PROVIDER, JAZZ_TELEGRAM_MODELJAZZ_TELEGRAM_SHOW_REASONING (on)
DiscordJAZZ_DISCORD_AGENT (discord)JAZZ_DISCORD_PROVIDER, JAZZ_DISCORD_MODELJAZZ_DISCORD_SHOW_REASONING (on)
iMessage on your MacJAZZ_IMESSAGE_AGENT (imessage)JAZZ_IMESSAGE_PROVIDER, JAZZ_IMESSAGE_MODELJAZZ_IMESSAGE_SHOW_REASONING (off)
iMessage through PhotonJAZZ_PHOTON_AGENT (photon)JAZZ_PHOTON_PROVIDER, JAZZ_PHOTON_MODELJAZZ_PHOTON_SHOW_REASONING (on)
WhatsAppJAZZ_WHATSAPP_AGENT (whatsapp)JAZZ_WHATSAPP_PROVIDER, JAZZ_WHATSAPP_MODELJAZZ_WHATSAPP_SHOW_REASONING (off)

JAZZ_TELEGRAM_DYNAMIC_CTA and JAZZ_DISCORD_DYNAMIC_CTA offer follow-up buttons under replies; they are on by default.

Platform credentials, allowlists and addresses:

  • Telegram: TELEGRAM_BOT_TOKEN, TELEGRAM_ALLOWED_CHAT_IDS, TELEGRAM_MODE, TELEGRAM_WEBHOOK_URL, TELEGRAM_WEBHOOK_SECRET, TELEGRAM_WEBAPP_BASE_URL, NOMINATIM_BASE_URL, PORT.
  • Discord: DISCORD_BOT_TOKEN, DISCORD_ALLOWED_USER_IDS, DISCORD_ALLOWED_CHANNEL_IDS, DISCORD_ALLOWED_GUILD_IDS, DISCORD_REQUIRE_MENTION, DISCORD_CREATE_THREADS, DISCORD_PUBLIC_BASE_URL, PORT.
  • iMessage on your Mac: IMESSAGE_ALLOWED_HANDLES, IMESSAGE_ALLOWED_GROUP_CHAT_IDS, IMESSAGE_SELF_TRIGGER, IMSG_BIN.
  • iMessage through Photon: PHOTON_PROJECT_ID, PHOTON_PROJECT_SECRET, PHOTON_ALLOWED_HANDLES.
  • WhatsApp: WHATSAPP_ALLOWED_NUMBERS, WHATSAPP_ALLOWED_GROUPS, WHATSAPP_REQUIRE_MENTION_IN_GROUPS, WHATSAPP_AUTH_DIR, WHATSAPP_PAIR_NUMBER.

Test fixtures

These variables are private controls for the compiled terminal test fixture. The normal Jazz executable does not read them.

VariableEffect
JAZZ_PTY_CONTROLValidated control-file path used by the compiled PTY qualification fixture.
JAZZ_PTY_RESULTResult-file path used by that fixture to report native frame captures.

Set by Jazz

Jazz sets these for the processes it starts. Setting them yourself changes nothing useful.

  • JAZZ_AGENT_PROCESS marks a process an agent’s tool started, so jazz goal refuses decisions only you may make.
  • JAZZ_SURFACE names the surface that started a run (cli unless a bridge started it).
  • GIT_TERMINAL_PROMPT=0, and GIT_PAGER=cat unless you set your own, keep git from waiting on a password prompt or a pager inside a tool call.

machine-readable: /docs/configure/environment-variables.md · /llms.txt · /llms-full.txt