# Configuration Resolution Chain CleverAgents uses a multi-level configuration resolution chain that determines the effective value for each configuration key. This document describes the resolution order, all registered configuration keys, their types, defaults, and environment variable mappings. ## Resolution Order Values are resolved from **highest to lowest** priority. The first level that provides a non-`None` value wins: | Priority | Level | Description | |----------|------------------|------------------------------------------------------| | 1 | **CLI flag** | Value passed explicitly via `--key=value` on the CLI | | 2 | **Env var** | Environment variable (`CLEVERAGENTS_
_`) | | 3 | **Project scope**| Per-project override in `[project.""]` TOML table | | 4 | **Global config**| Value in `~/.cleveragents/config.toml` | | 5 | **Default** | Built-in default from the key registry | ### Example ``` $ export CLEVERAGENTS_CORE_LOG_LEVEL=WARNING $ agents config set core.log_level DEBUG # writes to global config $ agents config get core.log_level # -> WARNING (env var wins over global config) ``` ## Environment Variable Convention All registered keys map to environment variables following the pattern: ``` CLEVERAGENTS_
_ ``` Where `
` and `` are uppercased. For example: - `core.log_level` -> `CLEVERAGENTS_CORE_LOG_LEVEL` - `plan.max_retries` -> `CLEVERAGENTS_PLAN_MAX_RETRIES` - `provider.temperature` -> `CLEVERAGENTS_PROVIDER_TEMPERATURE` ## Configuration Keys ### `core.*` — Core Runtime | Key | Type | Default | Env Var | Project-Scopable | Description | |----------------------|--------|------------------------------|------------------------------------|-------------------|-------------------------------| | `core.log_level` | `str` | `INFO` | `CLEVERAGENTS_CORE_LOG_LEVEL` | Yes | Logging verbosity level | | `core.debug_enabled` | `bool` | `false` | `CLEVERAGENTS_CORE_DEBUG_ENABLED` | Yes | Enable debug mode | | `core.env` | `str` | `development` | `CLEVERAGENTS_CORE_ENV` | Yes | Runtime environment name | | `core.data_dir` | `str` | `data` | `CLEVERAGENTS_CORE_DATA_DIR` | Yes | Base data directory path | | `core.database_url` | `str` | `sqlite:///cleveragents.db` | `CLEVERAGENTS_CORE_DATABASE_URL` | No | Primary database URL | | `core.server_host` | `str` | `0.0.0.0` | `CLEVERAGENTS_CORE_SERVER_HOST` | No | Server bind host | | `core.server_port` | `int` | `8080` | `CLEVERAGENTS_CORE_SERVER_PORT` | No | Server bind port | ### `plan.*` — Plan Execution | Key | Type | Default | Env Var | Project-Scopable | Description | |------------------------|--------|---------|--------------------------------------|-------------------|---------------------------------------| | `plan.auto_apply` | `bool` | `false` | `CLEVERAGENTS_PLAN_AUTO_APPLY` | Yes | Auto-apply plans on completion | | `plan.max_retries` | `int` | `3` | `CLEVERAGENTS_PLAN_MAX_RETRIES` | Yes | Maximum plan retry count | | `plan.timeout_seconds` | `int` | `300` | `CLEVERAGENTS_PLAN_TIMEOUT_SECONDS` | Yes | Plan execution timeout in seconds | ### `provider.*` — LLM Provider | Key | Type | Default | Env Var | Project-Scopable | Description | |--------------------------|---------|---------|----------------------------------------|-------------------|-------------------------------| | `provider.default_provider` | `str` | `""` | `CLEVERAGENTS_PROVIDER_DEFAULT_PROVIDER` | No | Default LLM provider name | | `provider.default_model` | `str` | `""` | `CLEVERAGENTS_PROVIDER_DEFAULT_MODEL` | No | Default LLM model name | | `provider.temperature` | `float` | `0.7` | `CLEVERAGENTS_PROVIDER_TEMPERATURE` | Yes | LLM sampling temperature | | `provider.max_tokens` | `int` | `4096` | `CLEVERAGENTS_PROVIDER_MAX_TOKENS` | Yes | Max tokens per LLM response | ### `sandbox.*` — Sandbox Isolation | Key | Type | Default | Env Var | Project-Scopable | Description | |------------------------|--------|----------------|--------------------------------------|-------------------|---------------------------------------| | `sandbox.strategy` | `str` | `git_worktree` | `CLEVERAGENTS_SANDBOX_STRATEGY` | Yes | Default sandbox strategy | | `sandbox.auto_cleanup` | `bool` | `true` | `CLEVERAGENTS_SANDBOX_AUTO_CLEANUP` | Yes | Auto-clean sandbox after use | | `sandbox.max_age_hours`| `int` | `48` | `CLEVERAGENTS_SANDBOX_MAX_AGE_HOURS` | Yes | Max sandbox age before cleanup | ### `context.*` — Context Management | Key | Type | Default | Env Var | Project-Scopable | Description | |--------------------------------|--------|----------|-------------------------------------------------|-------------------|--------------------------------------------| | `context.max_files` | `int` | `100` | `CLEVERAGENTS_CONTEXT_MAX_FILES` | Yes | Maximum context files per session | | `context.max_tokens` | `int` | `128000` | `CLEVERAGENTS_CONTEXT_MAX_TOKENS` | Yes | Maximum context token window | | `context.auto_include_gitignore` | `bool` | `true` | `CLEVERAGENTS_CONTEXT_AUTO_INCLUDE_GITIGNORE` | Yes | Auto-include gitignore in context filtering | ### `index.*` — Vector Store Indexing | Key | Type | Default | Env Var | Project-Scopable | Description | |--------------------------|--------|---------|------------------------------------------|-------------------|---------------------------------| | `index.enabled` | `bool` | `false` | `CLEVERAGENTS_INDEX_ENABLED` | Yes | Enable vector-store indexing | | `index.backend` | `str` | `faiss` | `CLEVERAGENTS_INDEX_BACKEND` | Yes | Vector store backend name | | `index.embedding_model` | `str` | `fake` | `CLEVERAGENTS_INDEX_EMBEDDING_MODEL` | Yes | Embedding model for indexing | | `index.embedding_dimension` | `int` | `1536` | `CLEVERAGENTS_INDEX_EMBEDDING_DIMENSION` | Yes | Embedding vector dimension | ## Validation Rules ### Unknown Keys Attempting to get or set an unregistered key will produce an actionable error: ``` ValueError: Unknown configuration key: 'bogus.key'. Valid keys include: context.auto_include_gitignore, context.max_files, ... ``` ### Type Mismatches Values are coerced to the registered type. If coercion fails, an actionable error is raised: ``` TypeError: Type mismatch for key 'core.server_port': expected int, got str with value 'not_a_number'. ``` Boolean coercion accepts: `true`/`false`, `1`/`0`, `yes`/`no` (case-insensitive). ## TOML File Location The global configuration file is stored at: ``` ~/.cleveragents/config.toml ``` Parent directories are created automatically on first write. Project-scoped overrides live under `[project.""]` tables within the same file. ## Verbose Mode When `--verbose` is passed to `config get`, the full resolution chain is displayed, showing which level provided (or could provide) the value: ``` $ agents config get core.log_level --verbose Key: core.log_level Value: INFO Source: default Resolution chain (highest -> lowest priority): cli_flag -> (not set) env_var -> (not set) [CLEVERAGENTS_CORE_LOG_LEVEL] project -> (not set) global -> (not set) [~/.cleveragents/config.toml] default -> INFO <-- active ```