> ## Documentation Index
> Fetch the complete documentation index at: https://docs.bor-os.io/llms.txt
> Use this file to discover all available pages before exploring further.

# Configuration reference

# Configuration Reference

Every config field and environment variable. For a guided version, see [Configuration](../getting-started/configuration.md).

## `config.json`

Per-presence, at `os-data/presences/<id>/config.json` (or `os-data/config.json` single-tenant).

| Field             | Type    | Purpose                                                                          |
| ----------------- | ------- | -------------------------------------------------------------------------------- |
| `defaultProvider` | string  | Active provider id: `bor`, `anthropic`, `openai`, `gemini`, `openai-compatible`. |
| `providers`       | object  | Map of `providerId → { apiKey, model, baseUrl }`.                                |
| `aiName`          | string  | What the presence calls itself.                                                  |
| `personality`     | string  | Persona injected into the system prompt.                                         |
| `baseTheme`       | string  | Active theme id.                                                                 |
| `avatar`          | object  | DiceBear avatar config.                                                          |
| `onboarded`       | boolean | Whether onboarding completed.                                                    |

> API keys live here until the planned Keychain migration. Treat `os-data/` as sensitive.

## Environment variables

### Networking & data

| Variable          | Default    | Purpose                                                              |
| ----------------- | ---------- | -------------------------------------------------------------------- |
| `PORT`            | `7777`     | Runtime HTTP port.                                                   |
| `BOR_DATA_DIR`    | `os-data/` | Per-presence data root (the v2 host sets `os-data/presences/<id>/`). |
| `BOR_RUNTIME_URL` | —          | Attach the v2 host to an already-running runtime.                    |
| `BOR_PRESENCE_ID` | —          | The presence id this runtime serves.                                 |

### Chat loop

| Variable                     | Purpose                                        |
| ---------------------------- | ---------------------------------------------- |
| `BOR_CHAT_MAX_PASSES`        | Max tool-use passes per turn (safety ceiling). |
| `BOR_CHAT_STREAM_ATTEMPTS`   | Stream retry attempts.                         |
| `BOR_TOOL_MAX_ATTEMPTS`      | Per-tool retry attempts on transient failure.  |
| `BOR_STREAM_IDLE_TIMEOUT_MS` | Idle timeout before a stalled stream retries.  |

### LLM harness

| Variable           | Purpose                                                  |
| ------------------ | -------------------------------------------------------- |
| `BOR_LEGACY_LLM=1` | Force the legacy XML-tool harness (the default path).    |
| `BOR_NEW_LLM=1`    | Opt into the native-tool-calling harness (experimental). |

### Browser

| Variable                         | Purpose                                   |
| -------------------------------- | ----------------------------------------- |
| `BOR_BROWSER_HEADLESS=1`         | Run the user-facing Browser app headless. |
| `BOR_BROWSER_EXECUTABLE_PATH`    | Specific Chrome/Chromium binary.          |
| `BOR_BROWSER_CHANNEL`            | e.g. `chrome`.                            |
| `BOR_BROWSER_DATA_DIR`           | Browser data root.                        |
| `BOR_BROWSER_USER_DATA_DIR`      | The automation profile dir.               |
| `BOR_USER_BROWSER_USER_DATA_DIR` | The user-facing Browser profile dir.      |
| `BOR_USER_BROWSER_DOWNLOADS_DIR` | Downloads dir for the Browser app.        |
| `BOR_BROWSER_OUTPUT_DIR`         | MCP browser output dir.                   |

### MCP

| Variable                  | Default                        | Purpose                     |
| ------------------------- | ------------------------------ | --------------------------- |
| `BOR_MCP_MARKETPLACE_URL` | `https://api.cline.bot/v1/mcp` | Marketplace catalog source. |

### Host control (v2)

| Variable                 | Purpose                                                                  |
| ------------------------ | ------------------------------------------------------------------------ |
| `BOR_HOST_CONTROL_URL`   | The Electron host's local control server URL (runtime → host callbacks). |
| `BOR_HOST_CONTROL_TOKEN` | Auth token for the control server.                                       |

## Config files (non-JSON)

| Path                               | Purpose                                                 |
| ---------------------------------- | ------------------------------------------------------- |
| `.bor/mcp.json`                    | Per-presence MCP servers (marketplace + AI write here). |
| `.bed-of-roses/mcp/servers.json`   | Shared MCP config.                                      |
| `~/.bed-of-roses/mcp/servers.json` | Global MCP config.                                      |
| `.bed-of-roses/skills/`            | Project skills (Markdown).                              |
| `~/.bed-of-roses/skills/`          | Global skills.                                          |
| `design-guideline/<theme>.md`      | Theme handbooks.                                        |
| `server/api-registry.md`           | Public web APIs the model is told about.                |

See [Storage & data](../concepts/storage-and-data.md) for the full directory map.
