Skip to Content
almyty docs — v1
AgentsPipeline Validation

Pipeline Validation

almyty validates every workflow pipeline before it can be activated or invoked. Validation runs automatically when you save an agent in the builder and surfaces errors directly on the canvas.

In the UI

When you save a pipeline in the builder:

  • Nodes with configuration errors display a red border
  • Edges with expression issues show a warning icon
  • An error panel at the bottom lists all validation problems with clickable links to the affected nodes

Fix all issues before activating the agent. Draft agents can be saved with validation warnings but cannot be activated or invoked.

  1. Click Save in the builder top bar
  2. Review any errors highlighted on the canvas and in the error panel
  3. Click a node with a red border to open its config panel and fix the issue
  4. Save again — the error panel clears when all issues are resolved

Validation Rules

Structural Rules

RuleDescription
Single InputExactly one Input node must exist
Single OutputExactly one Output node must exist
No CyclesThe pipeline must be a directed acyclic graph (DAG)
Connected GraphAll nodes must be reachable from the Input node
Output ReachableThe Output node must be reachable from at least one path

Node Configuration Rules

Node TypeRequirement
InputMust have a valid JSON Schema in data.schema
OutputMust have a non-empty data.mapping expression
LLM CallMust have providerId and userPromptTemplate
Tool CallMust have toolId referencing an existing tool
ConditionMust have a non-empty expression
TransformMust have non-empty code
LoopMust have iterableExpression
ParallelMust have at least one branch
MergeMust have at least one source
Sub-AgentMust have agentId referencing an existing agent

Expression Validation

Template expressions ({{...}}) are checked for:

  • Valid syntax — properly closed double curly braces
  • Valid references — referenced node IDs must exist in the pipeline
  • Upstream dependency — referenced nodes must be upstream (executed before) the current node
  • No self-reference — a node cannot reference its own output

Via the API

Validation happens automatically on save. Errors are returned in the response:

curl -X PATCH /agents/{id} \ -H "Authorization: Bearer $TOKEN" \ -H "Content-Type: application/json" \ -d '{ "pipeline": { ... } }'

If validation fails:

{ "success": false, "message": "Pipeline validation failed", "errors": [ { "nodeId": "llm_1", "field": "providerId", "message": "LLM provider is required" }, { "nodeId": null, "field": "structure", "message": "No Output node found in pipeline" } ] }

Common Issues

Disconnected Nodes

A node added to the canvas but not connected with edges is reported as unreachable. Fix by dragging an edge from an upstream node to the disconnected node.

Circular Dependencies

Pipelines must be acyclic. If node A depends on node B and node B depends on node A, validation fails. Use a Loop node instead for iterative processing.

Missing Provider

LLM Call nodes require a valid providerId. If the referenced provider has been deleted or is inactive, validation flags it. Navigate to Models in the sidebar to configure a provider first.

Invalid Template Expressions

// Bad -- references a non-existent node {{nodes.nonexistent.output}} // Bad -- references a downstream node (not yet executed) {{nodes.output_1.output}} // Good -- references an upstream node {{nodes.llm_1.output}}