Specification · Draft 0.1 · October 2026. This is a draft for
implementers to test, not a standard. It becomes a candidate specification
when two independent Agent Application Platforms read it. Comment in
Discussions.
agentapp.yaml, at the root of
an Agent Project. It tells an Agent Application Platform what the project
needs to become a release and run as instances: which framework runs it, who
gets an instance, what the workspace must keep, what starts a session, and
what authority the application asks for.
The manifest does not restate the agent program. Models, instructions,
skills, tools, and subagents stay in the framework’s native files, where the
framework already defines them. The manifest points to those files.
Why a manifest
Platforms that run persistent agents now exist at every layer, from Kubernetes runtimes to consumer products. Their definition formats disagree on the agent program itself: the same instruction field is calledinstruction,
instructions, system, and system_prompt, and “skills” means four
different things. The same formats mostly omit what a platform needs to
operate an instance. Few declare schedules, none declares the privacy
boundary, and only one sets which workspace state survives suspension. Section 20.1 of the paper gives the evidence.
The manifest covers that gap, at the boundary between the framework and the
platform. devcontainer.json is
the closest precedent: one file that several tools read to create a
development environment, while the project keeps its own build system.
Scope
The manifest covers:- the application identity and the native project’s framework and entry points;
- an optional inventory of components, for review;
- plugin dependencies;
- the privacy domain and the key that selects an instance;
- what the workspace must preserve;
- the execution environment;
- triggers and interfaces;
- requested authority: identity model, connections, secret names, network destinations, spending ceilings, and default approval rules;
- evaluation suites.
- the agent program (models, instructions, tool definitions);
- secret values, granted authority, or per-instance settings;
- workspace contents, export, or lineage;
- packaging, signing, or distribution;
- runtime protocols, which MCP, A2A, and AG-UI already cover.
File
- The file is named
agentapp.yamland sits at the project root. A project has at most one manifest. - Its content is a JSON document written in YAML. Tools may accept the same
document as
agentapp.json; a project that contains both is invalid. - The
$schemafield names the specification version. It is the only version field for the specification.application.versionis the application’s own version. - The JSON Schema is published at
https://agentapplication.io/schemas/agentapp/0.1/agentapp.schema.json, which is also its$id. The source isdocs/schemas/agentapp/0.1/agentapp.schema.jsonin the repository. - Paths are relative to the manifest’s directory and cannot leave it.
- An Agent Application Manifest is not an OCI image manifest. A release
packaged as an OCI artifact has both: the OCI manifest lists the artifact’s
layers, and
agentapp.yamlis one of the files inside it.
Examples
The Hello World notebook keeps its Goose recipe and its platform’sdharta.toml. The manifest sits beside them:
agentapp.yaml
examples/durable-notebook/agentapp.yaml.
The paper’s Financial Advisor Agent (Appendix A)
shows more of the format:
agentapp.yaml
Fields
Every field traces to a paper section, and to existing formats that carry the same information where any do. A field with neither does not belong in the draft.
Durable data is always preserved; that is what makes the workspace durable.
workspace.persistence states only the other layers: whether installed
software must survive (system) and whether running processes must survive
suspension (process). The paper’s section 14.5 describes these layers.
Model access for the harness is the platform’s job and is not part of
authority.network.egress.
Approval rules
The four rules are the ones in section 17.5. Platforms translate them to their own settings. Docker Agent’sallow, ask, and deny correspond to
silent, ask, and never. Claude Managed Agents’ always_allow and
always_ask correspond to silent and ask. Settings in which a reviewer
model decides, such as auto, have no equivalent in this draft.
The release record
A release resolves what the manifest requests. Draft 0.1 does not define a release record format. A release record should state:- the manifest and source revision it was built from;
- the exact framework, harness, and model versions it was tested with;
- each plugin’s source, version, and content digest;
- a digest for every component in the inventory;
- the evaluation results that gated the release.
claude-lock.json in Claude Managed Agents,
kagent’s prepared revisions, and the file inventory in NVIDIA’s agent package
proposal.
Platform behavior
A platform that reads a manifest:- must create instances at the declared privacy domain and route by the declared key;
- must preserve every workspace layer marked
required, or refuse to deploy; - must not grant authority because the manifest requests it; the user, organization, or resource owner grants it;
- must reject a manifest with unknown top-level fields, and must ignore
extensionskeys it does not recognize; - should report each requirement it cannot satisfy by field name, rather than deploy without it.
Relationship to other formats
Vendor terms for projects, releases, instances, workspaces, and sessions
differ. Appendix E of the paper maps them.
Open issues for draft 0.2
- A release record format and its signing.
- Workspace export and lineage, as a separate contract.
- Person-centered hosts where several published agents share one instance (paper section 13.1).
- Approval scopes and reviewer-model decisions.
- Model requirements, such as required capabilities or data residency.
- Artifact types and sharing rules.