Environment variables

Slo works with no configuration at all. These variables are for when you want to change where things live, run long workflows, connect other tools, or run Slo somewhere without a person watching.

Most people only ever set two or three. Start with the profiles at the bottom if you'd rather copy something that works.

The ones most people set

VariableDefaultWhat it does
SLO_KB_DIRnot setFolder of markdown notes Slo consults before designing or debugging, and writes discoveries back to. See Give Slo a memory.
SLO_MODEL_POOLnot setTwo or more models to fall back through when one is rate limited or out of credit. See the model pool.
SLO_SUBAGENT_MAX_CONCURRENCY4How many sub-agents a dynamic workflow runs at once.

Paths

VariableDefaultWhat it does
SLO_HOME~/.sloWhere Slo keeps everything: sessions, credentials, preferences, schedules, your skills and workflows.
SLO_SKILLS_DIRset by the installerThe built-in skill library. The installer points this at the installed package, so you rarely need to touch it.
SLO_USER_SKILLS_DIR$SLO_HOME/user_skillsYour own skills.
SLO_USER_WORKFLOWS_DIR$SLO_HOME/user_workflowsYour own workflows.
SLO_AUTH_FILE$SLO_HOME/global/authentication.jsonWhere sign-in credentials are stored.
SLO_PREFERENCES_FILE$SLO_HOME/global/preferences.jsonSaved model, reasoning level and model pool.
SLO_SCHEDULES_DIR$SLO_HOME/schedulesSchedule definitions and run records.
SLO_CONNECTORS_DIR$SLO_HOME/connectorsSaved connector credentials.

Two things stay under your real home directory whatever SLO_HOME says: the global instruction file (~/.slo/SLO.md) and installed plugins (~/.slo/plugins/).

Models and providers

VariableDefaultWhat it does
OPENAI_API_KEY or SLO_OPENAI_API_KEYnot setOpenAI API key. Used instead of your saved sign-in.
ANTHROPIC_API_KEY or SLO_ANTHROPIC_API_KEYnot setAnthropic API key.
KIMI_FOR_CODING_API_KEY or SLO_KIMI_FOR_CODING_API_KEYnot setKimi For Coding API key.
SLO_OPENROUTER_API_KEYnot setOpenRouter API key. See OpenRouter.
SLO_DEFAULT_MODEL_NAMEgpt-5.4The model to use when you haven't picked one with /model or --model.
SLO_MODEL_POOLnot setFallback pool: "gpt-5.4,claude-sonnet-4-6" or a JSON list.
SLO_MODEL_CATALOG_OVERRIDES_FILE$SLO_HOME/global/model_catalog_overrides.jsonTweaks to built-in model settings.

If both the plain and SLO_ versions of a key are set, the plain one (OPENAI_API_KEY) wins. An environment key always beats a saved sign-in.

Sign-in timeouts

VariableDefaultWhat it does
SLO_OAUTH_TIMEOUT_SECONDS60How long the browser sign-in waits for the callback.
SLO_OAUTH_MANUAL_TIMEOUT_SECONDS900Time allowed to finish a browser sign-in by pasting the response by hand.
SLO_OAUTH_DEVICE_TIMEOUT_SECONDS900Time allowed to finish an OpenAI device-code sign-in.
SLO_OAUTH_CALLBACK_HOST127.0.0.1Address the sign-in callback listens on.

Flaky connections

VariableDefaultWhat it does
SLO_PROVIDER_STREAM_FIRST_PROGRESS_TIMEOUT_SECONDS300How long to wait for a model to start responding before reconnecting once.
SLO_PROVIDER_STREAM_IDLE_TIMEOUT_SECONDS300Longest pause allowed in the middle of a response.
SLO_PROVIDER_STREAM_CONTINUATION_MAX_ATTEMPTS5How many times to pick up an interrupted response.

Long-running workflows

These matter when you use dynamic workflows. The defaults are generous on purpose.

VariableDefaultWhat it does
SLO_SUBAGENT_MAX_CONCURRENCY4Sub-agents running at the same time.
SLO_SUBAGENT_MAX_TASKS8Most sub-agents the orchestrator can start in one go.
SLO_STREAM_INACTIVITY_TIMEOUT_SECONDS10800 (3h)How long the main agent can go without output before it's treated as hung.
SLO_SUBAGENT_INACTIVITY_TIMEOUT_SECONDS7200 (2h)How long a sub-agent can go without output before it's stopped. Any output resets the clock, so this isn't a limit on total run time.
SLO_SUBAGENT_TERMINATE_GRACE_SECONDS5Time a sub-agent gets to exit cleanly before it's force-stopped.
SLO_BASH_DEFAULT_TIMEOUT_SECONDS1800 (30m)Longest a single shell command can run. 0 removes the limit.
SLO_DETACHED_WORKFLOWSonSet to 0 to stop Slo launching workflows in the background.
SLO_MAX_DETACHED_WORKFLOWS2Background workflows allowed per session at once.
SLO_AUTO_VISUALIZEonOpens slo visualize in a new terminal window when sub-agents start. 0 turns it off.
SLO_VISUALIZER_TERMINAL_APPyour default terminalWhich terminal to open it in, for example iTerm on macOS or kitty on Linux.

Headless runs

VariableDefaultWhat it does
SLO_SESSION_IDa new id per runShare one session across several slo run calls. Letters, numbers, ., _ and -.
SLO_HEADLESS_HEARTBEAT_SECONDS15How often a headless run reports it's alive on stderr.
SLO_HEADLESS_COOPERATIVE_ABORT_GRACE_SECONDS5How long an aborted run gets to wrap up cleanly.

Connectors

VariableDefaultWhat it does
SLO_ATLASSIAN_SITE_URLnot setYour Jira and Confluence site, like https://your-team.atlassian.net.
SLO_ATLASSIAN_EMAILnot setThe Atlassian account email.
SLO_ATLASSIAN_API_TOKENnot setAn Atlassian API token. All three are needed.
SLO_ATLASSIAN_TIMEOUT_SECONDS30Request timeout. Whole seconds only.
SLO_CONNECTOR_PREFER_ENVoffSet to 1 to prefer these variables over saved connector credentials. Useful in CI.

See Connectors.

Plugins

VariableDefaultWhat it does
SLO_PLUGINS_DISABLEDnot setSet to exactly 1 to turn every plugin off, including in sub-agents.
SLO_PLUGIN_INTERCEPTION_TIMEOUT_SECONDS5How long a plugin gets to approve or change a tool call.

Installing and updating

These are read by the install script:

VariableDefaultWhat it does
SLO_VERSIONthe current releaseInstall a specific release tag, for example v0.18.0. dev installs the latest development build.
SLO_PYTHON_VERSION3.11.7The Python version Slo is installed with.
curl -fsSL https://get-slo.sh/install.sh | SLO_VERSION='v0.18.0' bash

The installer writes SLO_HOME and SLO_SKILLS_DIR to ~/.slo/shell/environment.sh and sources it from your shell profile. Cron jobs and services don't load your shell profile, so set anything important there explicitly.

Set by Slo, not by you

You may see SLO_WORKFLOW_ID, SLO_PARENT_PID and SLO_CAPTURE_DIR in a sub-agent's environment. Slo sets these to keep track of its own processes. Leave them alone.

Ready-made profiles

Your laptop. A knowledge base and a fallback model:

export SLO_KB_DIR="$HOME/notes/kb"
export SLO_MODEL_POOL="gpt-5.4,claude-sonnet-4-6"

Long dynamic workflows. More parallelism, generous timeouts:

export SLO_SUBAGENT_MAX_CONCURRENCY=6
export SLO_STREAM_INACTIVITY_TIMEOUT_SECONDS=10800
export SLO_SUBAGENT_INACTIVITY_TIMEOUT_SECONDS=7200
export SLO_BASH_DEFAULT_TIMEOUT_SECONDS=1800

A CI runner. Keys from secrets, no pop-up windows, no plugins:

export OPENAI_API_KEY="$CI_OPENAI_API_KEY"
export SLO_AUTO_VISUALIZE=0
export SLO_PLUGINS_DISABLED=1
export SLO_CONNECTOR_PREFER_ENV=1
export SLO_SESSION_ID="ci-$CI_PIPELINE_ID"