Agent commands. Your AI agent uses this node in workflows. You don’t configure it directly.
Parameters
Output
Type annotations
Every input variable and theresult variable must have a type annotation. pflow uses these to validate inputs before your code runs — so a wrong type gets caught immediately with a fix suggestion, not as a cryptic Python error mid-workflow.
Supported types
Supported types
Only the outer type is checked —
list[dict] validates that the value is a list, but doesn’t check whether the elements are dicts.Template placement
inputs dict get resolved before your code runs. By the time Python sees data, it’s already a native object — no parsing needed.
Bridge to workflow inputs
Workflow## Inputs / ## Outputs use canonical names. Code blocks use Python annotations.
Inputs are native objects
Upstream JSON is auto-parsed before your code runs. If the source node produced a JSON string, declaredict or list, not str — you get real Python objects, not strings.
Examples
Simple transformation
Multiple inputs
${merge-sources.result.items}, ${merge-sources.result.count}.
No inputs
Using subprocess
Imports
Standard library imports work without restrictions —json, re, subprocess, pathlib, datetime.
Third-party packages work too, but they need to be installed in pflow’s environment.
Installing third-party packages
Installing third-party packages
pflow runs in an isolated environment, so uv tool (replaces the full environment — list existing extras first):A simpler way to manage code node dependencies is coming in a future release.
pip install pandas won’t work. How you add packages depends on how you installed pflow:pipx (simpler — additive, doesn’t touch existing packages):Security
External code file
For larger scripts, reference an external Python file. The file is read and used as the code block. Path is relative to the workflow file.Error handling
Errors include line numbers, the actual source line, and a suggestion for how to fix it. For example, a type mismatch looks like:
The node doesn’t retry — code execution is deterministic, so retrying the same code produces the same result.

