Storm
Storm is a specialized tool type for batch data processing. Unlike Python, JavaScript, and Lua tools where you write arbitrary code, Storm tools are designed to process files — taking digital assets as input and producing digital assets or JSON as output.
When you select Storm as the tool type, the runtime is automatically set to storm and cannot be changed.
When to use Storm
Use Storm when you need to:
- Process large data files stored in the platform
- Run batch transformations on files
- Search or match patterns across file content
- Produce a processed output file from an input file
For general-purpose logic, use Python, JavaScript, or Lua instead.
How Storm tools work
Storm tools do not have a code editor — they are configured through their input/output settings and the digital asset they reference.
A Storm tool execution receives an event with references to:
- A source — either a JSON payload or a digital asset (file) stored in the platform
- A target — either JSON output or a digital asset to write results into
Input types
| Input type | Description |
|---|---|
| Text (JSON) | Pass a JSON object directly in the event |
| Data source | Reference a digital asset by its ID (source_asset_id) |
Output types
| Output type | Description |
|---|---|
| JSON | The result is returned as a JSON object |
| Data outbound | Results are written to a digital asset (target_asset_id) |
Storm event format
When executing a Storm tool, the event payload follows this structure:
Text input → JSON output
{ "topic_file": "search terms or content string here"}Digital asset input → digital asset output
Use the Copy Ref button in the Digital Assets section to get the topic_file path, and the asset UUID for source_asset_id / target_asset_id:
{ "topic_file": "assets/org-slug/my-dataset.csv", "source_asset_id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890", "target_asset_id": "f9e8d7c6-b5a4-3210-fedc-ba0987654321"}The topic_file field is always required. source_asset_id and target_asset_id are used when working with file-based digital assets.
Digital assets
Digital assets are files stored in the platform’s cloud storage. The UI’s Digital Assets section lists all assets in your organization.
Each asset has two identifiers you need for Storm:
| What to copy | Where to find it | Used as |
|---|---|---|
File reference (asset.file) | Click Copy Ref button on the asset | topic_file field in your event |
| Asset ID (UUID) | Shown on the asset detail page | source_asset_id or target_asset_id |
Using Copy Ref for topic_file
The Copy Ref button copies the file reference path (asset.file). Paste this directly into the topic_file field of your execution event:
{ "topic_file": "assets/org-slug/my-dataset.csv"}Using asset IDs for input/output
When your Storm tool reads from or writes to a digital asset, pass the asset UUID:
{ "topic_file": "assets/org-slug/my-dataset.csv", "source_asset_id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890", "target_asset_id": "f9e8d7c6-b5a4-3210-fedc-ba0987654321"}source_asset_id— the asset the Storm engine reads as inputtarget_asset_id— the asset the Storm engine writes results into
You can also select digital assets directly in the Storm test UI (Step 2 of the tool editor) without typing IDs manually.
Testing a Storm tool
The test interface for Storm tools is different from regular function testing:
- Choose Input type: Text or Data Source
- Text: Enter a JSON payload in the editor
- Data Source: Select a digital asset from the picker
- Choose Output type: JSON or Data Outbound
- JSON: Results appear inline
- Data Outbound: Select a target digital asset to write into
- Click Run to execute
Storm tool configuration
When creating a Storm tool, you provide a digital asset ID (digital_asset_id) that points to the processing configuration or model files used by the Storm engine. This is set in Step 2 of the tool editor.
Unlike other runtimes where you write source code, the Storm runtime references a pre-uploaded digital asset. The platform’s Storm engine handles execution.
Notes
- Storm tools cannot be switched to a different runtime.
- The
digital_asset_idis required when creating a Storm tool — without it, the tool cannot be saved. - Storm tools support the same pricing, versioning, and publishing workflow as other tool types.
- Storm tools are not suitable for general-purpose computation — use Python, JavaScript, or Lua for that.