> For the complete documentation index, see [llms.txt](https://docs.rootcause.ai/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.rootcause.ai/more-details/applications/application-modules.md).

# Module Reference

Every module an application flow can be built from.

## Inputs

| Module                                                                                | Type              | Tier       | What it does                                                                                     |
| ------------------------------------------------------------------------------------- | ----------------- | ---------- | ------------------------------------------------------------------------------------------------ |
| [Dataset Source](/more-details/applications/application-modules/datasetsource.md)     | `DatasetSource`   | `reactive` | Read from a saved dataset in your workspace.                                                     |
| [Connector Import](/more-details/applications/application-modules/connectorimport.md) | `ConnectorImport` | `durable`  | Run a connector import through a bound credential and materialise the rows as a dataset version. |
| [Origin Grid](/more-details/applications/application-modules/origingrid.md)           | `OriginGrid`      | `reactive` | Emit origin timestamps for walk-forward or backtest sweeps.                                      |
| [Config Input](/more-details/applications/application-modules/configinput.md)         | `ConfigInput`     | `reactive` | Provide a config JSON bag with defaults for downstream modules.                                  |
| [Scenario Input](/more-details/applications/application-modules/scenarioinput.md)     | `ScenarioInput`   | `reactive` | Lets viewers of the published app adjust simulation parameters within your bounds.               |
| [Table Input](/more-details/applications/application-modules/tableinput.md)           | `TableInput`      | `reactive` | Lets viewers of the published app enter or paste data rows the flow runs on.                     |

## Outputs

| Module                                                                                  | Type               | Tier       | What it does                                                                                  |
| --------------------------------------------------------------------------------------- | ------------------ | ---------- | --------------------------------------------------------------------------------------------- |
| [Dataset Output](/more-details/applications/application-modules/datasetoutput.md)       | `DatasetOutput`    | `durable`  | Write the result back to a dataset.                                                           |
| [Connector Write](/more-details/applications/application-modules/connectorwrite.md)     | `ConnectorWrite`   | `durable`  | Write the incoming rows to a table or object path through a bound connector.                  |
| [API Call](/more-details/applications/application-modules/apicall.md)                   | `APICall`          | `durable`  | Send data to an external API endpoint.                                                        |
| [Send Notification](/more-details/applications/application-modules/sendnotification.md) | `SendNotification` | `durable`  | Post an alert to Slack or a webhook when an upstream branch fires.                            |
| [API Response](/more-details/applications/application-modules/apiresponseout.md)        | `APIResponseOut`   | `reactive` | Sends the final response payload back to the API caller.                                      |
| [Emit event](/more-details/applications/application-modules/emitevent.md)               | `EmitEvent`        | `durable`  | Publish a named application event with a JSON payload for other applications to subscribe to. |

## Data Processing

| Module                                                                              | Type             | Tier       | What it does                                                                                             |
| ----------------------------------------------------------------------------------- | ---------------- | ---------- | -------------------------------------------------------------------------------------------------------- |
| [Data Operations](/more-details/applications/application-modules/dataoperations.md) | `DataOperations` | `reactive` | Transform data with filters, joins, aggregations, and 27 other operations.                               |
| [Conditional](/more-details/applications/application-modules/conditional.md)        | `Conditional`    | `reactive` | Route data to different branches based on conditions.                                                    |
| [Gate](/more-details/applications/application-modules/gate.md)                      | `Gate`           | `reactive` | Assert row counts, null rates, keys, ranges, freshness or a pinned schema before data flows on.          |
| [Buffer](/more-details/applications/application-modules/buffer.md)                  | `Buffer`         | `durable`  | Accumulate arriving rows in a staging dataset and emit them as one batch when flushed or a bound is hit. |

## Intelligence

| Module                                                                                  | Type                | Tier       | What it does                                                                                                       |
| --------------------------------------------------------------------------------------- | ------------------- | ---------- | ------------------------------------------------------------------------------------------------------------------ |
| [Call LLM](/more-details/applications/application-modules/callllm.md)                   | `CallLLM`           | `durable`  | Generate text, JSON, or tabular data using a large language model.                                                 |
| [Intervention](/more-details/applications/application-modules/interventionsim.md)       | `InterventionSim`   | `reactive` | Simulate the effect of interventions on a Digital Twin.                                                            |
| [Counterfactual](/more-details/applications/application-modules/counterfactualsim.md)   | `CounterfactualSim` | `reactive` | Find what inputs would produce a desired outcome.                                                                  |
| [Forecast](/more-details/applications/application-modules/forecastsim.md)               | `ForecastSim`       | `reactive` | Generate forward-looking predictions from a Digital Twin.                                                          |
| [Forecast Backtest](/more-details/applications/application-modules/forecastbacktest.md) | `ForecastBacktest`  | `durable`  | Score past forecasts against what actually happened — accuracy over time.                                          |
| [Score Forecast](/more-details/applications/application-modules/scoreforecast.md)       | `ScoreForecast`     | `reactive` | Score a forecast dataframe against actuals — horizons, MAPE, WMAPE, and more.                                      |
| [Backtest Scores](/more-details/applications/application-modules/backtestscores.md)     | `BacktestScores`    | `durable`  | Pool matched forecast rows across origins into per-variable and per-lead-time accuracy.                            |
| [Forecast Groups](/more-details/applications/application-modules/aggregateforecast.md)  | `AggregateForecast` | `reactive` | Roll a finished panel forecast up into named environment groups defined by a dimension column or SQL rules.        |
| [Static Accuracy](/more-details/applications/application-modules/staticaccuracy.md)     | `StaticAccuracy`    | `reactive` | Score a static model on new labeled rows for selected target columns and metrics.                                  |
| [Optimisation](/more-details/applications/application-modules/optimisationsim.md)       | `OptimisationSim`   | `durable`  | Find optimal variable settings for a target outcome.                                                               |
| [Root Cause Analysis](/more-details/applications/application-modules/rcasim.md)         | `RCASim`            | `durable`  | Identify root causes of anomalies or outcomes.                                                                     |
| [Anomaly Detection](/more-details/applications/application-modules/anomalysim.md)       | `AnomalySim`        | `durable`  | Detect anomalies and outliers using a Digital Twin.                                                                |
| [Train Model](/more-details/applications/application-modules/trainmodel.md)             | `TrainModel`        | `durable`  | Train a new Digital Twin model from data.                                                                          |
| [Update Model](/more-details/applications/application-modules/updatemodel.md)           | `UpdateModel`       | `durable`  | Retrain or update an existing Digital Twin with new data.                                                          |
| [For Each](/more-details/applications/application-modules/foreach.md)                   | `ForEach`           | `durable`  | Run an inline body subgraph once per row of an items dataframe.                                                    |
| [While](/more-details/applications/application-modules/while.md)                        | `While`             | `durable`  | Repeat a body subgraph until a condition holds or the iteration cap is reached, carrying state in shift registers. |
| [Sub-app](/more-details/applications/application-modules/subapp.md)                     | `SubApp`            | `durable`  | Use a published application as a module: its exposed terminals become this node's ports, pinned to one version.    |
| [Code](/more-details/applications/application-modules/code.md)                          | `Code`              | `reactive` | Run sandboxed Python to transform data or emit JSON.                                                               |
| [Pre-score](/more-details/applications/application-modules/prescore.md)                 | `PreScore`          | `durable`  | Score a grid of scenarios in one durable twin run and fill the scenario store reactive simulations answer from.    |

## Library

| Module                                                       | Type  | Tier      | What it does                                                      |
| ------------------------------------------------------------ | ----- | --------- | ----------------------------------------------------------------- |
| [Box](/more-details/applications/application-modules/box.md) | `Box` | `durable` | Drop a published box — a saved fragment of flow — in as one node. |

## Events

| Module                                                                               | Type            | Tier       | What it does                                                                                       |
| ------------------------------------------------------------------------------------ | --------------- | ---------- | -------------------------------------------------------------------------------------------------- |
| [API Request](/more-details/applications/application-modules/apirequestin.md)        | `APIRequestIn`  | `reactive` | The HTTP request event: body, query, headers and the sync or async response mode.                  |
| [On schedule](/more-details/applications/application-modules/onschedule.md)          | `OnSchedule`    | `durable`  | Start a flow on a cron schedule, optionally spread over partition keys.                            |
| [On data arrival](/more-details/applications/application-modules/ondataarrival.md)   | `OnDataArrival` | `durable`  | Start a flow when a dataset is uploaded, synced, changed or its schema drifts.                     |
| [On twin change](/more-details/applications/application-modules/ontwinchange.md)     | `OnTwinChange`  | `durable`  | Start a flow when a digital twin is trained or updated.                                            |
| [On interval](/more-details/applications/application-modules/oninterval.md)          | `OnInterval`    | `reactive` | Tick the reactive tier every N seconds so a live dashboard re-reads its connector without polling. |
| [On webhook](/more-details/applications/application-modules/onwebhook.md)            | `OnWebhook`     | `durable`  | Start a flow when an external service POSTs to this application's webhook URL.                     |
| [On panel event](/more-details/applications/application-modules/onpanelevent.md)     | `OnPanelEvent`  | `reactive` | Start a flow when a widget emits click, change, submit, rowSelect, pageOpen or pageClose.          |
| [On application event](/more-details/applications/application-modules/onappevent.md) | `OnAppEvent`    | `durable`  | Start a flow when another application in this workspace emits a declared event.                    |

## Primitives

| Module                                                                            | Type            | Tier       | What it does                                                                                                                                                            |
| --------------------------------------------------------------------------------- | --------------- | ---------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| [Select](/more-details/applications/application-modules/select.md)                | `Select`        | `reactive` | Keep or drop the named columns.                                                                                                                                         |
| [Filter](/more-details/applications/application-modules/filter.md)                | `Filter`        | `reactive` | Keep the rows a condition matches; values may read {{params.\*}}.                                                                                                       |
| [Join](/more-details/applications/application-modules/join.md)                    | `Join`          | `reactive` | Join left and right on key columns.                                                                                                                                     |
| [Union](/more-details/applications/application-modules/union.md)                  | `Union`         | `reactive` | Stack the rows of a and b, by column name or position.                                                                                                                  |
| [Aggregate](/more-details/applications/application-modules/aggregate.md)          | `Aggregate`     | `reactive` | Group by columns and compute measures.                                                                                                                                  |
| [Compute](/more-details/applications/application-modules/compute.md)              | `Compute`       | `reactive` | Add columns from expressions; values may read {{params.\*}}.                                                                                                            |
| [Window](/more-details/applications/application-modules/window.md)                | `Window`        | `reactive` | A window function over partitions in order: rank, lag, rolling sums.                                                                                                    |
| [Resample](/more-details/applications/application-modules/resample.md)            | `Resample`      | `reactive` | Bucket a time column to a cadence and aggregate each bucket.                                                                                                            |
| [Pivot](/more-details/applications/application-modules/pivot.md)                  | `Pivot`         | `reactive` | Turn the values of one column into columns.                                                                                                                             |
| [Unpivot](/more-details/applications/application-modules/unpivot.md)              | `Unpivot`       | `reactive` | Turn columns into rows of variable and value.                                                                                                                           |
| [Sort](/more-details/applications/application-modules/sort.md)                    | `Sort`          | `reactive` | Order rows by columns.                                                                                                                                                  |
| [Limit](/more-details/applications/application-modules/limit.md)                  | `Limit`         | `reactive` | Keep the first n rows after an offset.                                                                                                                                  |
| [Distinct](/more-details/applications/application-modules/distinct.md)            | `Distinct`      | `reactive` | Drop duplicate rows, over all or the named columns.                                                                                                                     |
| [Rename](/more-details/applications/application-modules/rename.md)                | `Rename`        | `reactive` | Rename columns.                                                                                                                                                         |
| [Cast](/more-details/applications/application-modules/cast.md)                    | `Cast`          | `reactive` | Change column types.                                                                                                                                                    |
| [Fill](/more-details/applications/application-modules/fill.md)                    | `Fill`          | `reactive` | Fill nulls with a value, a neighbour or the mean.                                                                                                                       |
| [Sample](/more-details/applications/application-modules/sample.md)                | `Sample`        | `reactive` | Keep n rows, chosen arbitrarily but the same ones each run.                                                                                                             |
| [Constant](/more-details/applications/application-modules/constant.md)            | `Constant`      | `reactive` | Emit one typed value.                                                                                                                                                   |
| [Expression](/more-details/applications/application-modules/expression.md)        | `Expression`    | `reactive` | Compute one value from a, b and c with the scalar grammar.                                                                                                              |
| [Compare](/more-details/applications/application-modules/compare.md)              | `Compare`       | `reactive` | Compare a with b and emit a boolean.                                                                                                                                    |
| [Pick](/more-details/applications/application-modules/pick.md)                    | `Pick`          | `reactive` | Read one value out of a JSON by path.                                                                                                                                   |
| [Merge](/more-details/applications/application-modules/merge.md)                  | `Merge`         | `reactive` | Merge two JSON objects, b over a.                                                                                                                                       |
| [To table](/more-details/applications/application-modules/totable.md)             | `ToTable`       | `reactive` | Turn a JSON of records or columns into a dataframe.                                                                                                                     |
| [From table](/more-details/applications/application-modules/fromtable.md)         | `FromTable`     | `reactive` | Turn a dataframe into a JSON of records or columns.                                                                                                                     |
| [Switch](/more-details/applications/application-modules/switch.md)                | `Switch`        | `reactive` | Route by a value: one out-port per case, then otherwise.                                                                                                                |
| [Await](/more-details/applications/application-modules/await.md)                  | `Await`         | `reactive` | Continue when all or any of the inputs have arrived.                                                                                                                    |
| [Delay](/more-details/applications/application-modules/delay.md)                  | `Delay`         | `durable`  | Hold a value for a number of seconds on a Temporal timer.                                                                                                               |
| [Poll](/more-details/applications/application-modules/poll.md)                    | `Poll`          | `durable`  | Check a GET endpoint until its response matches a condition or the time limit is reached.                                                                               |
| [Resolve twin](/more-details/applications/application-modules/resolvetwin.md)     | `ResolveTwin`   | `reactive` | Look up a digital twin's latest or pinned version as JSON.                                                                                                              |
| [Connector read](/more-details/applications/application-modules/connectorread.md) | `ConnectorRead` | `reactive` | Read a table or query through a bound connector without writing a dataset, cached for ttlS.                                                                             |
| [Series view](/more-details/applications/application-modules/seriesview.md)       | `SeriesView`    | `reactive` | A forecast or scenario series seen through a view: time bucket, cumulative or per period, cohort and variable from a config's fields, plus a fixed roll-up and history. |

## Port kinds

An out-port may be wired to an in-port whose kind is listed here.

| Kind        | Connects to                             |
| ----------- | --------------------------------------- |
| `dataframe` | `dataframe`, `signal`                   |
| `scalar`    | `scalar`, `json`, `text`, `signal`      |
| `json`      | `json`, `scalar`, `signal`              |
| `text`      | `text`, `scalar`, `signal`              |
| `document`  | `document`, `binary`, `signal`          |
| `image`     | `image`, `binary`, `signal`             |
| `binary`    | `binary`, `document`, `image`, `signal` |
| `signal`    | `signal`                                |
| `event`     | `event`, `json`                         |
