Skip to main content
Every bundle has an agentos.yaml at its top level, next to the Dockerfile. It tells AgentOS what the agent is called, where its container listens, which capabilities it offers and what each one takes and returns.
agentos.yaml

Keys

There is no memory: key: every agent already has its own memory, and a memory: key is refused.

config

Your code receives config on every invocation (context.config), so models, prompts and parameters live in agentos.yaml instead of being hard-coded. That is what lets AgentOS:
  • run an eval with another model or prompt as a temporary override, without a new build;
  • turn a winning override into a new version, or edit a prompt on the Prompts tab and deploy it;
  • ask you which value to keep when an upload’s config differs from the live version’s (see Deploying).
Read model names, prompts and parameters from context.config rather than from constants, or overrides won’t reach your code.

Schema files

An input or output written as a string names a JSON file in the bundle, exactly as it is stored in the zip: schemas/in.json, with no leading / or ./, no ., .. or empty segments, and no backslashes. A schema file must be UTF-8 JSON (no NaN or Infinity) and at most 1 MiB. One file may serve several fields. $ref to other files is not followed; keep references local (#/$defs/...).

Strict parsing

agentos.yaml is read strictly, so mistakes surface at upload time instead of at run time:
  • The file must be UTF-8 and at most 1 MiB.
  • Unknown keys are refused at every level, and the error lists the allowed ones.
  • YAML anchors and aliases, duplicate keys and non-text keys are refused. on:, yes: and dates are not text in YAML: quote them.
  • Values must be plain JSON: unquoted dates, binary, sets, .nan and .inf are refused.
Every problem is reported at once, one per field, so a single upload shows you everything to fix:

Bundle limits

A bundle is a zip with the Dockerfile and agentos.yaml at its top level. The build has internet access but no secrets: never put credentials in your Dockerfile or bundle.

Container limits

Each agent container runs with:
  • 1 CPU and 1 GB of memory;
  • at most 512 processes;
  • all Linux capabilities dropped and no-new-privileges;
  • a restart unless it was stopped on purpose.
When a container stops, it gets SIGTERM and 10 seconds before it is killed. As PID 1 in its container your process has no default action for SIGTERM, so handle it and exit:

Next steps

Agent contract

The two endpoints your container serves and what each run sends.

Deploying

Live and candidate deploys, rollbacks and config differences.