# Node reference

> Every node in the workflow editor's Nodes panel, section by section: what each one does and which ones appear only when an app is on.

Source: https://orbitalaip.com/docs/workflows/nodes

## How the panel is organised

The shapes button at the top left of the canvas opens the **Nodes** panel; its tooltip reads **Show nodes**. The panel lists every node you can add, in eleven sections and a fixed order: **Core**, **Data Sources**, **Transforms**, **Memory**, **AI Analysis**, **Logic**, **Signals**, **Notify**, **Utility**, **Triggers** and **Strategy**. Click a section heading to collapse it.

Click a node to add it in the middle of the visible canvas, or drag it where you want it. On the canvas, a node shows a title drawn from its settings, or the node's name; type your own at the top of its settings panel.

**Search nodes…** filters the list as you type, matching names, descriptions and section names. While the panel has focus, the arrow keys move the highlight, Enter adds the highlighted node and Escape clears the search.

Six nodes appear only when their app is on in the project: **Get Watchlist**, **List Watchlists** and **Watchlist Write** need Watchlists, and **List Strategies**, **Get Strategy** and **Get Backtest Run** need Backtesting; see [Apps](https://orbitalaip.com/docs/workspace-and-account/apps#switch-an-app-on-or-off-in-a-project). Every other node, the whole Strategy section included, is in every project.

Feeds and transforms are not nodes: they are choices inside **Data Fetch** and **Transform**.

## Core

| Node | What it does |
| --- | --- |
| Agent | Runs a saved agent as one step. It reasons about the incoming data, calls its tools and returns an analysis. |
| Agent channel | Asks a saved agent channel a question as one step, as if typed into the channel, and passes the decision or the whole transcript downstream. |
| Function | Runs one of ten built-in functions: Mean, Median, Standard Deviation, Sum, Simple Moving Average, Exponential Moving Average, RSI, Returns, Max Drawdown or Sharpe Ratio. |
| Output | The workflow's result: named, typed columns mapped from the incoming data, with data-quality checks. Dashboards and the API read it by name. In a strategy it carries symbol, action and asOf. |

## Data Sources

| Node | What it does |
| --- | --- |
| Data Fetch | Pulls data from a feed: prices, fundamentals, analyst coverage, filings, news and more. Pick a feed and its typed outputs appear on the node. |
| Get Backtest Run | Reads one backtest run as a verdict: status, configuration and trials, period, capital and benchmark, headline metrics, cost model and credits charged. |
| Get Strategy | Reads one strategy: its workflow, lifecycle status, newest versions and newest backtest runs. |
| Get Watchlist | Reads a saved watchlist by name, or the default watchlist when no name is given. |
| Get Library Artifact | Reads one Library artifact by id: its answer, structured result and source count. |
| Input | The starting point of a workflow: a single asset, a saved or inline watchlist, a universe from the screener, or a deployed strategy's book, which is there only in a deployment's runs. |
| List Strategies | Lists the project's strategies with their latest backtest verdict: net return, alpha, max drawdown and Sharpe, with how many configurations were tried. |
| List Watchlists | Lists the project's saved watchlists with their ids, names and sizes, and which is the default. |
| Metric History | Reads past values of a named metric for a symbol, to spot trends or compare against earlier averages. |
| Program ABI Manual | Returns the manual of host functions a Program may call, with each signature and the interface version. |
| Search Library Artifacts | Searches earlier agent outputs in the project's Library by title or summary and returns their ids. |
| Web Fetch | Fetches a URL and parses the response as JSON, RSS or text. A diff mode returns only items new since the last poll. |
| Run History | Reads the last N runs of a workflow, or one named output from each, for what changed since last time. |

## Transforms

| Node | What it does |
| --- | --- |
| Aggregate | Reduces an array of numbers to one value: average, sum, min, max, standard deviation, count, latest, first or median. |
| Compare | Computes the ratio, difference or percent change between two numbers and checks it against a threshold. Outputs the value and a passed flag. |
| Filter | Keeps only the items of an array that match a condition on a field. |
| Sort | Sorts an array by a field, ascending or descending. |
| Subject Iterator | Runs a pipeline of nodes once per item in a list, in parallel, then collects every result. |
| Transform | Applies a data transform: technical indicators, analyst consensus, earnings surprise, sentiment, market regime and more. Its typed ports appear on the node. |
| Trend | Fits a line to a numeric series and reports slope, direction and percentage change, with isUp and isDown flags an Alert can read. |

## Memory

| Node | What it does |
| --- | --- |
| Memory Recent | Reads the most recent entries stored for an entity, newest first. |
| Memory Search | Searches stored memories by meaning and returns the closest matches. |
| Memory Summarize | Summarises the incoming data with a model and stores the summary as a memory entry in one step. |
| Memory Write | Stores a memory entry for any entity: a ticker, a user, a document. The default entity layer keeps it for later runs; the working layer lasts one run. |
| Prompt Context | Packs retrieved memories into a message list for a Custom LLM Prompt node, so repeated calls to an Anthropic model within five minutes reuse a cached prefix. |

## AI Analysis

| Node | What it does |
| --- | --- |
| Custom LLM Prompt | Sends any data to a model with your own instructions and returns parsed JSON. Presets enforce common shapes: alert verdict, classification, extraction and summary. |
| Synthesizer | Runs one prompt through several models, then a synthesis model writes one consensus answer plus a dissenting view. Majority-vote and numeric-mean modes skip that extra call and cost less. |

## Logic

| Node | What it does |
| --- | --- |
| If / else | Routes data to one of two outputs based on a condition. |
| Set state | Stores a value in the workflow's state, as an accumulator or to remember context between runs. |
| Run workflow | Runs another workflow to completion and returns its outputs, so this graph can branch on the result. Cancelling the parent stops the child too. |

## Signals

| Node | What it does |
| --- | --- |
| Signal Generator | Produces a BUY, SELL or HOLD signal with a score from 0 to 100, from technical indicators, sentiment or both. |

## Notify

See [Alerts from workflows](https://orbitalaip.com/docs/alerts-and-notifications/alerts-from-workflows) for the **Alert** node.

| Node | What it does |
| --- | --- |
| Alert | Sends a notification to one or more channels. Three modes: agent-led, acting on a model's verdict; threshold, a numeric comparison; or always fire. |
| Post to a channel | Posts the run's result into a connected Slack channel, as a message, not a notification. The Slack plugin is not available yet. |

## Utility

| Node | What it does |
| --- | --- |
| Send Webhook / HTTP Request | Calls an external HTTP API or webhook with data from the run: a templated URL, headers and body, with optional token auth or HMAC signing. Later nodes can branch on the response. |
| Custom Code | Runs your own JavaScript in a sandbox for transforms, scoring, filtering or formatting, with statistics and finance helpers. Return plain data. |
| Merge | Combines the outputs of any number of upstream nodes into one payload. Arrays of equal length also get a per-subject view. |
| Metric Write | Stores numbers as a time series across runs, so Metric History and line-chart widgets can read them later. |
| Projection | Slims a payload before it reaches a model or a later node: keep chosen fields, truncate long strings, round numbers, cap the size. |
| Watchlist Write | Changes a saved watchlist: replace, add, remove, create or delete. Symbols come from the wired input or an inline list. |

## Triggers

A **Trigger** node is the entry point only for runs that an incoming webhook or a signal monitor starts. See [Webhooks and signals](https://orbitalaip.com/docs/workflows/webhooks-and-signals).

| Node | What it does |
| --- | --- |
| Trigger | Maps the incoming payload onto typed output ports, through a field mapping or as the raw payload. |

## Strategy

The eight Strategy nodes build [Rules strategies](https://orbitalaip.com/docs/backtesting/rule-card-strategies) and [Program strategies](https://orbitalaip.com/docs/backtesting/program-strategies): **Entry Rule**, **Exit Rules**, **Indicator**, **Program**, **Regime Filter**, **Risk Guard**, **Session Filter** and **Position Sizing**.
