Prompts live in files, not in YAML
You declare a path to a Markdown file. The engine loads and renders it per request.| Field | Applies to | Required |
|---|---|---|
orchestrator | Orchestrators only | Yes |
system | Orchestrators and agents | No |
user | Orchestrators and agents | No |
Variables
Prompt files can contain{{variable}} placeholders:
generate):
When rendering happens
At startup — prompt file paths are validated. If a file doesn’t exist, the engine fails before serving requests. Per request — resolvers run, variables are substituted, the final prompt string is produced. Rendered prompts are never cached globally — each request gets a fresh render with its own resolved values. This means dynamic values likecurrent_date, customer_name, or account_tier are always accurate per request, regardless of when the engine started.
Rules
- A variable with no matching resolver fails clearly — the engine names the node, the variable, and what’s missing.
- Prompt text is not a security boundary. Don’t rely on prompt instructions to enforce access control — use the access plugin and runtime hooks instead.
- Secrets must never appear in prompt files or YAML.