A handful of more specialized files cover advanced ground — conversation places, procedures, plans, approval chains, org roles — but every program starts with the table above, and only
program.yaml is required.Identity: program.yaml
program.yaml holds what the agent is, not what it can do:
voice— the agent’s register:tone,brevity, and phrases it mustnever_say.welcome— the opening line, before the caller says anything.callerandcontext— who is on the line and which facts the host supplies at session open (given), refreshes, or loads.clock— what “today” means when rules are read against dates.
Where the goal and guardrails live
There is no goal prompt. What the agent does is stated by its capabilities, each with its own intent; what it must never do is stated by its policies and obligations — enforced predicates, not advisory text. That separation is the point: identity is declared once, behavior is declared per capability, and constraints are rules the runtime evaluates rather than suggestions a model may forget.How the parts meet at runtime
A caller’s message is routed to a capability by itsuse_when. The capability names the facts it needs; the runtime establishes them — from context, from sources, from derivations, or by asking the caller in the fact’s own words. Policies gate the action before it proceeds, obligations check the reply before it ships, and every decision lands in the trace with the rule that produced it.
Vocabulary
Facts and records — the nouns everything else is built on.
Capabilities & Policies
What the agent can do, and the gates that govern it.