Skip to main content
Configuration is yaml, layered:
The project file wins per key, not per section: a key it leaves unset falls through to the global file, then to defaults. Lists merge instead of replacing: permission rules, MCP tool filters, and MCP servers union across both files, the permission mode takes the stricter of the two, and schedules merge by name so a repo can override one cadence without dropping the rest. A malformed yaml file is an error, never silently skipped. 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

Model and endpoint

The model, endpoint, and reasoning effort live under review:. The name is historical; every command reads them, chat included. aster init, aster model use, and aster provider use all write here.
Any OpenAI-compatible endpoint works: point base_url at it 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. ASTER_MODEL and ASTER_BASE_URL outrank this file. model: auto picks from OpenRouter’s live benchmark rankings instead of a fixed id (OpenRouter endpoints only). The tier comes from ASTER_ROUTER_TIER (cheap | balanced | strong, default balanced), picks are cached for a day in ~/.aster/model-rankings.json, and aster model router shows what each tier resolves to.

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

The switch and the file it reads; the routing policy itself lives in mom.yaml.

providers

Only model ids travel over this: endpoints and key vars ship in the binary and are never taken from a fetched file.

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.