User and Project Settings
Aether loads settings from two locations — user level and project level — and merges them into a single resolved configuration.
User settings
Section titled “User settings”Directory$HOME/.aether/
- settings.json — Shared across all projects
User-level settings live in $HOME/.aether/settings.json. Set the AETHER_HOME environment variable to use a different directory:
export AETHER_HOME=/custom/path/.aetherGenerate a user-level settings file with the interactive wizard:
aether settings init --userPath resolution
Section titled “Path resolution”Paths in user settings resolve from the Aether home directory ($HOME/.aether by default):
{ "agents": [ { "name": "Planner", "description": "Plans work across any workspace", "model": "anthropic:claude-sonnet-4-5-20250929", "userInvocable": true, "prompts": ["planner/SYSTEM.md"], "mcps": ["mcp.json"] } ]}Here planner/SYSTEM.md resolves to $HOME/.aether/planner/SYSTEM.md, and mcp.json resolves to $HOME/.aether/mcp.json.
Project settings
Section titled “Project settings”Directorymy-project/.aether/
- settings.json — Specific to this project
Project-level settings are optional and live in my-project/.aether/settings.json.
Generate a project-level settings file with the interactive wizard:
aether settings init --projectPath resolution
Section titled “Path resolution”Plain relative paths in project settings resolve from the workspace root (the directory containing .aether/):
{ "agents": [ { "name": "Build", "description": "Builds features", "model": "anthropic:claude-sonnet-4-5-20250929", "userInvocable": true, "prompts": ["AGENTS.md"], "mcps": [".aether/mcp.json"] } ]}Here AGENTS.md resolves to <workspace-root>/AGENTS.md.
Variable expansion
Section titled “Variable expansion”All resource paths support $VAR / ${VAR} variable expansion. This lets user-level settings reference project files without knowing the project’s location.
Use this for prompt files and MCP config files that should be loaded up front. Do not use prompts to load read-triggered rules; rule artifacts are loaded automatically by the MCP servers when their read globs match.
${WORKSPACE}
Section titled “${WORKSPACE}”${WORKSPACE} always resolves to the current workspace root — the project directory you launched Aether from.
{ "agents": [ { ... "prompts": [ "BUILD.md", { "type": "file", "path": "${WORKSPACE}/AGENTS.md", "optional": true } ], "mcps": [ "mcp.json", { "type": "file", "path": "${WORKSPACE}/.aether/mcp.json", "optional": true } ] } ]}In this example:
BUILD.mdloads from$HOME/.aether/BUILD.md(user home).${WORKSPACE}/AGENTS.mdloads from the current project’s root.${WORKSPACE}/.aether/mcp.jsonloads the project’s MCP config.- The
optionalflag means the agent still works in projects that don’t have these files.
Inline settings
Section titled “Inline settings”Settings can be passed directly via the --settings-json CLI flag. This bypasses file loading and uses the same schema:
aether headless \ --settings-json '{ "agent": "Hello", "agents": [ { "name": "Hello", "description": "A minimal hello world agent", "model": "zai:glm-5.1", "userInvocable": true, "prompts": [ { "type": "text", "text": "You are a friendly assistant." } ] } ] }' \ "Say hello"Inline settings are merged on top of file-based settings using the same rightmost-wins rules.
Typical patterns
Section titled “Typical patterns”Shared agent with project overrides
Section titled “Shared agent with project overrides”Define a general-purpose agent in user settings and let projects extend it:
{ "agents": [ { "name": "Build", "description": "Builds features and fixes bugs", "model": "anthropic:claude-sonnet-4-5-20250929", "reasoningEffort": "high", "userInvocable": true, "prompts": [ "BUILD.md", { "type": "file", "path": "${WORKSPACE}/AGENTS.md", "optional": true } ], "mcps": [ { "type": "file", "path": "mcp.json", "proxy": true }, { "type": "file", "path": "${WORKSPACE}/.aether/mcp.json", "optional": true, "proxy": true } ] } ]}This agent loads its base system prompt and MCP config from the user’s Aether home, then optionally adds project-level instructions and MCP servers when they exist.
Team-shared project config
Section titled “Team-shared project config”Commit .aether/settings.json and .aether/mcp.json to version control so every team member gets the same agent configuration:
{ "agent": "Build", "agents": [ { "name": "Build", "description": "Builds features for this project", "model": "anthropic:claude-sonnet-4-5-20250929", "userInvocable": true, "prompts": [".aether/BUILD.md", "AGENTS.md"], "mcps": [".aether/mcp.json"] } ]}