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.
# yaml-language-server: $schema=https://docs.codeflower.app/schema/config.jsonengine: apptainerskills: [~/lab-skills]agents: claude: api_key_env: ANTHROPIC_API_KEY codex: model: gpt-6.1-sol effort: highclient: wrap_up_minutes: 15tunnel: eu_only: truemcp_servers: docs: url: https://mcp.example.org/mcpWhen 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.
All keys
Section titled “All keys”| Key | Type | Description |
|---|---|---|
agents | section, by agent | Settings of each agent, by its id. |
agents.<agent>.api_key | string | The 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_env | string | The environment variable on this computer that holds the agent's API key. |
agents.<agent>.api_key_file | string | A file on this computer that holds the agent's API key. |
agents.<agent>.effort | string | The reasoning effort `codeflower task` asks for (the agent's thought level, e.g. low, medium or high). |
agents.<agent>.model | string | The model `codeflower task` asks the agent for, as the agent names it; the task stops when the agent has no such model. |
agents.<agent>.options | map of strings | Other settings of the agent for `codeflower task`, by the ids the agent gives them (as with `--option ID=VALUE`). |
client | section | Configures codeflower client. |
client.connect_only | boolean | Never start sandboxes here, e.g. on a login node. |
client.notifications | boolean | Tell the desktop when a chat waits for an answer or ends its turn (default true). |
client.tray | boolean | Show an icon in the system tray or menu bar where there is one (default true). |
client.wrap_up_minutes | integer | How long quitting waits at most for the chats in the client's sandboxes to wrap up (default 10). |
engine | string | Auto, docker, podman or apptainer, for the sandboxes the command line starts when neither --engine nor $CODEFLOWER_ENGINE is set. |
icons | section | Configures the icon gallery. |
icons.folder | string | Replaces <config dir>/icons; "off" mounts no gallery. |
image | string | The 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. |
images | section | Configures the image model codeflower-sketch generates icons with. |
images.api_key | string | The provider's API key, written here (at most one of api_key, api_key_env and api_key_file). |
images.api_key_env | string | The environment variable on this computer that holds the key. |
images.api_key_file | string | A file on this computer that holds the key. |
images.model | string | Replaces the provider's default model. |
images.provider | string | Openai or google. An isolated sandbox may reach its API. |
isolate_network | boolean | Start the command line's sandboxes as with --isolate-network. |
mcp_servers | section, by name | The MCP servers given to the agent of every sandbox, by name. |
mcp_servers.<name>.args | list of strings | The command's arguments. |
mcp_servers.<name>.command | string | The program that runs the server in the sandbox (stdio). |
mcp_servers.<name>.env | map of strings | Environment variables for the command. |
mcp_servers.<name>.headers | map of strings | HTTP headers sent to a server at a URL, e.g. Authorization. |
mcp_servers.<name>.transport | string | Of a server at a URL: http (streamable HTTP, the default) or sse, which Codex and dsh do not support. |
mcp_servers.<name>.url | string | The address of a server that runs elsewhere, instead of a command. |
plugins | section, a list by agent | The agents' own plugins every sandbox gets, by agent id. |
plugins.<agent>[].enabled | boolean | Defaults to true; a project can switch an entry off. |
plugins.<agent>[].source | string | Agent-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. |
skills | list of strings | More folders of skills, mounted read-only in every sandbox besides <config dir>/skills; relative paths are in the config directory. |
tunnel | section | Configures remote access through a code flower tunnel (`codeflower tunnel login`). |
tunnel.eu_only | boolean | Routes the tunnel only through EU datacenters. Unset until the first `codeflower tunnel login` asks. |
tunnel.hardened | boolean | Limits each paired browser to the workers chosen when pairing, and runs the connector as a separate, confined process. |
tunnel.manage | boolean | Lets remote browsers browse folders, start sandboxes and forget them; without it they use and stop existing sandboxes only. |
tunnel.url | string | The tunnel; the hosted one when empty. |
Agent ids: claude, codex, dsh, opencode.
Some keys apply to part of the app only:
engine,imageandisolate_networkapply 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,effortandoptionsapply tocodeflower task.
Next to config.yaml
Section titled “Next to config.yaml”| 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 |