Source can be inline, Git or a workspace. Code runs through the container runtime on the selected target. The image, dependencies and repository access must be available on that target.
Technical type : script_zig. Runtime : docker.
Credentials and prerequisites
This node defines no dedicated external credential. Remote sources or execution targets may still need their own access credentials.
See the credentials guide if a remote source or execution target requires access.
Parameters
Names below are technical keys. Defaults are not a ready-to-run configuration: complete fields required by your operation. Paths containing [] describe list items; some fields depend on the selected mode.
Parameter
Type
Default
Values / limits
libraryIds
array
-
-; max 100
source
union
{"kind":"inline","script":"const std = @import(\"std\");\n\npub fn run(input: std.json.Value, allocator: std.mem.Allocator) !std.json.ObjectMap {\n // API_TOKEN comes from a selected Secret variables credential.\n const api_token = std.process.getEnvVarOwned(allocator, \"API_TOKEN\") catch null;\n defer if (api_token) |value| allocator.free(value);\n var out = std.json.ObjectMap.init(allocator);\n try out.put(\"payload\", if (input.object.get(\"input\")) |v| v else std.json.Value{ .null = {} });\n try out.put(\"upstream\", if (input.object.get(\"nodes\")) |v| v else std.json.Value{ .null = {} });\n try out.put(\"hasApiToken\", std.json.Value{ .bool = api_token != null and api_token.?.len > 0 });\n try out.put(\"message\", std.json.Value{ .string = \"Script output ready\" });\n return out;\n}\n","dependencies":[]}
-
source.files
record
-
-
source.directories
array
-
-; max 100
source.kind
literal
"inline"
inline, git, workspace
source.script
string
"const std = @import(\"std\");\n\npub fn run(input: std.json.Value, allocator: std.mem.Allocator) !std.json.ObjectMap {\n // API_TOKEN comes from a selected Secret variables credential.\n const api_token = std.process.getEnvVarOwned(allocator, \"API_TOKEN\") catch null;\n defer if (api_token) |value| allocator.free(value);\n var out = std.json.ObjectMap.init(allocator);\n try out.put(\"payload\", if (input.object.get(\"input\")) |v| v else std.json.Value{ .null = {} });\n try out.put(\"upstream\", if (input.object.get(\"nodes\")) |v| v else std.json.Value{ .null = {} });\n try out.put(\"hasApiToken\", std.json.Value{ .bool = api_token != null and api_token.?.len > 0 });\n try out.put(\"message\", std.json.Value{ .string = \"Script output ready\" });\n return out;\n}\n"
Image used to run the script (e.g. docker.io/library/node:22-bookworm). Use localhost/name:tag for a local Podman image.
secretCredentialIds Secrets
Secrets connections injected as environment variables of the script (process.env, os.environ...). The file carrying them is deleted as soon as the container starts.
Initial configuration
Initial catalog configuration example, to adapt before running. Keep secrets in credentials.
json
{"source":{"kind":"inline","script":"const std = @import(\"std\");\n\npub fn run(input: std.json.Value, allocator: std.mem.Allocator) !std.json.ObjectMap {\n // API_TOKEN comes from a selected Secret variables credential.\n const api_token = std.process.getEnvVarOwned(allocator, \"API_TOKEN\") catch null;\n defer if (api_token) |value| allocator.free(value);\n var out = std.json.ObjectMap.init(allocator);\n try out.put(\"payload\", if (input.object.get(\"input\")) |v| v else std.json.Value{ .null = {} });\n try out.put(\"upstream\", if (input.object.get(\"nodes\")) |v| v else std.json.Value{ .null = {} });\n try out.put(\"hasApiToken\", std.json.Value{ .bool = api_token != null and api_token.?.len > 0 });\n try out.put(\"message\", std.json.Value{ .string = \"Script output ready\" });\n return out;\n}\n","dependencies":[]},"executionTarget":{"kind":"host"}}
Verification
Test with representative data. Check node output in the inspector and logs, then use editor mapping for downstream fields. A trigger test with a simulated payload does not validate external service delivery.
Run custom Zig code
Usage and specifics
Source can be inline, Git or a workspace. Code runs through the container runtime on the selected target. The image, dependencies and repository access must be available on that target.
Technical type :
script_zig. Runtime :docker.Credentials and prerequisites
This node defines no dedicated external credential. Remote sources or execution targets may still need their own access credentials.
See the credentials guide if a remote source or execution target requires access.
Parameters
Names below are technical keys. Defaults are not a ready-to-run configuration: complete fields required by your operation. Paths containing [] describe list items; some fields depend on the selected mode.
libraryIdsarraysourceunion{"kind":"inline","script":"const std = @import(\"std\");\n\npub fn run(input: std.json.Value, allocator: std.mem.Allocator) !std.json.ObjectMap {\n // API_TOKEN comes from a selected Secret variables credential.\n const api_token = std.process.getEnvVarOwned(allocator, \"API_TOKEN\") catch null;\n defer if (api_token) |value| allocator.free(value);\n var out = std.json.ObjectMap.init(allocator);\n try out.put(\"payload\", if (input.object.get(\"input\")) |v| v else std.json.Value{ .null = {} });\n try out.put(\"upstream\", if (input.object.get(\"nodes\")) |v| v else std.json.Value{ .null = {} });\n try out.put(\"hasApiToken\", std.json.Value{ .bool = api_token != null and api_token.?.len > 0 });\n try out.put(\"message\", std.json.Value{ .string = \"Script output ready\" });\n return out;\n}\n","dependencies":[]}source.filesrecordsource.directoriesarraysource.kindliteral"inline"inline,git,workspacesource.scriptstring"const std = @import(\"std\");\n\npub fn run(input: std.json.Value, allocator: std.mem.Allocator) !std.json.ObjectMap {\n // API_TOKEN comes from a selected Secret variables credential.\n const api_token = std.process.getEnvVarOwned(allocator, \"API_TOKEN\") catch null;\n defer if (api_token) |value| allocator.free(value);\n var out = std.json.ObjectMap.init(allocator);\n try out.put(\"payload\", if (input.object.get(\"input\")) |v| v else std.json.Value{ .null = {} });\n try out.put(\"upstream\", if (input.object.get(\"nodes\")) |v| v else std.json.Value{ .null = {} });\n try out.put(\"hasApiToken\", std.json.Value{ .bool = api_token != null and api_token.?.len > 0 });\n try out.put(\"message\", std.json.Value{ .string = \"Script output ready\" });\n return out;\n}\n"source.dependenciesarray[]source.repostringsource.branchstring"main"source.scriptPathstringsource.credentialIdstringsource.installRootstringsource.installCommandstringsource.workingDirstringimagestringworkspaceSourceunionworkspaceSource.kindliteralupstream,nodeworkspaceSource.keystringexecutionTargetunion{"kind":"host"}executionTarget.kindliteral"host"aws_ecs,aws_lambda,gcp_job,gcp_function,azure_container,azure_function,scaleway_job,scaleway_function,scaleway_container,digitalocean_function,host,remote_server,kube,swarmexecutionTarget.credentialIdstringexecutionTarget.storageCredentialIdstringexecutionTarget.bucketstringexecutionTarget.regionstringfr-par,nl-ams,pl-waw; max 64executionTarget.clusterstringexecutionTarget.taskDefinitionstringexecutionTarget.containerNamestringexecutionTarget.subnetsarrayexecutionTarget.securityGroupsarray[]executionTarget.assignPublicIpbooleanfalseexecutionTarget.functionNamestringexecutionTarget.projectstringexecutionTarget.jobNamestringexecutionTarget.endpointstringexecutionTarget.subscriptionIdstringexecutionTarget.resourceGroupstringexecutionTarget.functionAppstringexecutionTarget.jobIdstringexecutionTarget.functionIdstringexecutionTarget.containerIdstringexecutionTarget.namespaceIdstringexecutionTarget.serverIdstringexecutionTarget.providerenumaws,gcp,scaleway,ovh,azure,digitalocean,hetznerexecutionTarget.clusterIdstringexecutionTarget.namespacestringsecretCredentialIdsarray[]Configuration help
imageContainer image
secretCredentialIdsSecrets
Initial configuration
Initial catalog configuration example, to adapt before running. Keep secrets in credentials.
{ "source": { "kind": "inline", "script": "const std = @import(\"std\");\n\npub fn run(input: std.json.Value, allocator: std.mem.Allocator) !std.json.ObjectMap {\n // API_TOKEN comes from a selected Secret variables credential.\n const api_token = std.process.getEnvVarOwned(allocator, \"API_TOKEN\") catch null;\n defer if (api_token) |value| allocator.free(value);\n var out = std.json.ObjectMap.init(allocator);\n try out.put(\"payload\", if (input.object.get(\"input\")) |v| v else std.json.Value{ .null = {} });\n try out.put(\"upstream\", if (input.object.get(\"nodes\")) |v| v else std.json.Value{ .null = {} });\n try out.put(\"hasApiToken\", std.json.Value{ .bool = api_token != null and api_token.?.len > 0 });\n try out.put(\"message\", std.json.Value{ .string = \"Script output ready\" });\n return out;\n}\n", "dependencies": [] }, "executionTarget": { "kind": "host" } }Verification
Test with representative data. Check node output in the inspector and logs, then use editor mapping for downstream fields. A trigger test with a simulated payload does not validate external service delivery.
See also : Expressions and data, Executions, Node catalog.