Skip to content

Node reference ​

Choose a node by what it does, then make its inputs, routes, and side effects explicit.

Each reference page contains a complete source example, the node's configuration fields and defaults, its input ports and output fields, and its preflight requirements. Tables follow the installed Rattish machine contracts.

Commands and agents ​

NodePurpose
bash-commandRun one command and capture its result
shell-scriptRun a maintained Bash script
python-scriptRun a maintained Python script
agentAsk a provider to perform an authored task
common-llm-taskUse a review, summary, extraction, or other common prompt pattern

Files and resources ​

NodePurpose
read-fileRead text and expose its metadata
write-fileCreate, replace, or append text
copy-fileCopy a file, folder, or symlink
move-fileMove or rename a resource
delete-fileRemove a resource with trash and recursion policies
fileDescribe a file without reading its content
folderDescribe a directory without enumerating it
open-resourceOpen a file, folder, URL, or application
prompt-fileRender a prompt template to a file

Control and interaction ​

NodePurpose
loopFan out runtime work items
breakStop a loop's pending iterations
workflowCall a child workflow's public interface
approval-gateObtain a human decision
notificationNotify a desktop or external channel
rem-promptAsk Rem and use its reply
rem-taskRun one of Rem's tasks and wait for its result
http-requestCall a service and expose its response

Local retrieval ​

NodePurpose
local-vectorizeBuild or validate an on-disk text index
local-searchRetrieve ranked chunks from that index

These nodes are distinct from Rem's conversational tools. Enabling Second Brain in a thread does not add a node to a workflow, and declaring an HTTP node does not enable Rem web search.

Shared node fields ​

Every node declares type. The following execution and routing fields are shared:

FieldDefaultMeaning
needs[]One-time readiness dependencies
toNo routesExplicit outgoing routes, including conditional ones
with{}Input-port and local bindings
startfalseStart assertion/presentation hint; cannot have needs
finishNonepass or fail endpoint; cannot have outgoing routes
allow-failfalseAllow an operation failure to participate in recovery routing
timeoutNoneAuthored duration limit
max-runsNoneMaximum runs of the node
max-concurrency1Maximum overlapping activations of the node
retry-count0Additional operation retries
retry-delay1sDelay between retries

finish: fail cannot also declare allow-fail. Node contracts can add restrictions: for example, a break node cannot have outgoing routes. A loop's source concurrency is separate from the shared activation limit.

Source spelling and selectors ​

Rattish configuration uses hyphens, such as working-dir and create-dirs. Output selectors use the schema's exact names, often underscores, such as node.check.output.exit_code.

Do not invent node types named start, pass, fail, branch, or join. Use shared fields and routes/readiness for those behaviors.

Check an example ​

Copy a complete example into workflow.rattish in a disposable project and create any prerequisite files mentioned on its page. Check and preflight do not execute nodes:

bash
Raticode rattish format workflow.rattish
Raticode rattish check workflow.rattish --format json
Raticode rattish preflight workflow.rattish --format json

An environment-dependent preflight diagnostic can mean a provider, notifier, interpreter, index, or opener is missing. Resolve that requirement before execution rather than bypassing the check.

See Validation and preflight and Inputs and bindings.