Skip to main content

AI Agents & Tools

OrcFlows has AI built into the workflow engine, not bolted on as a separate product. The agent node runs a full ReAct (reason + act) loop — powered by the Eino agent framework — as a single durable Temporal activity, with access to dozens of tools, persistent memory, your knowledge bases, and any other connector.

The Agent node

{
"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": [
{ "name": "slack", "_node_type": "tool-slack", "oauth_connection_id": "{{ connection.slack }}", "actions": ["slack_send_message"] }
],
"memory_mode": "session",
"memory_session_id": "{{trigger.body.user_id}}",
"memory_window": 20
}
}
FieldDescription
provideranthropic, openai, or nvidia (NVIDIA NIM, OpenAI-compatible).
modelModel ID, e.g. claude-sonnet-4-6, gpt-4o, or any NIM model.
api_keyUsually {{ secret.* }} — see Secrets & Credentials.
system / promptSystem prompt and the (expression-resolved) user prompt for this run.
max_turnsMaximum reasoning/tool-call iterations before giving up (default 15).
temperatureSampling temperature; omit for the provider default.
builtin_toolsNames of platform tools to enable (see below).
toolsConnector-backed tool definitions — see Connector tools below.
skillsIDs of Skills to expose with progressive disclosure (name + description only, until called).
memory_modenone (default) or session — see Memory.

The agent's final answer, full reasoning trace, and token/cost accounting are returned in the step output (text, cost_usd, input_tokens, output_tokens) — visible per-step in the execution detail view.

Built-in tools

Set in builtin_tools:

ToolWhat it does
web_search / searchGeneral web search via the bundled SearXNG instance — no API key needed.
brave_searchBrave Search API (requires a Brave API key secret).
tavily_searchTavily's LLM-optimized search API.
browser / browser_automationHeadless Chromium via Playwright (CDP) — navigate pages, click, extract content, screenshot.
kb_searchSemantic search over a configured Knowledge Base.
terminalRun shell commands in the sandboxed Docker container (Sandbox).
read_file / write_file / list_filesRead/write files in the execution's workspace.
gitRun git commands in the sandbox (clone, commit, diff, etc.).
current_datetimeReturns the current date/time — handy for prompts needing "today".
github, jira, gmail, google_sheets, google_calendarDirect shortcuts to common connector actions, pre-wired with OAuth credentials.

Connector tools

Beyond the built-ins, an agent can call any of the 66 built-in connectors (GitHub, Slack, Stripe, databases, ad platforms, etc.) by listing them under tools. Each entry is an object, not just a name:

"tools": [
{
"name": "github",
"_node_type": "tool-github",
"token": "{{ secret.GITHUB_TOKEN }}",
"actions": ["github_create_issue", "github_list_repos"]
},
{
"name": "stripe",
"_node_type": "tool-stripe",
"api_key": "{{ secret.STRIPE_SECRET_KEY }}",
"actions": ["stripe_create_refund"]
}
]
FieldDescription
nameRequired, non-empty label for the tool entry (any string).
_node_typeThe connector identifier from the Connector Reference, e.g. tool-github, tool-slack, tool-sql. Both the bare (github) and tool--prefixed form work.
actionsOptional array of specific tool names to expose (e.g. github_create_issue). Each connector exposes several named tools — see its reference page for the full list. If omitted, or if none of the names match, every tool the connector provides is exposed.
oauth_connection_idFor OAuth-based connectors (Google, Slack, Notion, ...), the tenant's OAuth connection ID. Resolved to a live access token at execution time and made available to the connector as both access_token and token.
(connector-specific fields)Any other string field (e.g. token, api_key, base_url, kubeconfig) is passed through as a credential — see each connector's reference page for what it expects.

Each connector's tool functions return a string (often human-readable text, sometimes JSON-encoded) that is fed directly back to the LLM as the tool result. See the Connector Reference for every connector's tools, parameters, and required credentials.

Memory

Set memory_mode: "session" to give an agent persistent, per-session conversation memory backed by Postgres (agent_memories table):

  • memory_session_id identifies the conversation (e.g. a chat user ID, phone number, or Slack thread ID) — defaults to a value derived from the execution context if omitted.
  • memory_window controls how many past turns (default 20) are loaded and prepended to the system prompt as a transcript.
  • After each run, both the user prompt and the agent's reply are saved, so the next invocation with the same memory_session_id continues the conversation.

This is what powers chat deployments and conversational voice agents.

Condition Agent

The condition_agent node (type: "condition_agent") uses an LLM to make a branching decision in natural-language terms — e.g. "classify this support ticket as billing, technical, or other" — and exposes true/false (or named) branches for branch_deps, just like the Condition node.

Multi-agent Orchestrator

The orchestrator node (type: "orchestrator") runs a supervisor + specialist team pattern for complex tasks (e.g. software engineering):

{
"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
}
}

The default team:

  1. Architect — breaks the task into subtasks and defines the tech stack/structure.
  2. Developer — implements each subtask in the sandbox.
  3. Reviewer — reviews the code for correctness and quality.
  4. Tester — runs tests and reports results.

The supervisor iterates max_rounds times between workers and reviewers before producing a final report. This is the foundation for engineering-team-style automations (e.g. "open a PR that fixes this bug").

RAG: Query Knowledge Base

The query-kb node and the kb_search agent tool both perform semantic search over a Knowledge Base, returning the top-matching chunks with similarity scores — use them to ground LLM/agent responses in your own documents.

Vision & multimodal

The vision node and document node's vision_analyze action send images/PDFs to a multimodal model (Claude or GPT-4o) for analysis — useful for OCR fallback, chart reading, and image classification steps.

Next