No/Low-Code Orchestration Basics
8 examples to get you started with no/low-code agent orchestration - 5 basic and 3 intermediate.
You will sketch a trigger → LLM → action path, wire credentials, pass fields with expressions, add a branch, call a tool-like HTTP step, and mirror the same LLM call in Python via OpenRouter for migration readiness.
Prerequisites
- n8n Cloud or self-hosted n8n with AI nodes enabled (verify your plan/version at build)
- An OpenRouter API key (or another chat provider key you already use)
- Optional: Slack, email, or spreadsheet credentials for a real action node
- Optional: Python 3.11+ for the intermediate OpenRouter parity examples
# Optional local checks only - the primary work is in the n8n UI
python -m venv .venv && source .venv/bin/activate
pip install openai
export OPENROUTER_API_KEY="sk-or-v1-..."Basic Examples
1. Map the Three-Node Spine
Before clicking, write the path as plain text so the canvas stays intentional.
[Manual Trigger]
↓
[LLM / AI node: classify or draft]
↓
[Action: Slack / email / sheet / HTTP]- Every agent-style Zap or n8n flow is a variation of this spine.
- Name the outcome first (for example "post triage label to Slack"), then pick nodes.
- If you cannot name the action, you are not ready to add an LLM.
Related: When Visual Workflow Tools Beat Writing Custom Agent Code
2. Manual Trigger → Chat Model → Set Fields
Create a workflow, add Manual Trigger, then an OpenRouter Chat Model (or OpenAI-compatible chat model pointed at OpenRouter), then a Set (Edit Fields) node.
Manual Trigger
→ OpenRouter Chat Model
system: "Reply with one short sentence."
user: "Say hello to the ops team."
→ Set
greeting = {{ $json.message?.content || $json.text || $json.output }}- Manual Trigger is the safest first fire. No webhooks yet.
- Field paths differ by node type. Inspect the node's output JSON once and pin the expression.
- Set/Edit Fields makes a stable contract for downstream nodes.
3. Pass Structured Input Into the Prompt
Replace free text with fields you will later get from forms or tickets.
Manual Trigger (or Set) produces:
{ "customer": "Acme", "issue": "Invoice PDF missing line items" }
Chat Model user message:
Customer: {{ $json.customer }}
Issue: {{ $json.issue }}
Task: Write a 2-sentence support reply. No promises about refunds.- Keep system instructions policy-heavy and user content data-heavy.
- Never put secrets in the prompt. Credentials belong in n8n credentials storage.
- Short tasks beat vague "be an agent" system prompts for first flows.
4. Add One Real Action (Slack or Email)
Wire the model output into a delivery node your team already reads.
Chat Model
→ Slack (Post Message)
channel: #agent-pilots
text: {{ $json.message?.content || $json.output }}- Prefer a dedicated pilot channel so noise is contained.
- On first runs, post the raw model text plus a static prefix like
[pilot]. - Confirm the credential uses a least-privilege bot, not a personal full-access token when avoidable.
5. Branch on a Label Before Side Effects
Insert an IF / Switch after the LLM so low-confidence or wrong-class items do not write to production systems.
Chat Model
system: "Reply with exactly one token: BILLING, TECH, or OTHER."
→ Switch on {{ $json.output || $json.message.content }}
BILLING → Notify finance channel
TECH → Create helpdesk draft
OTHER → Slack #triage-review only- Force a closed label set before you trust open-ended prose for routing.
- Put irreversible actions only on high-trust branches.
- Log the label and original payload side by side for later evals.
Intermediate Examples
6. HTTP Tool Step as a Poor Man's Function Call
When you are not ready for a full AI Agent node, chain Chat Model → HTTP Request → second Chat Model (or Set).
1) Chat Model: extract city name from user text → { "city": "..." }
2) HTTP Request: GET weather or CRM lookup using {{ $json.city }}
3) Chat Model: draft answer using HTTP body as context- This is a fixed plan, not an open tool loop. That is a feature for controllability.
- Cap response body size. Huge JSON will blow the next prompt.
- Store API keys in credentials or header auth, never in node parameters committed to git exports casually.
7. AI Agent Node With One Tool Attached
Graduate the fixed chain into n8n's AI Agent (or equivalent agent) node with a single tool sub-node (HTTP, calculator, or app action).
Chat Trigger or Manual Trigger
→ AI Agent
model: OpenRouter Chat Model (tool-capable slug)
system: "You help look up order status. Use the tool when an order id is present."
tools: [HTTP Request tool → GET /orders/{{ id }}]
→ Slack / Respond to Webhook- Start with one tool. Kitchen-sink tool belts confuse the model and the run log.
- Prefer models with reliable tool calling on OpenRouter (verify at build).
- Set max iterations / timeout options if the node exposes them so the loop cannot run unbounded.
8. Parity Call in Python via OpenRouter
Mirror the same prompt outside n8n so you have a migration seed and an offline test.
import os
from openai import OpenAI
client = OpenAI(
base_url="https://openrouter.ai/api/v1",
api_key=os.environ["OPENROUTER_API_KEY"],
)
SYSTEM = "Reply with exactly one token: BILLING, TECH, or OTHER."
user_issue = "My invoice PDF is missing line items."
resp = client.chat.completions.create(
model="openai/gpt-4o-mini", # verify slug at build
messages=[
{"role": "system", "content": SYSTEM},
{"role": "user", "content": user_issue},
],
)
print(resp.choices[0].message.content)
print(resp.usage)- Keep system strings identical to the n8n node so behavior can be compared.
- Save three to five golden inputs with expected labels as your first eval set.
- When code and canvas disagree, fix the prompt contract before adding features.
Related: From No-Code Prototype to Custom Code: A Migration Path
What to Practice Next
- Replace Manual Trigger with Webhook or Schedule once the path is stable.
- Route the chat model through OpenRouter with explicit model slugs and spend hygiene.
- Write down graduation signals (volume, branching complexity, compliance) before the graph grows.
Related: Zapier's AI Agent Actions for Business Process Automation
Related: Limitations of Visual Builders for Complex Agent Logic
Stack versions: Pins from the category manifest (verify at build): OpenRouter (~315+ models, July 2026 pricing/fees); LangGraph 1.0+; CrewAI 1.14+; Microsoft Agent Framework 1.0; Vercel AI SDK 6; Pydantic AI (latest); LlamaIndex (latest); OpenAI Agents SDK (latest + MCP); MCP (Linux Foundation governance); A2A (HTTP+SSE+JSON-RPC 2.0); Solana
@solana/web3.js+@solana/spl-token.