Skip to content

Concept

Why the .exons format exists and how it's structured.

The name

In molecular biology, exons are the regions of a gene a cell actually translates into proteins — the expressed, functional part. An .exons file is the counterpart for an agent: the expressible, executable specification of its behaviour.

A two-part file

Every .exons file has two parts:

  1. YAML frontmatter — the configuration: identity, execution parameters, tools, memory, safety, and more.
  2. Template body — the prompt, written with the {~…~} template syntax.
greeter.exons
---
name: greeter
description: A friendly greeter agent
type: agent
execution:
  provider: openai
  model: gpt-4o
  temperature: 0.7
---
{~exons.message role="system"~}
You are a friendly greeter.
{~/exons.message~}

{~exons.message role="user"~}
Say hello to {~exons.var name="user_name" default="World" /~}
{~/exons.message~}

Document types

The type determines which fields are allowed. There are exactly three:

TypeDescription
promptSimple template — variables, conditionals, loops. No skills/tools/constraints.
skillReusable capability with inputs/outputs. May have memory, registry, verification.
agentFull agent with tools, skills, constraints, metadata. All fields available.

Why {~…~}

Prompts often contain braces, double braces, or brackets themselves — JSON, XML, Go templates, Jinja-style syntax. The {~…~} delimiters were chosen deliberately so they never collide with prompt content. A prompt can carry JSON examples or code verbatim without confusing the template engine.

Note

Need a literal {~ in the output? Write \{~ — the escape sequence produces the literal characters.

Next