The node inspector

The right-hand panel in the flow editor — a selected node's YAML, its variables, request params, last result, and AI chat.

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 .env are 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 .aether file, 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 :name placeholder 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-Type header, a one-click chip adds Content-Type: application/json.
  • GraphQL requests use the graphql block 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).