orchagent.json file that defines its configuration, dependencies, and runtime limits.
Skills use a different format. Skills use a
SKILL.md file with YAML frontmatter instead of orchagent.json. See Agent Types for the SKILL.md format.Basic Structure
Versions are auto-assigned. You don’t need to specify a
version field in your manifest. The server automatically assigns versions on each publish (v1, v2, v3…).Required Fields
Behavior Fields
These fields control how and when the agent runs. Thetype field sets the default execution engine, but these declarations can override it.
runtime
Declares that the agent runs custom code:loop
Declares that the agent uses a managed LLM tool-use loop:Optional Fields
Default Models
Control which LLM model runs your agent by default for each provider. Thedefault_models field is an object mapping provider names to model IDs:
Model Resolution Order
When your agent runs, the model is resolved in this order:- Caller override —
orch run --model <model>(highest priority) - Agent default —
default_models[provider]from your manifest - Platform default — built-in defaults per provider
orch publish and orch validate will warn if your model IDs don’t match known provider patterns (e.g. gpt-* for OpenAI, claude-* for Anthropic, gemini-* for Gemini). This catches typos and mismatches before they cause 404 errors at runtime.Workspace Secrets
Declare the environment variables your agent needs at runtime usingrequired_secrets, and variables that unlock additional features using optional_secrets. Both are matched by name against your workspace secrets vault and injected as env vars into the sandbox.
How it works
- You declare
required_secretsandoptional_secretsinorchagent.json - You add secrets to your workspace vault (dashboard or
orch secrets set) - At runtime, the platform matches secret names and injects them as env vars
- On-demand runs (
orch run): returns a400 MISSING_SECRETSerror if any required secrets are missing from the vault. Optional secrets are injected if present, silently skipped if not. - Service deploys (
orch service deploy): auto-readsrequired_secretsand validates against the vault before deploying. No--secretflags needed. - Schedules: same injection — required secrets must exist in the vault at execution time
orch info: shows both required and optional secrets so users can discover all available configuration
Optional secrets
Useoptional_secrets to declare env vars that aren’t needed to run but unlock additional features — notification webhooks, backup integrations, model overrides, tuning parameters, etc. Without this field, users have no way to discover these options except by reading the README.
Publish enforcement
orch publish blocks tool and agent types that don’t declare required_secrets. This ensures the Agent Requirements UI and service auto-resolution always have accurate data. Use --no-required-secrets to bypass this check if your agent genuinely needs no secrets.
Prompt and skill types are exempt. optional_secrets is never enforced — it’s purely informational.
Tool Type Fields
Additional fields fortool types (code runtime — runtime.command):
Bundle Configuration
Control what files are included in your code bundle:Example
For E2B sandbox execution (recommended), only
runtime.command (or entrypoint) is needed. The source_url and run_command fields are for local execution support.Prompt Type Fields
Additional fields forprompt types (direct LLM — no runtime or loop):
Example
Agent Type Fields
Additional fields foragent types (managed loop):
Custom Tools Format
Each custom tool has:Example
Agent types also get built-in tools automatically:
bash, read_file, write_file, list_files, and submit_result. You don’t need to define these. See Agent Types for details.Skill Composition
Agents can include skills by default using thedefault_skills field. Skills are injected into the agent’s prompt at runtime.
--skills org/skill- Add more skills--skills-only org/skill- Replace default_skills entirely--no-skills- Ignore all skills
Locking Skills
Addskills_locked: true to prevent callers from overriding your default skills:
Manifest Section (for Orchestrator Agents)
Agents that call other agents need amanifest section:
Manifest Fields
Dependency Format
Orchestration Mode
Controls whether a managed-loop orchestrator must delegate to its declared dependencies or can solve tasks directly with built-in tools likebash.
Rules:
- Only applies to managed-loop agents (
type: "agent"orloopdeclared) withdependencies. - If
dependenciesis empty or absent, the field is ignored. - Orchestrators with dependencies default to
"strict"unless you explicitly set"flexible". - In multi-agent chains, strict mode is inherited downward — a strict parent forces all downstream agents to run strict, regardless of their own setting.
Validation Rules
The platform validates manifests on publish:- Dependencies exist - All declared dependencies must be registered
- No cycles - Dependency graph must be acyclic
- max_hops >= 1 - Required when dependencies are declared
- Version pins - Dependencies must specify exact versions
- No conflicts -
runtimeandloopcannot both be declared - Run mode compatibility -
always_onrequiresruntime.commandorloop(cannot be used withdirect_llm)