Skip to main content
Last updated: 2026-09-06
orca agents create -f <path> and orca agents update -f <path> take an agent document: a YAML or JSON description of an agent profile. YAML is a superset of JSON, so one parser reads both; the file extension does not matter. Pass - to read the document from stdin. The CLI validates the document’s shape before anything is sent, so a typo comes back as a field-level message rather than a 400 from the server. Values the server owns, such as whether a model id or skill name exists, are checked server-side.

Example

agent.yaml

Fields

Any other top-level key produces a warning naming the key and is not sent. With --strict, warnings become errors and the command exits 2.
workerMode, workerSubstrate, workerImage, and catalog ref entries are accepted from the next release after cli-v0.5.0. On cli-v0.5.0 itself they are dropped with an “unknown key” warning; set them from the dashboard or the API until you update.

mcpServers

Each entry attaches one MCP server to the agent. Names must be unique within the document, and runner is reserved. An entry is either an inline server (transport and url) or a catalog reference (ref), never both. To share a server across agents, register it once with orca mcp add and attach it with orca mcp attach <agent> <name> instead. See orca mcp.

fs

Every agent already has /agents/{self}/** with read, write, and delete. fs adds to that. Empty lists are dropped. See Filesystem policy and Storage.

sandbox

Runs the agent’s tools inside a sandboxed workspace. provider is required when sandbox is present. See Sandboxes. Unknown keys inside mcpServers[], fs, sandbox, and sandbox.resources also warn rather than fail.

Validation messages

Fatal problems are listed together under invalid agent document and exit 2:
Other usage errors from the loader: a missing file, an empty file or empty stdin, and a document that fails to parse as YAML (the first line of the parser’s message is included).

Round-tripping

orca agents get <name> --json prints the stored profile, which is itself a valid document:
The stored profile includes id and server-computed fields. The CLI warns about and drops the ones it does not model (such as workerPlacement), so the file imports, but do not combine a round-tripped file with --strict.
Verified against orca-cli cli-v0.5.0 (src/lib/profile-schema.ts). The same validator runs in the dashboard’s YAML import.