Skip to content

config.yaml

The app’s settings are in config.yaml in its config directory: ~/.codeflower, or the folder given with --config or CODEFLOWER_CONFIG. Every key is optional; without the file, everything has its default. Unknown keys are an error, so a typo does not go unnoticed. On a cluster, it is the file on the cluster, where codeflower runs.

~/.codeflower/config.yaml
# yaml-language-server: $schema=https://docs.codeflower.app/schema/config.json
engine: apptainer
skills: [~/lab-skills]
agents:
claude:
api_key_env: ANTHROPIC_API_KEY
codex:
model: gpt-6.1-sol
effort: high
client:
wrap_up_minutes: 15
tunnel:
eu_only: true
mcp_servers:
docs:
url: https://mcp.example.org/mcp

When the file holds a secret (api_key, or MCP env or headers), it must not be readable by other users: chmod 600 ~/.codeflower/config.yaml.

KeyTypeDescription
agentssection, by agentSettings of each agent, by its id.
agents.<agent>.api_keystringThe agent's API key, written here. Set at most one of api_key, api_key_env and api_key_file; config.yaml must then not be readable by other users. A subscription login in the project is kept.
agents.<agent>.api_key_envstringThe environment variable on this computer that holds the agent's API key.
agents.<agent>.api_key_filestringA file on this computer that holds the agent's API key.
agents.<agent>.effortstringThe reasoning effort `codeflower task` asks for (the agent's thought level, e.g. low, medium or high).
agents.<agent>.modelstringThe model `codeflower task` asks the agent for, as the agent names it; the task stops when the agent has no such model.
agents.<agent>.optionsmap of stringsOther settings of the agent for `codeflower task`, by the ids the agent gives them (as with `--option ID=VALUE`).
clientsectionConfigures codeflower client.
client.connect_onlybooleanNever start sandboxes here, e.g. on a login node.
client.notificationsbooleanTell the desktop when a chat waits for an answer or ends its turn (default true).
client.traybooleanShow an icon in the system tray or menu bar where there is one (default true).
client.wrap_up_minutesintegerHow long quitting waits at most for the chats in the client's sandboxes to wrap up (default 10).
enginestringAuto, docker, podman or apptainer, for the sandboxes the command line starts when neither --engine nor $CODEFLOWER_ENGINE is set.
iconssectionConfigures the icon gallery.
icons.folderstringReplaces <config dir>/icons; "off" mounts no gallery.
imagestringThe sandbox image (a Docker/Podman image name or an Apptainer .sif file) for the sandboxes the command line starts when neither --image nor $CODEFLOWER_IMAGE is set.
imagessectionConfigures the image model codeflower-sketch generates icons with.
images.api_keystringThe provider's API key, written here (at most one of api_key, api_key_env and api_key_file).
images.api_key_envstringThe environment variable on this computer that holds the key.
images.api_key_filestringA file on this computer that holds the key.
images.modelstringReplaces the provider's default model.
images.providerstringOpenai or google. An isolated sandbox may reach its API.
isolate_networkbooleanStart the command line's sandboxes as with --isolate-network.
mcp_serverssection, by nameThe MCP servers given to the agent of every sandbox, by name.
mcp_servers.<name>.argslist of stringsThe command's arguments.
mcp_servers.<name>.commandstringThe program that runs the server in the sandbox (stdio).
mcp_servers.<name>.envmap of stringsEnvironment variables for the command.
mcp_servers.<name>.headersmap of stringsHTTP headers sent to a server at a URL, e.g. Authorization.
mcp_servers.<name>.transportstringOf a server at a URL: http (streamable HTTP, the default) or sse, which Codex and dsh do not support.
mcp_servers.<name>.urlstringThe address of a server that runs elsewhere, instead of a command.
pluginssection, a list by agentThe agents' own plugins every sandbox gets, by agent id.
plugins.<agent>[].enabledbooleanDefaults to true; a project can switch an entry off.
plugins.<agent>[].sourcestringAgent-neutral: marketplace:NAME@CATALOG, github:OWNER/REPO[#REF], git:URL[#REF], npm:PACKAGE@VERSION, url:https://….zip|.tgz[#sha256=…] or path:/absolute; each agent takes the kinds its descriptor names.
skillslist of stringsMore folders of skills, mounted read-only in every sandbox besides <config dir>/skills; relative paths are in the config directory.
tunnelsectionConfigures remote access through a code flower tunnel (`codeflower tunnel login`).
tunnel.eu_onlybooleanRoutes the tunnel only through EU datacenters. Unset until the first `codeflower tunnel login` asks.
tunnel.hardenedbooleanLimits each paired browser to the workers chosen when pairing, and runs the connector as a separate, confined process.
tunnel.managebooleanLets remote browsers browse folders, start sandboxes and forget them; without it they use and stop existing sandboxes only.
tunnel.urlstringThe tunnel; the hosted one when empty.

Agent ids: claude, codex, dsh, opencode.

Some keys apply to part of the app only:

  • engine, image and isolate_network apply to the sandboxes the command line starts (interactive, run, task). The app’s window has its own choices in its start form.
  • agents.<agent>.model, effort and options apply to codeflower task.
Path What
skills/ skills mounted read-only in every sandbox
icons/ the icon gallery
tunnel/ this computer’s remote access keys and paired browsers (private)
client.json, client.log the running app’s address and its log