Skip to main content
orchagent has four canonical types: prompt, tool, agent, and skill.
Building with an AI coding assistant? Install the agent-builder skill to give your AI the complete platform reference — sandbox contracts, boilerplate code, environment details, and debugging patterns:
This works with Claude Code, Cursor, Amp, and other AI tools. Your AI will have everything it needs to build agents on orchagent without trial and error.

The Four Types

The first three are executable. Skills are passive knowledge that enhances other types.
Quick distinction: prompt types answer questions. tool types run your code. agent types reason and iterate with tools. skill types teach other agents.

Type determines execution engine

The type field sets sensible defaults for how your agent executes. You can still override with explicit declarations: You also control when the agent runs: And whether the agent is callable by other agents:
Start with the type that matches your use case. The type provides the right execution defaults automatically. You only need to override with runtime or loop declarations if you’re doing something non-standard.

Which Type Should I Use?

Ask yourself one question: what does your agent need to do?
Start with the simplest type that works. Most use cases need only a prompt (prompt + schema). If you need the LLM to iterate with tools, use agent. Only reach for tool when you need full programmatic control or don’t need an LLM.

Common Use Cases

Not sure which pattern fits? Find your use case below:
Still unsure? Start with type: "prompt". If you find yourself thinking “I wish it could run a command” or “it needs to iterate,” switch to type: "agent". If you need full control, use type: "tool". You can always change later — just update the type field.

Prompt Type (type: "prompt")

The simplest type. You provide a prompt template with variable placeholders, and orchagent handles the LLM call. Execution engine: direct_llm. When to use:
  • Single LLM call is sufficient
  • No external API calls needed
  • No complex logic or branching
What you provide:

Example

orchagent.json:
prompt.md:
schema.json:

Prompt Variables

Use {{variable}} syntax in your prompt.md:
Variables are replaced with input values at runtime. All template variables must be provided with non-empty values — the API returns a 400 MISSING_INPUT_FIELDS error listing any that are missing.

Agent Type (type: "agent")

Agent types give the LLM a tool-use loop inside a sandbox. Think of it as “Claude Code in a container, configured by you.” The platform provides built-in tools (bash, file read/write, list files) and you can define custom command-wrapper tools. The LLM iterates autonomously until it solves the task and submits a result. Execution engine: managed_loop. When to use:
  • The task requires running commands, reading/writing files, or iterating
  • You want the LLM to figure out the steps, not hard-code them
  • You’d otherwise write code just to orchestrate LLM + subprocess calls
What you provide:
What you declare in the manifest:
What the platform provides:
  1. E2B sandbox with your custom environment (if Dockerfile provided)
  2. Built-in tools: bash, read_file, write_file, list_files, submit_result
  3. Your custom tools converted to named tool definitions
  4. A managed loop that runs until the LLM calls submit_result or hits max_turns

Custom Tools

Custom tools are command wrappers that give the LLM clean, named operations instead of having to guess shell commands. Simple tools (no parameters):
Tools with parameters (use {{param}} placeholders):
The LLM sees named tools like run_tests and deploy instead of guessing raw bash commands. Bash is always available as a fallback for ad-hoc commands.

Built-in Tools

Every managed loop agent automatically gets these tools:

Safety Limits

Provider Support

Managed loop agents currently support Anthropic (Claude) only. Why? The managed loop uses Claude’s native tool-use protocol: the platform sends a system prompt with tool definitions, the LLM returns tool_use blocks, the platform executes them in the sandbox, and feeds tool_result messages back. This cycle repeats until the LLM calls submit_result or hits max_turns. The implementation relies on Anthropic-specific message formatting (system/user/assistant roles with structured tool-use content blocks) that doesn’t map 1:1 to other providers’ tool-calling APIs. Multi-provider support for managed loop is on the roadmap. In the meantime, if you need to use OpenAI or Gemini models in a tool-use loop, use a code runtime agent instead — you have full control over the LLM calls and can use any provider’s SDK directly.

Tool Type (type: "tool")

Tool types run your Python or JavaScript in E2B sandboxes — secure, isolated environments. Each call spins up a fresh sandbox, runs your script, and returns the result. You have full control over everything. Execution engine: code_runtime. When to use:
  • You need full programmatic control over the execution flow
  • Your use case doesn’t need an LLM at all (pure data processing, file conversion, etc.)
  • You need multi-model orchestration (calling different LLMs for different steps)
  • You have an existing codebase you want to wrap as an agent
  • Agent types don’t give you enough control
What you declare in the manifest:

Example

Input/Output Contract

Code runtime agents communicate via stdin/stdout as JSON. Standard input:
File uploads: When files are uploaded, you receive a manifest:
Standard output:

Directory Structure

The CLI auto-detects entrypoints: main.py, app.py, index.py, main.js, index.js. Override with:

Skills in Tool Types

Tool types can access skills at runtime. When skills are passed via the --skills flag or X-Orchagent-Skills header, they are mounted as files in your sandbox:
Skills are written to /home/user/orchagent/skills/ with filenames like org_name_version.md. A manifest.json file provides metadata for programmatic access.

Skill Type (type: "skill")

Skills are passive knowledge — markdown files containing instructions, rules, or expertise that enhance agents. They are not runnable. Use cases:
  • Coding standards (React patterns, security rules)
  • Domain knowledge (legal requirements, company policies)
  • Writing guidelines (tone, formatting, brand voice)

SKILL.md Format

Skills use the Agent Skills standard:

Frontmatter Fields

Using Skills

Install locally for any AI coding tool:
Writes to .claude/skills/, .cursor/skills/, .codex/skills/, .agent/skills/. Compose with agents at run time:

Using Agents as Sub-Agents

Export agents as sub-agent configuration files for AI tools:
See CLI Commands for full details.

LLM Provider Configuration

Specify supported providers in your manifest:
Use "any" if your agent works with any provider:
agent types (managed loop) currently only support "anthropic". This will be expanded in the future.

Choosing the Right Type


Migration Note

February 2026: orchagent uses four canonical types: prompt, tool, agent, skill. Legacy type values code and agentic are still accepted by the API and CLI for backward compatibility:
  • codetool (execution engine: code_runtime)
  • agenticagent (execution engine: managed_loop)
The execution_engine field (direct_llm, managed_loop, code_runtime) is inferred from your type at publish time. You do not need to set it manually — the type provides the right default.

Next Steps

Manifest Format

Full orchagent.json schema

Publishing

Publish your agent or skill

Orchestration

Compose agents and skills

Agent Builder Skill

Run orch skill install orchagent/agent-builder to give your AI coding tool the complete platform reference for building agents.