Skip to content
OpenProse

The OpenProse Manual

A new kind of language for a new kind of computer.

A long-running AI session is a Turing-complete computer. OpenProse is a programming language for it. Write contracts in Markdown; the model plus harness is the runtime.

Concepts

The OpenProse VM

LLMs are simulators. When given a detailed system description, they do not just describe it. They become it. OpenProse exploits this property to build a real runtime from a Markdown specification.

1

Simulation Is Implementation

The OpenProse spec describes a VM with enough fidelity that reading it induces simulation. Each session spawns a real subagent, outputs are real artifacts. Simulation with sufficient fidelity is implementation: the session does not describe the execution, it is the execution.

2

The Fourth Wall **...**

When you need AI judgment instead of strict execution, break out of structure. The ** ... ** syntax lets you speak directly to the VM: it evaluates conditions semantically. Structured control flow where it matters, natural language where you want flexibility.

3

Structure + Flexibility

English is already an agent framework. We are structuring it, not replacing it. OpenProse uses English exactly where ambiguity is a feature, and structure everywhere else. The language does not fight the model's natural mode of reasoning; it gives that reasoning a contract.

4

Open Standard, Zero Lock-in

OpenProse programs are framework-agnostic. The language defines an abstract host interface (spawn_session, read_file, write_file, ask_user) that any Prose Complete harness implements. A program written for Claude Code runs on Codex, OpenCode, or Amp without modification.

5

Reactor: Evented Runtime

Reactor is the evented reconciliation runtime for standing responsibilities. The reconciler is deliberately dumb: it fingerprints each contract and its inputs and re-renders only the ones that actually moved, while everything unchanged is a memo hit at zero fresh cost. There is no judge step. Every decision leaves a content-addressed receipt, and spend scales with surprise, not the clock. Shipped as v0.2; benchmarks openly pending.

The stack

Language. Framework. Runtime.

OpenProse is three composable layers. You author at the language level; the framework wires it; the runtime executes it.

ProseLanguage

A programming language for AI sessions. Write a contract in Markdown; declare what should happen. Drop into ProseScript when you want explicit control flow.

*.prose.md files are versioned with your project, in six kinds from service to system.

FormeFramework

The intelligent dependency-injection framework. It matches each Requires to an Ensures, resolves dependencies, and produces a compiled manifest the runtime follows.

prose compile lowers your contracts into a dependency graph; on prose run, Forme wires it before the VM executes. IoC powered by model understanding, not configuration files.

ReactorRuntime · v0.2

The evented reconciliation runtime for standing responsibilities. The reconciler is dumb and deterministic: fingerprint the inputs, re-render only what moved, leave a receipt. Spend scales with surprise, not the clock.

Every decision leaves a content-addressed receipt; the ledger is append-only and chain-verifiable, so you can replay a run offline and keyless in reactor-devtools. Shipped as v0.2, benchmarks openly pending.

The frontier

Prose Complete

A system is Prose Complete when it can run a .prose program of arbitrary complexity. Because the agent is the compiler, the same .prose.md source runs on any harness that can play the part: Claude Code, Codex, OpenCode, Hermes, Pi (with its sub-agents extension), whatever you trust. The requirement is modest: a filesystem, a shell, and sub-agents.

Most agents we've tested are complete enough to be useful once they have those three. The differences show up at the edges, and they keep shrinking: you write the contract down once, and every future model that can satisfy it gets to run it, with no rewrite. Here is where each one stands today.

Statuses are qualitative; no benchmark numbers. Evidence is vibe or anecdotal unless labeled. Honest data, no inflation.

Prose Complete

the bar · run any .prose.md

Approaching

Complete enough to be useful. Breaks only at the hard edge.
  • Claude Code+Opus 4.8
    Long-running programs; a memoization gap in Reactor.vibe
  • Claude Code+Sonnet 4.6
    Long-running programs.vibe
  • Codex CLI+GPT-5.5
    Sessions simulated in the weights.anecdotal
  • Reactor CLI+Opus 4.8
    Our own harness; early access (v0.2).preview

Under test

Being measured now. Verdict pending.
  • OpenCode+Sonnet 4.6
    Sub-agents just landed; measuring now.anecdotal
  • Pi
    With the sub-agents extension.
  • Claude Code+Haiku 4.5
    Smaller model; genuinely unknown.preview
  • Amp+Opus 4.8 / Sonnet 4.6

Composition in practice

Shared services, delivery composites, graded outputs.

Responsibilities are the top-level outcomes. Beneath them, reusable services do the actual work: scanning, classifying, drafting, scoring. Above them, delivery composites wire responsibilities to cadences, channels, and human-review gates. Two concrete flows from OpenProse's own operations:

Daily to Slack

intelligence-daily

  1. mention-intelligence and competitor-intelligence run in parallel, each calling platform-scanner across the monitored platforms.
  2. Results are merged into a 2-minute briefing. No human gate, just a read-only digest.
  3. std/delivery/slack-notifier posts it to the team channel. The eval grades the briefing against the contract before the next run uses it as the baseline.

On demand, human-gated

gtm-pipeline

  1. lead-enrichment takes a name or company and composes person-enrichment + company-enrichment, then adds qualification and a Save/Grow framing.
  2. program-designer drafts two Prose programs (one Save, one Grow) tailored to the lead. The output is demo-ready service files, not bullet points.
  3. std/delivery/human-gate holds the design for review before the irreversible step: customer-repo-scaffolder writing the customers/prose-{slug}/ directory.

The same shape (responsibility / service / delivery / eval) repeats across all thirteen. Reuse is the point: a service written for one responsibility tends to become the primitive for three others. The full responsibility catalog, with every contract, is on Field Notes.

FAQ

Common questions

What is OpenProse?
OpenProse is a programming language for AI sessions. Programs are Markdown files with requires/ensures contracts that define what services need and produce. Forme, our intelligent dependency injection system, auto-wires services by contract matching. The model+harness is the runtime: the AI session itself executes the program.
How is this a VM?
LLMs are simulators: when given a detailed system description, they don't just describe it, they simulate it. The prose.md spec describes a VM with enough fidelity that reading it induces simulation. But simulation with sufficient fidelity is implementation: each session spawns a real subagent, outputs are real artifacts. The simulation is the execution.
How is the managed cloud different from the open-source version?
The open source version is the language: install as a skill, write .md programs, run them in Claude Code, Codex, OpenCode, Amp, or any "Prose Complete" harness. Free, MIT-licensed. The managed cloud runs those same programs on our infrastructure: on a schedule, on events, with durable traces and enterprise controls. Cloud is early access today. You write programs with the OSS; request access to run them at scale without you in the loop.
How do I install it?
Run: npx skills add openprose/prose. This installs the OpenProse skill in your AI coding assistant. No other dependencies required.
What systems support it?
Claude Code, OpenCode, Amp, Codex, Gemini CLI, or any other "Prose Complete" harness. The language defines an abstract host interface: any "Prose Complete" harness that supports file IO and subagent spawning can execute Prose programs.
Does this lock me into Claude?
No. OpenProse programs are framework-agnostic: the language defines an abstract host interface (spawn_session, read_file, write_file, ask_user) that any Prose Complete harness implements. A program written for Claude Code runs on Codex, OpenCode, or Amp without modification. Declarative programs get cheaper and smarter as models improve; you don't refactor every time the landscape shifts.
What are contracts?
Contracts are requires/ensures declarations that define what a service needs (its inputs) and what it produces (its outputs). They serve as types for AI programs: the requires block declares dependencies, the ensures block declares guarantees. Forme uses these contracts to auto-wire services together.
What is Forme?
Forme is intelligent dependency injection that auto-wires services by contract matching. Instead of manually connecting components, Forme reads the requires/ensures contracts on each service and automatically determines how to wire them together. It's IoC powered by model understanding, not configuration files.
Why Markdown, not YAML or a custom .prose syntax?
Human understanding is the bottleneck. YAML is precise but alien. A custom syntax needs a parser and fights the model's training. Markdown is what your team already writes, what the model already reads, and what already diffs, reviews, and documents itself in every tool you use. OpenProse structures Markdown with contracts; it doesn't replace the medium.
Why not just plain English?
English is already an agent framework; we're structuring it, not replacing it. Plain English doesn't distinguish sequential from parallel, doesn't specify retry counts, doesn't scope variables. OpenProse uses English exactly where ambiguity is a feature, and structure everywhere else.
How is this different from Anthropic's SKILLS.md or AGENTS.md?
Same substrate: Markdown. Different purpose. SKILLS.md and AGENTS.md document a single capability a model has. An OpenProse program specifies a system: multiple services wired together by contract, with declared inputs, outputs, strategies, and invariants. OpenProse doesn't replace SKILLS.md; it structures it. The language itself installs as a skill.
Why not LangChain, CrewAI, or AutoGen?
Those are libraries that orchestrate agents from outside. OpenProse runs inside the agent session: the session itself is the runtime. This means zero external dependencies and portability across any AI assistant.
How does this compare to BAML, DSPy, or similar?
Those require a harness outside the model to execute orchestration. OpenProse pushes the orchestration down into the model itself: your harness is the runtime, your Markdown is the program. Different layer of the stack.
How does a team share and version OpenProse programs?
Programs are Markdown files: version them in git like any other source. Teams can also publish immutable package versions to the OpenProse registry and install dependencies by registry://openprose/... refs. Runtime still reads pinned Markdown snapshots from disk, so review remains reading diffs and lockfiles, not trusting a hidden service.
What happens when a Prose program fails?
Every run writes a durable trace to .prose/runs/{id}/: the manifest, the program, intermediate artifacts, per-agent logs, and a running state.md. Debugging is diffing those files. Each service can declare ### Strategies for known failure modes and ### Invariants for what must remain true. Tests (kind: test) are .md files with fixtures and natural-language expectations.
Is OpenProse deterministic?
OpenProse is not deterministic. It's unambiguous. A sufficiently intelligent model reading an unambiguous Prose program implements the requested call flow faithfully, but the language doesn't add deterministic fallbacks or type systems to replace model judgment.

Go deeper

The manual is a curated bridge. For the full language specification, examples corpus, and reference docs, go to the source.