diff --git a/packages/website/src/content/docs/aether/built-in-servers/plan.mdx b/packages/website/src/content/docs/aether/built-in-servers/plan.mdx
index c74ff6f2..9c21604a 100644
--- a/packages/website/src/content/docs/aether/built-in-servers/plan.mdx
+++ b/packages/website/src/content/docs/aether/built-in-servers/plan.mdx
@@ -49,7 +49,7 @@ The server advertises one MCP prompt named `plan`. It accepts one required `ARGU
## Submit command override
-Any trailing args after plan flags are treated as an external submit command. When `submit_plan` is called, Aether appends the resolved absolute plan path as the final command argument and returns the command's stdout as feedback.
+Any trailing args after plan flags are treated as an external submit command. When `submit_plan` is called, the plan server appends the resolved absolute plan path as the final command argument and returns the command's stdout as feedback.
```json title=".aether/mcp.json"
{
@@ -78,7 +78,7 @@ Without a submit command, `submit_plan` uses MCP elicitation and the client disp
| Field | Type | Description |
| ---------- | -------- | ------------------------------------------------------------------------ |
-| `planName` | `string` | Stable plan identifier using only letters, numbers, dashes, underscores. |
+| `planName` | `string` | Stable plan identifier using only letters, numbers, dashes, and underscores. Must be non-empty and must not start or end with a dash or underscore. |
| `content` | `string` | Markdown plan body. |
### Output
@@ -139,7 +139,7 @@ Each entry in `edits` is a `FileEdit`:
| Field | Type | Description |
| ---------- | --------- | ----------------------------------------------------------------------------------------------- |
| `approved` | `boolean` | `true` when the reviewer approved the plan. |
-| `feedback` | `string` | Present when the reviewer requested changes or when an external submit command returned stdout. |
+| `feedback` | `string` | Present when the reviewer denies with feedback or when an external submit command returned stdout. |
### Example request
@@ -168,5 +168,5 @@ Each entry in `edits` is a `FileEdit`:
1. The planner calls `write_plan` with a stable plan name, such as `feature`.
2. The planner calls `submit_plan` with the same `planName`.
-3. The client shows an approve / request-changes review form with the rendered markdown.
+3. The client shows an approve / deny review form with the rendered markdown.
4. If changes are requested, the planner calls `edit_plan` and then `submit_plan` again.
diff --git a/packages/website/src/content/docs/aether/built-in-servers/subagents.mdx b/packages/website/src/content/docs/aether/built-in-servers/subagents.mdx
index 044198f0..02be914c 100644
--- a/packages/website/src/content/docs/aether/built-in-servers/subagents.mdx
+++ b/packages/website/src/content/docs/aether/built-in-servers/subagents.mdx
@@ -18,7 +18,7 @@ The `subagents` server lets one agent delegate work to other configured agents.
}
```
-`--project-root` loads `.aether/settings.json` from that directory. `--dir` is accepted as an alias. When omitted, the server uses `.`.
+`--project-root` sets the directory sub-agents resolve paths against. When run as a standalone stdio server, it loads `.aether/settings.json` from that directory to resolve agents. When wired in-memory (as above), agents come from Aether's injected agent registry instead. `--dir` is accepted as an alias. When omitted, the server uses `.`.
## Available sub-agents
diff --git a/packages/website/src/content/docs/aether/introduction.mdx b/packages/website/src/content/docs/aether/introduction.mdx
index 73af9210..e0ae7d0f 100644
--- a/packages/website/src/content/docs/aether/introduction.mdx
+++ b/packages/website/src/content/docs/aether/introduction.mdx
@@ -38,13 +38,13 @@ aether headless "Explain the main function in this project"
##### Rust
-Ather agents can be defined and controlled via a Rust crate:
+Aether agents can be defined and controlled via a Rust crate:
##### TypeScript
-Aether agents can be programatically defined and controlled via a TypeScript SDK:
+Aether agents can be programmatically defined and controlled via a TypeScript SDK:
@@ -62,13 +62,13 @@ Some agents are minimal, others are "batteries-included". Aether is **modular**;
Minimal agents are great until you have to ["draw the rest of the f-ing owl"](https://knowyourmeme.com/memes/how-to-draw-an-owl). Batteries-included agents are great until you need _more control_ and end up fighting the prompts and tools that were hardcoded into the harness.
-Aether gives you the best of both worlds. Your agent starts as a blank slate with no system prompt or tools. Then you add only what you need via 1st-party extentsions for fileystem tools, skills, sub-agents, [LSP](https://microsoft.github.io/language-server-protocol/) integration and more. You're not left to draw the "owl" by yourself.
+Aether gives you the best of both worlds. Your agent starts as a blank slate with no system prompt or tools. Then you add only what you need via 1st-party extensions for filesystem tools, skills, sub-agents, [LSP](https://microsoft.github.io/language-server-protocol/) integration and more. You're not left to draw the "owl" by yourself.
#### MCP, done better
Aether agents get tools _exclusively_ via [MCP](https://modelcontextprotocol.io/docs/getting-started/intro) servers . This makes Aether easy to extend in _any_ language you want.
-MCP has a bad rap for "wasting tokens" because many MCP clients dump tool definitions directly into context. Aether _doesn't_ do that. It has token-efficient progessive tool discovery built-in. So you don't need to worry about MCP vs CLIs.
+MCP has a bad rap for "wasting tokens" because many MCP clients dump tool definitions directly into context. Aether _doesn't_ do that. It has token-efficient progressive tool discovery built-in. So you don't need to worry about MCP vs CLIs.
#### ACP-1st Architecture
diff --git a/packages/website/src/content/docs/aether/running/headless.mdx b/packages/website/src/content/docs/aether/running/headless.mdx
index 5b2d7238..e287f4ce 100644
--- a/packages/website/src/content/docs/aether/running/headless.mdx
+++ b/packages/website/src/content/docs/aether/running/headless.mdx
@@ -20,7 +20,7 @@ aether headless [OPTIONS] [PROMPT]...
If prompt words are provided, Aether joins them with spaces. If no prompt is provided and stdin is not a TTY, Aether reads stdin, trims it, and uses that as the prompt.
```bash
-git diff --staged | aether headless "Review these changes"
+git diff --staged | aether headless
```
## Agent selection
diff --git a/packages/website/src/content/docs/aether/settings/overview.mdx b/packages/website/src/content/docs/aether/settings/overview.mdx
index c06f2a31..3f450d23 100644
--- a/packages/website/src/content/docs/aether/settings/overview.mdx
+++ b/packages/website/src/content/docs/aether/settings/overview.mdx
@@ -29,7 +29,7 @@ Aether uses JSON for configuration. **Agents**, along with their **models** (LLM
Settings can be defined at the **user** level (`$HOME/.aether/settings.json`), the **project** level (`.aether/settings.json`), or passed inline to the CLI via `--settings-json`. User and project settings are merged, with project-level taking priority in the case of a collision.
-You can boostrap user-level or project-level settings with a single command:
+You can bootstrap user-level or project-level settings with a single command:
```bash
# Generate a user-level settings file
diff --git a/packages/website/src/content/docs/aether/settings/user-project-settings.mdx b/packages/website/src/content/docs/aether/settings/user-project-settings.mdx
index 3a8e04aa..c96fde86 100644
--- a/packages/website/src/content/docs/aether/settings/user-project-settings.mdx
+++ b/packages/website/src/content/docs/aether/settings/user-project-settings.mdx
@@ -169,7 +169,7 @@ aether headless \
"Say hello"
```
-Inline settings are merged on top of file-based settings using the same rightmost-wins rules.
+Inline settings replace file-based settings entirely. They use the same schema but are not merged with user or project settings files.
## Typical patterns
diff --git a/packages/website/src/content/docs/aether/terminal/settings.mdx b/packages/website/src/content/docs/aether/terminal/settings.mdx
index ee5447ca..7cf9f0c2 100644
--- a/packages/website/src/content/docs/aether/terminal/settings.mdx
+++ b/packages/website/src/content/docs/aether/terminal/settings.mdx
@@ -81,10 +81,11 @@ Open with `/settings`. The overlay shows all configurable options:
- **Model** — Override the model used by the currently active agent runtime
- **Reasoning effort** — Set thinking budget (also cyclable with `Tab`)
- **Mode** — Switch to a different user-invocable agent profile, including its prompts, MCP servers, tools, model, and provider settings (also cyclable with `Shift+Tab`)
+- **Theme** — Switch the active `.tmTheme` from the themes directory
- **MCP servers** — View connected servers and their status
- **Provider logins** — Authenticate with providers that require it
-These options are advertised by the agent — the terminal UI discovers them at session start. Different agents may expose different options.
+All options except **Theme** are advertised by the agent — the terminal UI discovers them at session start. Different agents may expose different options. **Theme** is a local terminal option.
## How agent config works
diff --git a/packages/website/src/content/docs/libraries/typescript-sdk.mdx b/packages/website/src/content/docs/libraries/typescript-sdk.mdx
index fd2367d9..edfafead 100644
--- a/packages/website/src/content/docs/libraries/typescript-sdk.mdx
+++ b/packages/website/src/content/docs/libraries/typescript-sdk.mdx
@@ -3,7 +3,7 @@ title: TypeScript SDK
description: Run Aether from Node.js with the TypeScript SDK.
---
-The TypeScript SDK allows you to programatically define agents, start sessions, send prompts, stream updates, and attach MCP tools.
+The TypeScript SDK allows you to programmatically define agents, start sessions, send prompts, stream updates, and attach MCP tools.
## Install
@@ -135,7 +135,7 @@ Because `aether headless` exits non-zero on a failed turn, `runHeadless()` **rej
| `settingsFile` | Path to an alternate settings JSON file. |
| `systemPrompt` | Additional system prompt text. |
| `output` | `"text"`, `"pretty"`, or `"json"`. Defaults to `"text"`. See [output formats](/aether/running/headless/#output-formats). |
-| `events` | Event kinds to emit (only meaningful with `output: "json"`). See [event filtering](/aether/running/headless/#event-filtering). |
+| `events` | Event kinds to emit. See [event filtering](/aether/running/headless/#event-filtering). |
| `verbose` | Verbose diagnostic logging to stderr. |
| `providers` | Provider connection overrides, such as custom Bedrock endpoints or auth behavior. |
| `traceContext` | A remote W3C `traceparent` with optional `tracestate`, or a standalone `traceId`. See [Telemetry](/aether/settings/telemetry/#correlating-sdk-runs). |