State Types Comparison
| Type | Purpose | Default | Example Use Cases |
|---|---|---|---|
| String | Text data | "" | Titles, descriptions, status messages, file paths |
| Number | Numeric values | 0 | Counters, IDs, scores, indices |
| List | Ordered collections | [] | Search results, file lists, batch items |
| JSON | Key-value pairs | {} | API responses, config objects, metadata |
Nodes by Category Comparison
| Node | Category | Purpose | LLM | External Tool | Key Feature |
|---|---|---|---|---|---|
| LLM | Interaction | Generate/analyze text | ✔️ | ✘ | Structured output, tool calling |
| Agent | Interaction | Specialized agents | ✔️ | ✘ | Reusable configurations |
| Toolkit | Execution | Direct ELITEA toolkit call | ✘ | ✔️ | Explicit parameters, fast |
| MCP | Execution | Model Context Protocol tools | ✘ | ✔️ | Remote MCP servers |
| Code | Execution | Python logic | ✘ | ✘ | Full programming control |
| Custom | Execution | Advanced config | Varies | Varies | Maximum flexibility |
| Router | Control Flow | Template routing | ✘ | ✘ | Multiple paths |
| Decision | Control Flow | AI routing | ✔️ | ✘ | LLM decision making |
| HITL | Control Flow | Human approval checkpoint | ✘ | ✘ | Approve / Edit / Reject actions |
| State Modifier | Utility | Transform state | ✘ | ✘ | Jinja2 templates |
| Printer | Utility | Display output to users | ✘ | ✘ | Pause & show messages |
Control Flow Comparison
| Feature | Router | Decision | HITL |
|---|---|---|---|
| Method | Template expressions | LLM reasoning | Human decision |
| Performance | Fast | Slower (LLM call) | Depends on human response time |
| Best For | Multiple clear paths, boolean logic | Contextual decisions | Approval gates, compliance checkpoints |
| Syntax | {% if %}/{% elif %} | Natural language | Configure message + routes |
| Outputs | Routes + default | Nodes + default | Per-action routes (approve/edit/reject) |
| State Change | None | None | edit_state_key updated on Edit |
| LLM Required | ✘ | ✔️ | ✘ |
Execution Nodes Comparison
| Feature | Toolkit | MCP | Code | Custom |
|---|---|---|---|---|
| Tool Selection | Manual | Manual | N/A | Manual |
| Parameters | Explicit mapping | Explicit mapping | Python code | JSON config |
| Use LLM | ✘ | ✘ | ✘ | Depends |
| Flexibility | Medium | Medium | Very High | Very High |
| Performance | Fast | Fast | Fast | Fast |
| Best For | ELITEA toolkit calls | MCP server tools | Custom logic | Advanced integrations |
| Scenario | Use |
|---|---|
| Create Jira ticket with known fields | Toolkit |
| Connect to GitHub MCP server | MCP |
| Calculate discount with business rules | Code |
| Execute custom MCP or Agent | Custom |
| Call API with fixed endpoint | Toolkit or Code |
| Access filesystem via MCP | MCP |
| Data transformation/processing | Code |
Utility Nodes Comparison
| Feature | State Modifier | Printer |
|---|---|---|
| Purpose | Transform state variables | Display output to users |
| Input | State variables | State variables or text |
| Output | Modified state | User interface message |
| Template Engine | Jinja2 | Fixed/Variable/F-String |
| Pipeline Pause | No | Yes (waits for user) |
| Use Case | Combine/format data | Show progress/results |
| Example | Aggregate responses, increment counter | Display report, show status |
- Combine multiple state variables with templates
- Apply filters:
from_json,base64_to_string,split_by_words - Clean up temporary variables
- Format structured output
- Display formatted messages during execution
- Pause pipeline for user review
- Support Fixed, Variable, and F-String types
- Resume after user acknowledgment
Input Mapping Types
| Type | Purpose | Syntax | Example |
|---|---|---|---|
| Fixed | Static value | type: fixed, value: "text" | bucket_name: "production" |
| Variable | State reference | type: variable, value: var_name | query: user_question |
| F-String | Dynamic template | type: fstring, value: "text {var}" | title: "Report for {project}" |
Connection Types Comparison
| Type | Node Types | Config | Example |
|---|---|---|---|
| Transition | All except Router/Decision | transition: NodeID | transition: ProcessData |
| Router | Router | condition + routes + default_output | Multiple named paths |
| Decision | Decision | decision.nodes + default_output | LLM-powered routing |
| END | Any node | transition: END | Pipeline termination |
Interaction Nodes Comparison
| Feature | LLM Node | Agent Node |
|---|---|---|
| Configuration | Full prompt control | Use agent’s config |
| Prompts | Define in node | Agent’s prompts |
| Toolkits | Select in node | Agent’s toolkits |
| Reusability | Node-specific | Reuse across pipelines |
| Flexibility | Very High | Limited to agent design |
| Setup | More effort | Less effort |
Node Selection Decision Matrix
By Use Case
| Goal | Recommended | Alternative |
|---|---|---|
| Generate text/content | LLM, Agent | - |
| Call ELITEA toolkit | Toolkit | Code |
| Execute MCP server tool | MCP | Code |
| Make decision | Router | Decision |
| Require human approval or review | HITL | - |
| Transform state | State Modifier | Code |
| Display output to user | Printer | - |
| Complex routing | Decision | Router |
| Custom logic | Code | - |
By Complexity
- Beginner: LLM (simple), Toolkit (clear params), Router (basic), State Modifier (simple), Printer
- Intermediate: Agent, MCP, Decision
- Advanced: Code, Custom
Quick Selection
| Need | Use |
|---|---|
| Call GPT-4 | LLM |
| Create Jira ticket | Toolkit |
| Decide next step | Router |
| Require human approval | HITL |
| Format output | State Modifier |
| Show progress message | Printer |
| Custom calculation | Code |
| Execute MCP tool | MCP |
| Execute agent | Agent |
| Advanced integration | Custom |
Best Practices
State Management
✔️ Do: Descriptive names (user_story_title), initialize defaults, correct types, minimal state
✘ Avoid: Generic names (data, temp), unused variables, type mismatches
Node Configuration
✔️ Do: Clear IDs (extract_requirements), map required params, include messages for interrupts
✘ Avoid: Vague IDs (node1), missing parameters, ignoring validation
Flow Control
✔️ Do: Router for multiple paths and boolean logic, Decision for AI reasoning, provide defaults ✘ Avoid: Complex nesting, missing fallbacks, unreachable nodesExecution
✔️ Do: Toolkit for ELITEA tools, MCP for MCP servers, Code for custom logic, handle errors ✘ Avoid: Hardcoded secrets, ignoring errors, wrong node for taskCommon Patterns
Extract → Process → ActTroubleshooting
| Issue | Cause | Solution |
|---|---|---|
| State variable not found | Not in state section | Add to state: |
| Node won’t execute | Missing parameters | Check Input Mapping |
| Wrong path taken | Router logic error | Review condition syntax |
| Toolkit call fails | Wrong mapping | Verify mapping types |
| MCP connection fails | Server not configured | Check MCP server settings |
| Printer not showing | Wrong input type | Verify printer input_mapping |
| No interrupt output | Missing messages | Add to output list |