Skip to main content
APP.md is the root manifest of an Agent Application package. It tells a runtime how to discover, activate, and operate the application. Every compliant package must have one. The file has two parts:
  • YAML frontmatter — machine-readable fields between --- delimiters at the top of the file.
  • Markdown body — human-readable documentation sections that follow the frontmatter.

Frontmatter field reference

Common fields

string
The schema identifier for this manifest. Set to agentapplications/v1 to declare compliance with this specification. Optional — the filename already implies the kind — but recommended for tooling.
string
The package kind. For APP.md files the value is app. Optional when the filename already makes the kind unambiguous.
string
A stable, portable identifier for the package. Use kebab-case. Recommended — runtimes and catalogs use it to reference the package consistently across environments.
string
required
The human-readable name of the application. Displayed in catalogs and runtime UIs.
string
required
A short description used for discovery and cataloging. Keep it to one sentence.
string
required
The package version. Used by runtimes and catalogs to track releases and changes.
string
A license identifier or reference. Optional.
array
Attribution metadata. Optional.
array
Search and classification metadata. Optional. Runtimes MAY use tags for filtering or grouping packages.
object
Tool-specific extensions. Optional. Use this for any fields a specific runtime or host tool needs that are not covered by the standard fields.

Application-specific fields

string
required
The callable CLI entrypoint for the application. The spec does not constrain whether it is a binary, shell command, script, wrapper, or other callable entry — as long as a compatible client can invoke it and receive structured JSON output.
array
required
A list of documented command names or command paths that the CLI exposes. In v1 this is a simple list, not a command-definition DSL.
array
required
A list of local skill shortnames. By convention, a shortname like agentic-to-do-usage resolves to skills/agentic-to-do-usage/SKILL.md. A runtime loads these files when it activates the package.
string
Indicates whether the application exposes scheduling-related CLI commands. Allowed values are supported and notSupported. Optional — omit if scheduling is not relevant to your application.If you set this to supported, document the relevant scheduling commands in the body of APP.md.
array
A list of command names that require explicit user confirmation before execution. Use this for destructive operations such as remove or delete. Optional.
Write the body of APP.md in plain Markdown after the frontmatter. Include these sections in order:
  1. Purpose — what the application does and why it exists.
  2. CLI — the entrypoint, default output mode, and any environment variables that affect behavior.
  3. Commands — one subsection per command with signature, flags, and a brief description.
  4. Output — the JSON shape for success and failure responses.
  5. State — where and how the application stores data.
  6. Scheduling — which commands support scheduling and how to invoke them.
  7. Confirmations — which commands require --confirm or equivalent and why.
  8. Skills — which skill files to load and what each one covers.
These sections are recommendations, not requirements. A minimal APP.md body can be as short as needed — the frontmatter carries the machine-readable contract.

JSON output format

Every CLI command must return JSON by default. Success shape (exit code 0):
Failure shape (non-zero exit code):
The exact output shape is application-defined. The spec requires that successful commands write parseable JSON to stdout and that failing commands return a non-zero exit code. Structured JSON errors on failure are strongly recommended but not strictly required.

Full example: Agentic To-Do

The following is the complete APP.md from the Agentic To-Do reference application.