Skip to content
Theme:

Settings reference

AetherSettings

The root of an Aether settings file (.aether/settings.json). It selects the default agent and defines the agents, prompt sources, MCP servers, and provider overrides available to a project.

A minimal project with a single user-invocable agent:

{
"agent": "Build",
"agents": [
{
"name": "Build",
"description": "Builds features and fixes bugs",
"model": "anthropic:claude-sonnet-4-5-20250929",
"userInvocable": true
}
]
}

A fuller setup with shared prompts, an MCP source, and a provider override:

{
"agent": "Build",
"prompts": ["AGENTS.md"],
"mcps": [".aether/mcp.json"],
"providers": {
"anthropic": { "auth": "default" }
},
"agents": [
{
"name": "Build",
"description": "Builds features and fixes bugs",
"model": "anthropic:claude-sonnet-4-5-20250929",
"reasoningEffort": "high",
"userInvocable": true,
"prompts": [".aether/BUILD.md", "AGENTS.md"]
}
]
}

An encrypted file credential store using a passphrase from the environment:

{
"credentialsStore": {
"type": "encryptedFile",
"passwordEnv": "PASSWORD_ENV_VAR_NAME"
},
"agents": [
{
"name": "Build",
"description": "Builds features and fixes bugs",
"model": "anthropic:claude-sonnet-4-5-20250929",
"userInvocable": true
}
]
}
FieldTypeRequiredDefaultDescription
agentstring | nullnoName of the agent to launch by default. Must match a name in agents. When unset, Aether falls back to the first user-invocable agent.
agentsAgentConfig[]yesThe agents defined for this project. At least one agent is required.
credentialsStoreCredentialsStoreConfig | nullnoCredential storage backend for OAuth tokens. Defaults to the OS keyring when unset.
mcpsMcpSourceSpec[]noDefault MCP sources shared by all agents. An agent inherits these only when its own mcps array is empty.
promptsPromptSource[]noDefault prompt sources shared by all agents. An agent inherits these only when its own prompts array is empty.
providersRecord<string, ProviderConnectionOverride>noProvider connection overrides (credentials, base URLs, inference profiles) applied to every agent unless overridden per-agent.

AgentConfig

A single agent definition. Every agent must be invocable on at least one surface — set userInvocable, agentInvocable, or both.

A user-invocable agent with its own prompt and a read-only tool allowlist:

{
"name": "Review",
"description": "Reviews diffs and suggests changes",
"model": "anthropic:claude-sonnet-4-5-20250929",
"userInvocable": true,
"prompts": [".aether/REVIEW.md"],
"tools": { "allow": [{ "readOnly": true }, "plan__*"] }
}

A sub-agent (callable by other agents) that pins a Bedrock inference profile:

{
"name": "Search",
"description": "Answers questions about the codebase",
"model": "anthropic.claude-sonnet-4-5-20250929-v1:0",
"agentInvocable": true,
"providers": {
"bedrock": {
"inferenceProfileArn": "arn:aws:bedrock:us-west-2:000000000000:application-inference-profile/abc"
}
}
}
FieldTypeRequiredDefaultDescription
agentInvocablebooleannofalseExposes the agent to the subagents MCP server so other agents can spawn it.
contextWindowinteger | nullnoOverride for the model’s context window, in tokens. Defaults to the model’s advertised window.
descriptionstringyesHuman-readable description shown in UIs and sub-agent listings.
mcpsMcpSourceSpec[]noAgent-specific MCP sources. A non-empty array replaces the top-level mcps.
modelstringyesModel spec for this agent, in provider:model-id form. Accepts a comma-separated alloy of specs to round-robin across turns.
namestringyesAgent identifier. Names are trimmed for merge and lookup.
promptsPromptSource[]noAgent-specific prompt sources. A non-empty array replaces the top-level prompts.
providersRecord<string, ProviderConnectionOverride>noPer-agent provider overrides, merged over the top-level providers.
reasoningEffortReasoningEffort | nullnoOptional thinking budget for providers that support extended reasoning.
toolsToolFilternoPer-agent MCP tool filter (allow/deny lists).
userInvocablebooleannofalseExposes the agent as a user-selectable mode.

Constraint: at least one of userInvocable, agentInvocable must be set.

CredentialsStoreConfig

One of:

CredentialsStoreConfig (type: keyring)

FieldTypeRequiredDefaultDescription
type"keyring"yes

CredentialsStoreConfig (type: memory)

FieldTypeRequiredDefaultDescription
type"memory"yes

CredentialsStoreConfig (type: encryptedFile)

FieldTypeRequiredDefaultDescription
passwordEnvstring | nullnoEnvironment variable name to read the passphrase from. Uses AETHER_CREDENTIALS_PASSWORD when unset.
pathstring | nullnoFile path for the encrypted credential blob. Defaults to .aether/credentials.enc in the Aether home directory when unset.
type"encryptedFile"yes

HttpServerConfig

FieldTypeRequiredDefaultDescription
headersRecord<string, string>no{}Extra HTTP headers sent with every request.
proxybooleannoExpose this server’s tools through Aether’s tool proxy.
typeHttpTypeyesTransport discriminant; always http.
urlstringyesBase URL of the streamable HTTP MCP server.

HttpType

Enum. One of:

  • "http"

InMemoryServerConfig

FieldTypeRequiredDefaultDescription
argsstring[]no[]Arguments passed to the built-in (in-process) server.
inputanynonullOptional JSON input passed to the built-in server at startup.
proxybooleannoExpose this server’s tools through Aether’s tool proxy.
typeInMemoryTypeyesTransport discriminant; always in-memory.

InMemoryType

Enum. One of:

  • "in-memory"

McpServerConfig

A single MCP server. The type field selects the transport; stdio is the default and may be omitted.

A local stdio server launched as a subprocess:

{
"type": "stdio",
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-github"],
"env": { "GITHUB_TOKEN": "ghp_..." }
}

A remote streamable-HTTP server:

{
"type": "http",
"url": "https://mcp.example.com",
"headers": { "Authorization": "Bearer ..." }
}

One of:

McpSourceSpec

MCP config source — either a file path string or an inline server definition.

Point at a JSON file of servers:

".aether/mcp.json"

Reference a file with options:

{ "type": "file", "path": ".aether/mcp.json", "optional": true }

Or define servers inline:

{
"type": "inline",
"servers": {
"github": {
"type": "stdio",
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-github"]
}
}
}

One of:

McpSourceSpecObject

One of:

McpSourceSpecObject (type: file)

FieldTypeRequiredDefaultDescription
optionalbooleanno
pathResourcePathyes
proxybooleanno
type"file"yes

McpSourceSpecObject (type: inline)

FieldTypeRequiredDefaultDescription
serversRecord<string, McpServerConfig>yes
type"inline"yes

PromptSource

Authored description of a prompt source — either a file path string or a typed text, file, or glob object.

A file path (the most common form):

"AGENTS.md"

Inline text:

{ "type": "text", "text": "You are a careful, concise engineer." }

A glob that loads every matching file:

{ "type": "glob", "pattern": ".aether/prompts/*.md", "optional": true }

One of:

PromptSourceObject

One of:

PromptSourceObject (type: text)

FieldTypeRequiredDefaultDescription
textstringyesLiteral prompt text included verbatim.
type"text"yes

PromptSourceObject (type: file)

FieldTypeRequiredDefaultDescription
optionalbooleannoWhen true, a missing file is skipped instead of raising an error.
pathResourcePathyesPath to a prompt file, resolved as a resource path.
type"file"yes

PromptSourceObject (type: glob)

FieldTypeRequiredDefaultDescription
optionalbooleannoWhen true, a zero-match glob is skipped instead of raising an error.
patternResourcePathyesGlob pattern matching prompt files, resolved as a resource path.
type"glob"yes

ProviderAuthMode

Enum. One of:

  • "default"
  • "none"

ProviderConnectionOverride

Per-provider connection settings, merged over the built-in defaults.

Force first-party auth (e.g. an OAuth store) for a provider:

{ "auth": "default" }

Point a provider at a custom base URL with auth disabled:

{ "url": "https://gateway.internal/v1", "auth": "none" }

Pin a Bedrock application inference profile:

{ "inferenceProfileArn": "arn:aws:bedrock:us-west-2:000000000000:application-inference-profile/abc" }
FieldTypeRequiredDefaultDescription
authProviderAuthMode | nullnoAuthentication mode. default uses the provider’s normal credential chain; none disables auth, for local or unauthenticated servers.
inferenceProfileArnstring | nullnoAWS Bedrock application inference profile ARN to route requests through.
urlstring | nullnoBase URL override for the provider’s API endpoint.

ReasoningEffort

Enum. One of:

  • "low"
  • "medium"
  • "high"
  • "xhigh"

ResourcePath

A path with optional $VAR / ${VAR} expansion. ${WORKSPACE} resolves to the workspace root; other names fall through to process env. Plain relative paths resolve against the workspace root at use time.

Type: string

SseServerConfig

FieldTypeRequiredDefaultDescription
headersRecord<string, string>no{}Extra HTTP headers sent with every request.
proxybooleannoExpose this server’s tools through Aether’s tool proxy.
typeSseTypeyesTransport discriminant; always sse.
urlstringyesBase URL of the Server-Sent Events MCP server.

SseType

Enum. One of:

  • "sse"

StdioServerConfig

FieldTypeRequiredDefaultDescription
argsstring[]no[]Command-line arguments passed to the executable.
commandstringyesExecutable launched to run the MCP server over stdio.
envRecord<string, string>no{}Environment variables set for the server process.
proxybooleannoExpose this server’s tools through Aether’s tool proxy.
typeStdioTypeno"stdio"Transport discriminant; always stdio.

StdioType

Enum. One of:

  • "stdio"

ToolAnnotationMatcher

FieldTypeRequiredDefaultDescription
destructiveboolean | nullno
idempotentboolean | nullno
openWorldboolean | nullno
readOnlyboolean | nullno

ToolFilter

Filter for restricting which tools an agent can use.

Supports allow (allowlist) and deny (blocklist) with name patterns and MCP annotation matchers. If both are set, allow is applied first, then deny removes from the result. An empty filter (the default) allows all tools.

Allow specific tools by name:

{ "allow": ["read_file", "grep", "find"] }

Allow tools annotated as read-only by their MCP server:

{ "allow": [{ "readOnly": true }] }

Combine tool matchers with exact or trailing-* name patterns:

{ "allow": [{ "readOnly": true }, "plan__*"], "deny": ["coding__web_*"] }

Deny always wins over allow:

{ "allow": [{ "readOnly": true }], "deny": [{ "openWorld": true }] }

Annotation matcher fields are readOnly, destructive, idempotent, and openWorld. Missing tool annotations or missing annotation fields do not receive default boolean values and do not match.

FieldTypeRequiredDefaultDescription
allowToolMatcher[]noIf non-empty, only tools matching these patterns or annotations are allowed.
denyToolMatcher[]noTools matching these patterns or annotations are removed.

ToolMatcher

One of: