Click any node on the graph and the inspector on the right fills with everything about it, organized into tabs.
Node
The selected node’s complete YAML — type, config, and routing — in a small code editor.
This is the primary way to edit a node: change the URL, add a header, set next to rewire
the flow. Edits are validated as you type; a parse error shows a red banner until fixed.
Variables
Every env.X and variables.X reference this node consumes, one row each:
- Source badge — where the value comes from:
.env, a flow variable, captured by {node} (click it to jump to the producing node), an override, or unset. - Value preview — values from
.envare masked by default; each row has a reveal toggle. - Override — type a value here to override just for runs from this machine. Overrides
are stored locally, never written into the
.aetherfile, so a temporary token or a teammate-specific value can’t leak into Git. - Promote — if you decide an override belongs in the flow, one click writes it into the
flow’s
variables:block and clears the override.
Unset references get a ⚠ badge here and on the graph. The full resolution rules are in Variables & environments.
Params (request nodes)
A structured editor for path and query parameters, so you don’t have to hand-assemble URLs:
- Path params — rows appear automatically for every
{name}or:nameplaceholder in the URL; fill in each value inline. - Query params — freeform key/value rows with an Add row at the bottom and a remove button per row.
- Options — the request’s timeout (ms). Empty means the default 30 seconds; a slow endpoint gets a bigger number, a health check that should answer instantly gets a small one.
Values here can reference variables (${{ variables.userId }}) just like the URL itself.
Body (request nodes)
A JSON-aware editor for the request body — syntax highlighting, live validation, and a Format JSON button that reindents a one-liner into readable JSON:
- The status line tells you where you stand: Valid JSON, Valid JSON with
${{ }}interpolations, or the exact parse error. Non-JSON bodies (form-encoded, plain text) are fine — the panel says “Plain text body” and stays out of your way. - If the body is JSON but the request has no
Content-Typeheader, a one-click chip addsContent-Type: application/json. - GraphQL requests use the
graphqlblock instead of a raw body, so this tab points you to the Node tab for those.
Result
What this node did on the last run:
- Request (request nodes) — the exact method, URL, headers, and body that went out, with every variable already resolved. When a request misbehaves, this is the ground truth of what was actually sent.
- Result — for a request, the response status, headers, and body; for a condition, which branch it took and why; for captures, scripts, and AI actions, the variables they produced and their values.
Before the first run it shows a placeholder — run the flow to fill it.
Chat
An AI chat that knows your flow — ask why a node failed, how to write a check, or what a response means. Enter sends, Shift+Enter adds a newline. Requires an Anthropic API key (Connect your AI key).
The bottom panel
Below the editor (toggle with ⌘J): Console (timestamped execution log), Variables (the live snapshot from the last run), History (Execution history), and Terminal (The built-in terminal).