Skip to main content

AI & Agents

The AI runtime: single-shot model calls, a tool-using ReAct agent with memory, a multi-agent orchestrator, LLM-powered branching, RAG retrieval, web search, and vision/multimodal analysis. See AI Agents & Tools for the conceptual overview, built-in tool list, and memory model — this page is the field-level configuration reference.

llm

Single call to a chat-completion model. Returns the raw text response plus token usage and an estimated USD cost.

{
"id": "summarize",
"type": "llm",
"config": {
"provider": "anthropic",
"model": "claude-sonnet-4-6",
"api_key": "{{ secret.ANTHROPIC_API_KEY }}",
"system": "You are a concise summarizer.",
"prompt": "Summarize: {{steps.fetch.output.body}}",
"max_tokens": 1024,
"temperature": 0.3
}
}
FieldTypeDefaultDescription
providerstring"anthropic"anthropic, openai, gemini, ollama, openrouter, groq, deepseek, nvidia, or custom (any OpenAI-compatible endpoint).
modelstringprovider-specificE.g. claude-sonnet-4-6 (anthropic), gpt-4o (openai), gemini-2.5-flash (gemini), llama3.2 (ollama), llama-3.3-70b-versatile (groq), deepseek-chat (deepseek), meta/llama-3.1-70b-instruct (nvidia), anthropic/claude-sonnet-4-6 (openrouter).
promptstring (expression)Required. The user message.
systemstring"" (anthropic/gemini) or "You are a helpful assistant." (others)System prompt.
api_keystring (expression)Required for all providers except ollama. Usually {{ secret.* }}.
base_urlstringprovider defaultRequired for custom; overrides the endpoint for ollama (default http://localhost:11434/v1) and other providers.
max_tokensnumber1024Maximum output tokens.
temperaturenumberprovider defaultSampling temperature; omitted from the request if unset.
top_pnumberprovider defaultNucleus sampling.
top_knumberprovider defaultAnthropic/Gemini only.
frequency_penalty / presence_penaltynumberprovider defaultOpenAI-compatible providers only.
seednumberOpenAI-compatible providers only (deterministic sampling where supported).
stop_sequencesstring (comma- or \n-separated)Stop sequences.
response_formatstring"json_object" or "json_schema" — OpenAI-compatible providers only.

Output:

FieldTypeDescription
textstringThe model's response text.
model / providerstringThe resolved model and provider.
usageobjectRaw usage object as returned by the provider.
input_tokens / output_tokensnumberPrompt and completion token counts.
cost_usdnumberEstimated cost based on a built-in per-model pricing table (per-million-token input/output rates for Anthropic, OpenAI, Gemini, NVIDIA NIM, Groq, DeepSeek, and OpenRouter). Returns 0 for ollama (local) and for any model not in the pricing table.
resolved_prompt / system_promptstringThe prompt and system prompt after expression resolution.

agent

Runs a full ReAct (reason + act) tool-calling loop as a single durable Temporal activity, powered by the Eino agent framework (EinoAgentNode, the registered implementation of type: "agent"). An older AgentNode in internal/nodes/ai/agent.go defines the same Type() but is not registered with nodes.GlobalRegistry — it is legacy/unused, retained only as a helper invoked internally by the orchestrator node's per-role workers.

See AI Agents & Tools for the full list of builtin_tools, connector tools, skills, and how memory works.

{
"id": "research_agent",
"type": "agent",
"config": {
"provider": "anthropic",
"model": "claude-sonnet-4-6",
"api_key": "{{ secret.ANTHROPIC_API_KEY }}",
"system": "You are a research assistant. Always cite sources.",
"prompt": "Research recent news about {{trigger.body.topic}} and write a 3-paragraph brief.",
"max_turns": 15,
"temperature": 0.3,
"builtin_tools": ["web_search", "kb_search", "current_datetime"],
"tools": [
{ "type": "connector", "connector_type": "tool-slack", "actions": ["send_message"] }
],
"skills": ["skill_abc123"],
"memory_mode": "session",
"memory_session_id": "{{trigger.body.user_id}}",
"memory_window": 20
}
}
FieldTypeDefaultDescription
providerstring"anthropic"anthropic, openai, nvidia, or any other value combined with base_url (OpenAI-compatible).
modelstringclaude-sonnet-4-6 (anthropic), gpt-4o (openai), meta/llama-3.1-70b-instruct (nvidia)Model ID.
api_keystring (expression)Required.
base_urlstringprovider defaultRequired for providers other than anthropic/openai/nvidia.
systemstring"You are a highly capable AI agent. Think step by step. Use tools when needed."Base system prompt. The platform appends a tool manifest and (if memory_mode is enabled) prior conversation context.
promptstring (expression)Required. The task/user message for this run.
temperaturenumberprovider default-1 (unset) leaves it to the provider.
max_turnsnumber15Maximum reasoning/tool-call iterations. Internally mapped to an Eino graph step budget (max_turns*3 + 5); exceeding it returns an error suggesting you raise max_turns or simplify the prompt.
builtin_toolsarray of strings[]Platform tool names — see Built-in tools.
toolsarray of objects[]Connector-backed tool definitions, e.g. { "type": "connector", "connector_type": "tool-github", "actions": ["create_issue"] }.
skillsarray of strings[]Skill IDs exposed via progressive disclosure (name + description until called).
max_skill_roundsnumber20Max internal reasoning rounds when a skill is invoked.
searxng_urlstring"http://localhost:8888"SearXNG instance used by the web_search/search built-in tool.
memory_modestring"none""none" or "session" — see Memory.
memory_session_idstring (expression)derivedConversation key for memory. Falls back to trigger.session_id, then the execution ID.
memory_windownumber20Number of past turns loaded into the system prompt.

Output:

FieldTypeDescription
textstringThe agent's final answer.
tool_callsarrayFull reasoning trace — each entry has name, input, output, error, started_at, duration_ms.
turnsnumberNumber of tool calls made (len(tool_calls)).
resolved_prompt / system_promptstringPrompt and system prompt after resolution (system prompt includes the appended tool manifest and memory context).
provider / modelstringThe resolved provider and model.
warningstringPresent only if tools were configured but none were called.
note

Unlike llm, the agent node's output map does not currently include input_tokens, output_tokens, or cost_usd — token/cost accounting referenced in AI Agents & Tools applies to the llm node's output shape; per-step cost tracking for agent runs is derived from the underlying model calls rather than the top-level step output.

orchestrator

Runs a supervisor + specialist multi-agent team for complex tasks (e.g. software engineering), iterating between workers and a reviewer.

{
"id": "build_feature",
"type": "orchestrator",
"config": {
"task": "Build a REST API for user management in Go",
"provider": "anthropic",
"model": "claude-sonnet-4-6",
"api_key": "{{ secret.ANTHROPIC_API_KEY }}",
"team": ["architect", "developer", "reviewer", "tester"],
"max_rounds": 3
}
}
FieldTypeDefaultDescription
taskstring (expression)Required. The overall objective.
providerstring"anthropic"anthropic, openai, or nvidia (passed through to each role's underlying agent).
modelstringprovider defaultModel ID used by every role.
api_keystring (expression)Required.
teamarray of stringsall four rolesSubset/order of architect, developer, reviewer, tester. Unrecognized or empty input falls back to the full default team.
max_roundsnumber2Number of architect → workers → reviewer iteration rounds. Stops early once the reviewer responds with APPROVED after round 1.

Each role runs with a fixed system prompt and a fixed built-in tool set (architect: search, browser; developer/tester: terminal, write_file, read_file, list_files, git; reviewer: terminal, read_file, list_files) via the legacy internal agent runner, with max_turns: 20 per role.

Output:

FieldTypeDescription
reportstringMarkdown report combining each role's output, in architect → developer → reviewer → tester order.
resultsobjectMap of role name → that role's raw text output (or "ERROR: ..." if the role failed).
taskstringThe resolved task string.

condition_agent

Uses an LLM to pick exactly one of several named scenarios, exposing the choice as a branch for branch_deps — a semantic counterpart to the rule-based condition/switch nodes.

{
"id": "classify_ticket",
"type": "condition_agent",
"config": {
"provider": "anthropic",
"api_key": "{{ secret.ANTHROPIC_API_KEY }}",
"model": "claude-haiku-4-5-20251001",
"instructions": "Classify this support ticket.",
"input": "{{trigger.body.message}}",
"scenarios": ["billing", "technical", "other"]
}
}
FieldTypeDefaultDescription
provider / api_key / model / base_urlsame as llmPassed straight to an internal llm call.
instructionsstring (expression)""What the router should decide, e.g. "Is the user asking about billing?".
inputstring (expression)Required. The text/value to classify.
scenariosarray, JSON-array string, or comma/newline-separated stringRequired, minimum 2. Each entry is either a plain string or { "scenario": "..." }.
temperaturenumber0Deterministic by default.

Matching is exact → prefix → substring → last scenario as the catch-all "else" branch.

Output:

FieldTypeDescription
branchstringThe selected scenario — used by the workflow engine's branch_deps to gate downstream steps.
scenariostringSame value as branch.
indexnumberIndex of the matched scenario in scenarios.
scenariosarrayThe full resolved scenario list.
llm_outputstringRaw text returned by the underlying model.

query-kb

Performs vector similarity search against a Knowledge Base and returns the top-matching chunks, both structured and as a ready-to-inject text block.

{
"id": "search_docs",
"type": "query-kb",
"config": {
"kb_id": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
"query": "{{trigger.body.question}}",
"top_k": 5
}
}
FieldTypeDefaultDescription
kb_idstring (UUID)Required. The Knowledge Base to search.
querystring (expression)Required. The search query; embedded using the KB's configured embedding model.
top_knumber5Clamped to the range 1–20.

Output:

FieldTypeDescription
resultsarrayEach entry: chunk_id, doc_id, doc_name, content, score, metadata.
contextstringAll results concatenated as [Source: <doc_name>, Score: <score>] followed by <content>, separated by ---, ready for prompt injection.
totalnumberNumber of results returned.
querystringThe resolved query.
kb_id / kb_namestringThe KB queried.

The same retrieval is also available to agents as the kb_search built-in tool (see AI Agents & Tools).

AI-powered web search that returns a synthesized answer with citations — distinct from query-kb, which searches your own Knowledge Base documents rather than the live web.

{
"id": "web_research",
"type": "ai-search",
"config": {
"provider": "perplexity",
"api_key": "{{ secret.PERPLEXITY_API_KEY }}",
"query": "{{trigger.body.topic}} latest news",
"model": "sonar",
"max_results": 5
}
}
FieldTypeDefaultDescription
providerstring"perplexity"perplexity, tavily, or brave.
api_keystring (expression)Required.
querystring (expression)Required.
max_resultsnumber5Maximum results returned.
modelstring"sonar"Perplexity only — sonar, sonar-pro, sonar-deep-research.
search_depthstring"advanced"Tavily only — basic or advanced.
include_answerstring ("true"/"false")"true"Tavily only — whether to include a synthesized AI answer.
countrystring"US"Brave only — country code.
freshnessstringBrave only — pd (past day), pw, pm, or py.

Output:

FieldTypeDescription
answerstringSynthesized answer (Perplexity and Tavily only — empty for Brave, which returns raw results only).
resultsarray{ title, url, snippet, score } (fields populated vary by provider; Perplexity only populates url per citation).
citationsarray of stringsSource URLs.
querystringThe resolved query.
providerstringThe provider used.
modelstringPerplexity only — model used.
input_tokens / output_tokensnumberPerplexity only — prompt/completion token counts.

vision

Sends an image to a multimodal model for analysis — OCR, chart reading, image classification, general description.

{
"id": "read_screenshot",
"type": "vision",
"config": {
"provider": "openai",
"api_key": "{{ secret.OPENAI_API_KEY }}",
"image_url": "{{steps.upload.output.url}}",
"prompt": "Extract all text from this image.",
"model": "gpt-4o"
}
}
FieldTypeDefaultDescription
providerstring"openai"openai or anthropic.
api_keystring (expression)Required.
image_urlstring (expression)URL to the image. One of image_url or image_base64 is required. Anthropic accepts URL sources directly; OpenAI accepts a hosted URL or data URL.
image_base64string (expression)Base64-encoded image data, alternative to image_url. MIME type is auto-detected from the data's leading bytes (PNG, GIF, WEBP; defaults to JPEG).
promptstring (expression)"Describe this image in detail. Extract any visible text (OCR). List the main objects and their approximate positions."What to ask about the image.
modelstringgpt-4o (openai), claude-haiku-4-5-20251001 (anthropic)Vision-capable model. Other examples: gpt-4o-mini, claude-opus-4-7.
detailstring"auto"OpenAI only — auto, low, or high.
max_tokensnumber1024Maximum output tokens.

To analyze a file produced inside a sandbox (e.g. a generated chart or a PDF page rendered to an image), first write it to durable storage or convert to base64 with a code step, then pass the result as image_url/image_base64vision itself does not read directly from the sandbox filesystem.

Output:

FieldTypeDescription
descriptionstringThe model's response text.
model / providerstringThe resolved model and provider.
input_tokens / output_tokensnumberPrompt/completion token counts.

Next