OpenProse is a Markdown-based language for programs that agents carry out. You write contracts: readable files that state requirements rather than prescribe steps. An agent performs the work, returns a result with the evidence needed to judge it, and an evaluator checks whether the contract's requirements are satisfied, repeating as needed. Reusable contracts serve as building blocks, and composition decides how their requirements apply together.
The language has a headline kind, the responsibility: a standing goal that keeps some state true over time. A responsibility declares what truth it maintains (a schema whose material fields move a content-hash fingerprint), which upstream facets it requires, and what wakes it: new input, a freshness cadence, or an external event. A wiring layer called Forme matches each requirement to the contract that maintains it, so the graph wires itself from the contracts, and a deterministic reconciler reruns a node only when its inputs or its own contract change. Other kinds are function (a stateless call), gateway (external ingress), pattern (a reusable coordination algorithm), and test (fixtures plus assertions). ProseScript specifies required steps when their order or method matters.
OpenProse runs as a skill inside a compatible coding agent such as Claude Code, Codex CLI, or OpenCode, where the agent session itself acts as the virtual machine and there is no separate binary. Skill commands initialize a program, compose its topology and tests, and upgrade older sources. Contracts are harness-agnostic: a specification defines what a conforming harness must do, and a reference harness called Reactor is published separately as an alpha. Benchmarks are pending, and the fixpoint (topology as a responsibility) is specified but deferred.
Features
- Contracts: Markdown files that state requirements, with reusable libraries to compose from
- Responsibilities: standing goals that keep declared state current over time
- Self-wiring graph: Forme matches each required facet to the contract that maintains it
- Deterministic reconciler: reruns a node only when an input fingerprint or its own contract fingerprint changes
- Contract kinds: function, gateway, pattern, and test alongside responsibility
- ProseScript: specifies required steps when their order or method matters
- Evaluation loop: an agent returns evidence with its result, and an evaluator checks the requirements
- Agent skill: runs inside Claude Code, Codex CLI, OpenCode, and other compatible coding agents
- Authoring commands: init, compose, and write shape a new program, and upgrade migrates older sources with a dry run
- Portable contracts: any conforming harness can run them, with Reactor as the reference harness
