Configuration is yaml, layered:
Project values override global values override defaults, section by section. Precedence for the things that can also come from elsewhere: CLI flags > environment variables > aster.yaml > defaults. Keys never live in yaml. They go in .env files (~/.aster/.env global, .env in the repo local), loaded into the environment at startup.

Managing from the shell

aster config list prints each setting with the layer it came from, which is the fastest way to answer “why is this value what it is”.

Sections

provider and model

Any OpenAI-compatible endpoint works: point provider at a base URL and set a key var named for it. A key var named for the endpoint (ANTHROPIC_API_KEY, OPENROUTER_API_KEY) beats the shared ASTER_API_KEY.

permissions

See Permissions for the full language.

agent

review

See Review for every key.

mcp

See MCP servers for the full section.

schedules

See Schedules.

agents

Sub-agent limits: max_concurrent, max_per_turn, agent_timeout_secs, collector_model. See Sub-agents.

ui

mom.yaml: model routing per turn

A mom.yaml in the repo root or ~/.aster/ routes each turn to a model by intent. Entries describe intent (power, thinking, prefer), switch rules fire on conditions like planning, stuck, looping, model-down, and a cheap router judges the rest. Switches show as mom: notes in chat.
Spec: specs/mom.md in the main repository. Logs: ~/.aster/logs/mom-router.jsonl and mom-switches.jsonl.

Environment variables

See Environment variables for the full list. The two that outrank the yaml file: ASTER_MODEL and ASTER_BASE_URL, both reported by aster status when set.