Generated from
schemas/design/manifest.schema.json,
the same file your editor checks a manifest against as you type.Example
components/product-card/manifest.yaml
apps/acme-chat/manifest.yaml
Fields
string
The definition name. Matches the folder (and the Ref), capitals included.
string
Display name.
string
What it is. The single home for this text — never duplicated in the definition envelope.
string
The text an Agent’s search is ranked against, so this is what decides whether the component is ever chosen. Write the words a person would actually say, outcome first, and disqualify by property rather than by naming a sibling. Getting it wrong fails silently: the component still works, it is just never picked. Full rules: Node discoverability, which applies to components and apps verbatim.
string
The job’s domain, used in discovery ranking. Name the work, never the build.
string
The definition’s version.
string
LEGACY arrival state (STATE MODEL v2). A component declares its arrival as the
initial of its state.view tree; an app’s base is the first entry of states:. Kept only so unmigrated folders still read.object
The state tree. Each state owns the layout that draws it, and a component’s state may name the
place: it is shown in. An app with places has one state: its layout declares the places, and the screen fills them.string
APPS: the base arrangement (layouts/
<value>) — the app’s resting state, and the first entry of states:.object
APPS: the Studio walk. Each key is a state name. An ARRAY seeds that state with components; an OBJECT is authored app-state data — the fields the workflow would have echoed — so a state can be seen without a live run.
`conversation`
COMPONENTS: opt out of supersession (rule 5). An instance marked
conversation is not replaced when a newer instance arrives in the same state — it stays for the whole conversation.object[]
COMPONENTS: hooks that fire on a moment, not a URL.
onEnterView runs when the instance enters one of the named states.object
APPS: the JSON Schema of the app’s own input (what the calling agent sends to open it).
object
APPS: the workflow this app runs.
string
APPS: the transport the app needs, e.g. voice.
boolean
Whether the app fires its bound workflow on load, without waiting for a message.
boolean
APPS: the org’s landing app.
object
Legacy. Org scoping is the boundary now, so this no longer does anything.
string[]
The outbound hosts this folder may reach: a lifecycle hook’s server-side calls, and the pictures its content loads in an outside host such as ChatGPT or Claude, whose window blocks images from any host not listed. Bare hosts in the node package grammar: “www.example.com”, “*.example.com” (one level), “**.example.com” (any depth). Part of the manifest’s content hash.
string[]
Credential NAMES, resolved server-side from encrypted storage. A key never enters the folder.
object[]
COMPONENTS: declared analytics moments (docs/design/analytics.md). ONE rule:
phase entries OBSERVE a state entry (onEnterView, scoped by layouts); action entries observe a SERVER action AND close the person’s lifecycle state (LIFECYCLE_STATES.md §7) under the same event name. The platform names nothing and stamps where automatically.Next steps
Components
What the manifest sits beside, and how a component is built.
Apps
The layout and the places your interfaces are shown in.

