AlphaAgent loads AppConfig from ~/.alpha-agent/config.yaml, environment variables, and optional .env files (python-dotenv). Implementation: alpha_agent/config/config_manager.py.
| Item | Value |
|---|---|
| Path | ~/.alpha-agent/config.yaml (alpha_agent.config.paths.CONFIG_FILE) |
| Secrets | Prefer ~/.alpha-agent/.env or provider env vars - not git-tracked YAML |
Highest precedence first (see AppConfig.load):
- CLI
--modelonchat/run ALPHA_AGENT_MODELllm.modelinconfig.yaml
Use LiteLLM-style ids (e.g. gemini/gemini-3.1-flash-lite-preview, openai/gpt-4o-mini).
resolve_api_key_for_modelinllm_env.py: provider-specific env (e.g.GEMINI_API_KEYforgemini/...), thenALPHA_AGENT_API_KEY- Optional
llm.api_keyin YAML - loaded with a warning (discouraged)
Local providers (ollama, lm_studio, vllm, …) may return empty key unless you set a generic override.
Loaded so process environment wins over files:
~/.alpha-agent/.env- Project
.envin the current working directory
Implemented in AppConfig._load_dotenv_files (override=False).
- YAML
debug: boolean (or string1/true/yes/on) - CLI
--debugonchat/run: when passed, forcesdebug=Trueover YAML (debug_override)
Set at CLI load time: alpha-agent chat --mode / run --mode (safe, dev, unrestricted). Stored on AppConfig.security_mode for that process. Mid-session changes use /mode (updates in-memory config + new SecurityManager).
| Field | Default / notes |
|---|---|
provider |
Optional; derived from model prefix when omitted |
model |
Default gemini/gemini-3.1-flash-lite-preview |
api_base |
Optional URL (http/https) |
temperature |
0.7 (0–2) |
max_tokens |
8192 |
context_window |
32000 |
stream |
false |
api_key |
Resolved at runtime; excluded from normal model dump persistence |
| Field | Purpose |
|---|---|
config_version |
Integer; drives migrate_config |
workspace |
Tool filesystem sandbox: ~/.alpha-agent/workspace (set at load) |
orchestra |
Agent-owned data root: ~/.alpha-agent/workspace/AgentOrchestra (history, memory, logs, agents, plugins, exports, CLI history file) |
agents_path |
Agent definitions directory (under orchestra/agents by default) |
llm |
LLMConfig |
default_agent |
e.g. alpha |
security_mode |
From CLI when loading |
debug |
Verbose tracebacks (handle_error, etc.) |
rate_limit |
Concurrency / sliding window for LLM |
retry |
Backoff for retries / dispatch |
routing |
dict[str, str]: regex pattern → agent id (persisted; see RoutingTable) |
AppConfig.save() (optional): reads YAML, writes merged routing and config_version floor, preserves other keys - used after /route.
CURRENT_CONFIG_VERSIONis 2 inalpha_agent/config/migrations.py.- On load, file’s
config_versionselectsmigrate_configsteps (e.g. v1 → v2 normalizes legacyllm.modeltoprovider/model). - Migrations are idempotent.
- New optional keys (e.g.
debug,routing) do not require a bump if defaults apply via Pydantic.
YAML example:
routing:
"^debug\\s": beta
"rewrite this": researcherBindings are loaded at ChatLoop start via RoutingTable.load_from_config. /route updates RAM, config.routing, and AppConfig.save(). A catch-all .* tied only to YAML default_agent may be skipped so CLI --agent remains the session default; see routing.py.
alpha-agent init -y/--no-onboarding: no interactive prompts; directories + default config only.alpha-agent --reset --reset-yes: non-interactive full wipe of~/.alpha-agent(no Y/N prompt); then runinitagain.--no-onboardingonchat,run,sessions list,tools list: accepted for forward compatibility (AppConfig.load).- If stdin is not a TTY,
_non_interactivetreats flows as non-interactive where applicable.
Set ALPHA_AGENT_MODEL and at least one API key env var (or local model) before AppConfig.load in CI.
config_version: 2
default_agent: alpha
debug: false
llm:
model: gemini/gemini-3.1-flash-lite-preview
provider: gemini
temperature: 0.7
max_tokens: 8192
context_window: 32000
stream: false
# api_base: https://example.com/v1 # optional
rate_limit:
enabled: true
max_concurrency: 5
max_requests_per_window: 30
window_seconds: 60
retry:
max_retries: 3
backoff_base_seconds: 5.0
backoff_multiplier: 3.0
routing:
"fix.*": alphaDo not commit real llm.api_key values.