Skip to content

Configuration ​

awf has no settings file. A workflow says what a run does; the command line says where it runs (awf commands). What is left is a few environment variables, the logins each harness keeps, and one name in .env.

Environment variables ​

awf's own ​

VariableMeaningDefault
AWF_HERDR_SESSIONThe Herdr session a run's TUI agents open in. Lowercase letters, digits and -, up to 32, not starting with -. awf starts a session named awf or awf-… when it isn't running; any other name must be running already (Harnesses).awf
AWF_COORDINATOR_DIRWhere live runs keep the socket that awf reply, awf send and events reach them through. An absolute path, outside the workflow's folder. Set it the same for the run and for the commands that answer it.~/.awf/coordinator

Keys and tokens ​

VariableMeaningDefault
OPENROUTER_API_KEYThe key for jev, the built-in decision model. Read from the environment, else from .env (below). The engine holds it; no agent's environment has it.unset: asking jev fails, saying the key is not set
CLAUDE_CODE_OAUTH_TOKENThe login of a claude agent in a sandbox, from claude setup-token. Passed into the sandbox, never on a command line.unset: a sandboxed claude is refused
CURSOR_API_KEYThe login of a cursor agent in a sandbox, a key from Cursor's dashboard.unset: a sandboxed cursor is refused

Agents outside a sandbox use your harness logins as they are (Install).

Refused ​

awf run refuses to start while any of these is set, since each would switch an agent to per-token billing (Harnesses):

HarnessVariables
claudeANTHROPIC_API_KEY, ANTHROPIC_AUTH_TOKEN, ANTHROPIC_BASE_URL
codexOPENAI_API_KEY, OPENAI_BASE_URL, CODEX_API_KEY
text
awf: runtime: subscription runtime refused metered credential environment: ANTHROPIC_API_KEY; the run did not start, and nothing of it is kept

Unset them in the shell you run awf from.

Where harnesses keep their state ​

awf reads each harness's own folder to find its agents' sessions, which awf logs and the usage in out.json come from, to copy a login into a sandboxed agent's home, and to keep sandboxes off it. It follows the variable the harness itself follows:

VariableHarnessDefault
CLAUDE_CONFIG_DIRclaude; its account file is .claude.json in it, else ~/.claude.json~/.claude
CODEX_HOMEcodex~/.codex
PI_CODING_AGENT_DIRpi~/.pi/agent
CURSOR_CONFIG_DIRcursor$XDG_CONFIG_HOME/cursor when XDG_CONFIG_HOME is set, else ~/.cursor

Others awf reads ​

VariableMeaningDefault
XDG_CACHE_HOMEThe skills cache is awf/skills under it (Data).~/.cache
GIT_SSH_COMMANDThe ssh command git uses to fetch a skill from a repository.ssh -o BatchMode=yes, so a fetch never stops to ask for a passphrase
HOMEWhere ~/.awf and each harness's default folder are. A codex agent given skills is kept from the shared ones in $HOME/.agents/skills.your home
DOCKER_HOSTThe docker daemon the docker sandbox uses; a unix:// socket is kept out of every box, as is /var/run/docker.sock when it is unset.docker's
NO_COLORSet to anything, awf's terminal output has no colour.colour on a terminal
HERDR_HOME, XDG_*Passed on to a Herdr server awf starts, where they move Herdr's own folder.Herdr's

Set by Herdr ​

Herdr sets these in each of its panes, and awf run --here reads them to find the session it was typed in (Calling session): HERDR_ENV, HERDR_SOCKET_PATH, HERDR_PANE_ID, HERDR_WORKSPACE_ID and HERDR_TAB_ID. It also reads the session id the calling agent's harness sets, CLAUDE_CODE_SESSION_ID, CODEX_SESSION_ID, PI_SESSION_ID or CURSOR_CONVERSATION_ID, and passes it on to the run. You don't set any of them.

What an agent doesn't get ​

Outside a sandbox an agent gets your environment, less a few names: Security lists them. One of them is a setting: CLAUDE_CODE_EFFORT_LEVEL is removed so a claude agent runs at the effort its workflow set.

Files ​

FileRead forDefault
.env in the folder you run awf inOPENROUTER_API_KEY only, when the environment doesn't set itnone
the workflow filethe workflow: awf run {file}none
--values {file}a JSON object of stage values, by stage name, to start part-way (Runs)none
--sandbox {file}a JSON sandbox spec every agent of the run works in (Sandboxes)none
~/.awf/herdr/config.tomlthe config of the Herdr sessions awf starts; awf writes it once and never overwrites it, so your edits staytoasts and sound off

awf run and awf test don't load .env as Bun otherwise would: a token in it would change how every agent logs in (Security). One exception: a run with events that awf emit or awf tick starts in the background gets the PATH it was made with, a few plain variables, and the project's .env, not your shell's environment (Hosting events). AWF_COORDINATOR_DIR and AWF_HERDR_SESSION are among the variables it keeps, so set them where the sender runs.

Everything awf writes, and where, is on Data.