Stop Telling Agents How — Dan Barrett, Raymond Weitekamp & Jose Montes de Oca, OpenProse
OpenProse is a declarative, Markdown-based language and framework for expressing multi-agent AI workflows, founded on the principle that you should specify what you want (outcomes, contracts, goals) rather than how to achieve it. The core thesis is that as agentic infrastructure (context engineering, orchestration networks, self-modifying flows) matures, the remaining hard problem is intent specification — and imperative prompting wastes model intelligence by over-constraining execution. OpenProse borrows classical software engineering patterns (declarative over imperative, composition over inheritance, dependency injection) and applies them to agent orchestration, producing reusable workflow definitions as plain Markdown files. It runs locally via NPX or hosted at run.pros.md, is fully open-source, and targets a spectrum from non-coding domain experts to AI engineers building complex dynamic agent graphs.
read more
Core Problem and Motivation
Dan Barrett frames the talk around a persistent challenge that has survived five years of LLM evolution: the difficulty of transferring intent from a human mind into an AI system. Whether you were hand-crafting token-completion prompts in 2021, manually injecting retrieval results into context windows in 2023, or building automated orchestration servers in 2024, the fundamental bottleneck remains the same — how do you precisely name the desired outcome so the system can pursue it autonomously? The talk argues that as infrastructure layers (context engineering, agentic orchestration, self-modifying network topologies like those shown in Anthropic's flows work) become commoditized, the next frontier is declarative intent specification.
The Declarative vs. Imperative Distinction
The central engineering argument is that telling an agent how to do something is actively wasteful. When you write imperative, procedural instructions, you are effectively hard-coding an execution path that a sufficiently capable model would have discovered on its own. This means: (1) you're paying for intelligence you're suppressing, and (2) you could have run a cheaper model to follow step-by-step instructions. The smarter and more expensive the model, the more value is destroyed by over-specifying procedure. OpenProse therefore encourages writing contracts — specifications of the desired end state, outcome, or goal — and leaving the "how" to the underlying agentic network, which can self-organize, spawn sub-agents, and iterate to satisfy the contract.
This is a direct borrowing from classical software engineering: declarative over imperative, analogous to SQL vs. a hand-written query loop, or infrastructure-as-code desired-state declarations vs. shell scripts. The team also explicitly applies composition over inheritance — workflow components should be composable primitives that can be assembled, not monolithic instruction hierarchies.
What OpenProse Actually Is
Raymond Weitekamp distills OpenProse to two things engineers should internalize:
1. It is plain Markdown — technically a domain-specific language with a schema, but deliberately readable and editable by non-programmers. It is one large structured prompt, not a compiled artifact or a binary runtime.
2. It is event-driven, not chat-driven — the execution model is asynchronous, event-triggered multi-agent orchestration, not a conversational loop. This distinction matters architecturally: you talk to an agent once to generate an OpenProse program; thereafter the program drives execution autonomously.
The framework is open-source and runnable locally via `npx`, with a hosted execution environment at `run.pros.md`. The runtime itself — the interpreter or virtual machine for OpenProse — is also just a large prompt, meaning you are literally programming Claude or Codex to compile and execute the workflow on your behalf. This is a notable meta-level design choice: the framework has no proprietary binary runtime, which is what makes it portable across any coding agent or reasoning model.
Schema and Key Constructs
While the team deliberately avoids deep-diving into syntax to keep the talk accessible, several structural constructs are described:
- Contract: The top-level declaration of what a program maintains or guarantees — the desired outcome or invariant, not a procedure. - Pro-write function (prose-write function): The equivalent of the application entrypoint — the agent that runs the overall program. In their hosted implementation this is the orchestrating agent. - Sub-agents: First-class constructs within a program. You can define sub-agents, assign them specific skills, and provide them with specific tools. - Skills and Tools: Composable capabilities attached to agents. The example given is preferring Exa over generic web search for retrieval tasks — you can declare that a specific skill uses Exa, and if that dependency isn't satisfied, the program should refuse to execute (analogous to a missing dependency failing a build). This is an explicit dependency injection / fail-fast pattern applied to agent tool configuration. - Conditional execution: If declared skills or CLI tools are not present at runtime, the program does not run — the inverse of silently degrading behavior.
Target Audiences and Use Cases
The team surveyed their audience across three segments, each with a distinct value proposition:
- Regulated-industry non-engineers (e.g., fintech, banking): Because everything is plain text Markdown files, there is no software to procure, no IT deployment, no vendor lock-in to a specific orchestration SDK. You can define multi-agent workflows and run them without deploying anything beyond a few Markdown files. This sidesteps procurement and IT approval cycles entirely — a meaningful operational advantage in compliance-heavy environments.
- Non-coding domain experts (PMs, analysts): If you can read logical English, you can read and edit an OpenProse program. The intended workflow is: describe the task in natural language → have a coding agent generate the OpenProse program → review and modify the readable Markdown → reuse it as a reproducible workflow artifact. Users are not expected to author OpenProse from scratch.
- AI engineers and developers: The framework enables expression of dynamic agent workflows — complex multi-agent graphs where the topology is not statically defined — using only Markdown inside any coding agent. The entire interpreter is a prompt, so there's no framework import, no SDK version to pin, and no deployment surface beyond the Markdown files themselves. Engineers can use it to prototype or ship agentic pipelines that would otherwise require substantial orchestration framework code.
Architectural Philosophy and Broader Context
The talk positions OpenProse within a layered progression of abstraction: raw prompting → manual context injection → automated context/orchestration servers → self-modifying agentic networks. At each prior layer, the "how" was still largely human-specified. OpenProse's bet is that the current generation of models is capable enough that specifying the "what" via a well-structured contract is sufficient, and that the network will determine execution. This mirrors the trajectory of cloud infrastructure: you don't tell AWS how to route packets, you declare desired state and the platform figures it out.
The composition model is also significant for team-scale engineering: because contracts are composable Markdown fragments, multiple teams can own discrete contract components that assemble into larger workflows — local complexity management through modularity, a pattern well-understood in traditional software but rarely applied rigorously to prompt engineering.
Practical Takeaways for Engineers
- Treat agent instructions as contracts (desired state declarations), not scripts. Specify outcomes, invariants, and goals. - Use composition to manage complexity in multi-agent systems — assemble small, well-defined contract components rather than writing monolithic instruction sets. - Declare tool and skill dependencies explicitly and fail fast if they're unmet — don't silently degrade. - Recognize that over-specifying procedure in prompts wastes model capability and budget; reserve procedural detail for cheap models on deterministic subtasks. - OpenProse's "everything is text" property is not just an aesthetic choice — it has real operational consequences for portability, auditability, and deployment surface in regulated environments. - The hosted platform is `run.pros.md`; local execution via `npx`; repository is open-source.