Skip to main content
Version: 3.0 (next)

Local File Nodes

Local File nodes allow pipelines to interact with files on the local filesystem. All file operations are restricted to a configured base directory for security. Use these nodes to read data files, write output files, and integrate file-based workflows with other pipeline operations.

Configuration Quick Reference​

Local File Fetch node configuration

Local File Nodes

FieldWhat you chooseDetails
ParametersConnection, Function, Function Parameters, Timeout OverrideSelect the connection profile, function, configure function parameters with expression support, and optionally override timeout.
SettingsDescription, Timeout (seconds), Retry on Timeout, Retry on Fail, On ErrorNode description, maximum execution time, retry behavior on timeout or failure, and error handling strategy. All execution settings default to pipeline-level values.

Local File Fetch Node​

Read files from the local filesystem for processing in your pipeline.

Supported Function Types:

Function NamePurposeCommon Use Cases
Fetch Local FileRead file contentCSV data import, configuration files, log analysis

Node Configuration​

ParameterTypeRequiredDescription
ConnectionSelectionYesLocal File connection profile to use
FunctionSelectionYesFetch function from the selected connection
Function ParametersDynamicVariesAuto-populated from the function schema. See your Local File connection functions for full parameter details.
Timeout OverrideNumber (seconds)NoOverride the default function timeout

All function parameters support expression syntax ({{ expression }}) for dynamic values from the pipeline context.

Input​

The node receives the output of the previous node as input. Input data can be referenced in function parameter expressions using $input.

Output Structure​

On success the node produces:

{
"result": {
"data": "aWQsbmFtZSx2YWx1ZQoxLGFscGhhLDEwMAo...",
"metadata": {
"fileName": "sales_data.csv",
"filePath": "/data/reports/sales_data.csv",
"fileType": "csv",
"sizeBytes": 2048,
"lastModified": "2026-01-15T08:30:00Z",
"discoveryPattern": "^sales_.*\\.csv$",
"outputFormat": "base64",
"selectedBy": "lastModified",
"matchCount": 3
}
},
"_metadata": { "success": true, "functionId": "<function-id>", "durationMs": 42, "timestamp": "2026-01-15T08:30:00Z" }
}

Fetch Result Fields​

FieldTypeDescription
result.datastringFile content. Base64-encoded when outputFormat=base64 (default), the text itself when outputFormat=text — with a UTF-8 BOM stripped.
result.metadata.fileNamestringBasename of the resolved file.
result.metadata.filePathstringFull path of the resolved file (within the base path).
result.metadata.fileTypestringExtension without the leading dot (csv, json, …). Empty when the file has no extension.
result.metadata.sizeBytesnumberFile size in bytes.
result.metadata.lastModifiedstringRFC 3339 UTC timestamp of last modification.
result.metadata.discoveryPatternstringThe pattern that resolved the file (the literal name or the compiled pattern).
result.metadata.outputFormatstringbase64 or text — echoes the request.
result.metadata.encodingHintstringOptional. Present when a byte-order mark was found: utf-8-bom, utf-16le-bom, utf-16be-bom.
result.metadata.selectedBystringOptional. Present when the file was found by matching a pattern: the rule that picked it among the matches, lastModified or name (the function's When Several Files Match setting).
result.metadata.matchCountnumberOptional. Present when the file was found by matching a pattern: how many files matched.
_metadata.methodstringThe call's own fact, on every Local File node: the operation that ran (localfile.fetch, localfile.write, localfile.list, localfile.delete, localfile.move)
Feeding the File Extractor

The content is at result.data. When piping into a File Extractor node, set its Input Field to result.data.


Local File Write Node​

Write content to files on the local filesystem.

Supported Function Types:

Function NamePurposeCommon Use Cases
Write to Local FileWrite file contentExport reports, save processed data, create log files

Node Configuration​

ParameterTypeRequiredDescription
ConnectionSelectionYesLocal File connection profile to use
FunctionSelectionYesWrite function from the selected connection
Function ParametersDynamicVariesAuto-populated from the function schema (e.g., fileName, data). See your Local File connection functions for full parameter details.
Timeout OverrideNumber (seconds)NoOverride the default function timeout

All function parameters support expression syntax ({{ expression }}) for dynamic values.

Input​

The node receives the output of the previous node as input. Use expressions like {{ $input[0].result.data }} (the content an upstream Fetch delivered) to pass dynamic values to write parameters.

Output Structure​

{
"result": {
"filePath": "/data/exports/output.csv",
"bytesWritten": 1024,
"encoding": "utf-8",
"created": true,
"appended": false,
"duration": 15
},
"_metadata": { "success": true, "functionId": "<function-id>", "durationMs": 15, "timestamp": "2026-01-15T08:30:00Z" }
}

Write Result Fields​

FieldTypeDescription
result.filePathstringPath actually written. May differ from the input when Overwrite Existing is off and a timestamped variant was written instead.
result.bytesWrittennumberBytes written after the encoding transformation.
result.encodingstringEncoding actually applied. When the function used auto, this reveals the encoding the connector picked.
result.createdbooleantrue if the file did not exist before this call.
result.appendedbooleantrue if the call appended rather than wrote whole.
result.durationnumberWrite duration in milliseconds.

Local File List Node​

List the entries of a directory under the base path, optionally filtered by a glob pattern and recursively.

Function NamePurposeCommon Use Cases
ListList a directory (path, pattern, recursive)Discovering dropped files, driving a For Each loop

Leave path empty, or set it to / or ., to list the base path itself.

Output Structure​

{
"result": {
"path": "inbound",
"count": 2,
"files": [
{ "name": "sales_2026-01-15.csv", "path": "inbound/sales_2026-01-15.csv", "size": 2048, "isDir": false, "modified": "2026-01-15T08:30:00Z" },
{ "name": "archive", "path": "inbound/archive", "size": 0, "isDir": true, "modified": "2026-01-14T12:00:00Z" }
]
},
"_metadata": { "success": true, "functionId": "<function-id>", "durationMs": 4, "timestamp": "2026-01-15T08:30:00Z" }
}
FieldTypeDescription
result.pathstringDirectory that was listed, relative to the connection's base path.
result.countnumberNumber of entries delivered (after the pattern filter).
result.filesarrayOne entry per file or directory: name, path (relative to the base path — feed it to Fetch, Move or Delete), size (0 for directories), isDir, modified (RFC 3339 UTC).
Drive a For-Each loop

Wire Local File List into a For Each Loop bound to result.files. Each iteration receives one entry and can branch on isDir.


Local File Delete Node​

Delete one file under the base path. Directories are not deleted.

Function NamePurposeCommon Use Cases
DeleteRemove the file at fileNameCleanup after processing, retention policies

Output Structure​

{
"result": { "filePath": "/data/inbound/processed/old.csv" },
"_metadata": { "success": true, "functionId": "<function-id>", "durationMs": 2, "timestamp": "2026-01-15T08:30:00Z" }
}
FieldTypeDescription
result.filePathstringPath of the deleted file.

Local File Move Node​

Move or rename a file within the base path.

Function NamePurposeCommon Use Cases
MoveMove sourcePath to destinationPathArchiving processed files, date-based folders

Output Structure​

{
"result": { "sourcePath": "/data/inbound/orders.csv", "destinationPath": "/data/inbound/processed/2026-01-15/orders.csv", "moved": true },
"_metadata": { "success": true, "functionId": "<function-id>", "durationMs": 3, "timestamp": "2026-01-15T08:30:00Z" }
}
FieldTypeDescription
result.sourcePathstringResolved source path.
result.destinationPathstringResolved destination path.

Common Use Cases​

Reading CSV Data for Processing​

  1. Configure a Local File connection with base path pointing to your data directory
  2. Create a Fetch Local File function targeting your CSV file
  3. Add a Local File Fetch node to your pipeline
  4. Connect the output to a File Extractor node to parse the CSV into JSON
[Trigger] → [Local File Fetch] → [File Extractor] → [Process Data]

Writing Pipeline Results to File​

  1. Configure a Local File connection with base path pointing to your output directory
  2. Create a Write to Local File function with parameterized filename and data fields
  3. Add a Local File Write node after your data processing nodes
  4. Use expressions to pass the processed data and dynamic filename
[Fetch Data] → [Transform] → [Local File Write]

Parameterized File Operations​

Use parameter placeholders in your functions to create dynamic file paths:

Parameter PatternExampleUse Case
((fileName)).csvsales.csvSimple parameterized filename
((date))/report.csv2026-01-15/report.csvDate-based folder structure
((region))/((year))/data.jsonus-west/2026/data.jsonMulti-level parameterization

Pass parameter values using expressions in the node configuration:

fileName: {{ $trigger.result.filename }}
date: {{ $execution.startedAt | date: 'YYYY-MM-DD' }}

Settings Tab​

Both Local File node types share the same Settings tab:

SettingTypeDefaultDescription
DescriptionText—Optional description displayed on the node
Timeout (seconds)NumberPipeline defaultMaximum time the node may run before timing out
Retry on TimeoutTogglePipeline defaultAutomatically retry the node if it times out
Retry on FailTogglePipeline defaultAutomatically retry the node if it fails
On ErrorSelectionPipeline defaultError strategy: Pipeline Default (the pipeline's Error Handling setting), Stop Pipeline or Continue Execution

When left at their defaults, these settings inherit from the pipeline-level execution configuration.


Integration with File Extractor​

The Local File Fetch node is commonly used with the File Extractor node to parse CSV and Excel files into structured JSON data:

  1. Local File Fetch reads the raw file content
  2. File Extractor parses the content into rows and columns

Set the File Extractor's inputField to result.data, where the Local File Fetch node puts the content.


Best Practices​

  • Use specific file paths rather than regex patterns when possible for better performance
  • Set appropriate timeouts for large files or slow storage
  • Validate file existence before write operations that should not overwrite
  • Use parameterized paths to create organized, date-based folder structures
  • Configure size limits in the connection to prevent memory issues with large files
Security

All file operations are restricted to the base path configured in the connection. Symlinks are disabled by default to prevent access outside the base directory.

Every path you give a Local File node — a file name, a directory, a move source or destination — is relative to that base path, and a leading / means the base path root rather than the filesystem root. /inbound/orders.csv and inbound/orders.csv are the same file. A path that climbs out with .. is refused, with or without the leading separator. This is the same rule the SMB nodes follow.