docs/prose.md
OpenProse is a portable, markdown-first workflow format for orchestrating AI
sessions. In OpenClaw it ships as a plugin that installs an OpenProse skill
pack and a /prose slash command. Programs live in .prose files and can
spawn multiple sub-agents with explicit control flow.
```bash
openclaw plugins enable open-prose
```
You should see `open-prose` as enabled. The `/prose` skill command is now
available in chat.
From a repo checkout you can install the plugin directly:
openclaw plugins install ./extensions/open-prose
OpenProse registers /prose as a user-invocable skill command:
/prose help
/prose run <file.prose>
/prose run <handle/slug>
/prose run <https://example.com/file.prose>
/prose compile <file.prose>
/prose examples
/prose update
/prose run <handle/slug> resolves to https://p.prose.md/<handle>/<slug>.
Direct URLs are fetched as-is using the web_fetch tool.
Top-level remote runs are explicit. Remote imports inside a .prose program are
transitive code dependencies: before OpenProse fetches any remote use target,
it shows the resolved import list and requires the operator to reply exactly
approve remote prose imports for that run.
.prose programs you can run across supported agent runtimes.# Research + synthesis with two agents running in parallel.
input topic: "What should we research?"
agent researcher:
model: sonnet
prompt: "You research thoroughly and cite sources."
agent writer:
model: opus
prompt: "You write a concise summary."
parallel:
findings = session: researcher
prompt: "Research {topic}."
draft = session: writer
prompt: "Summarize {topic}."
session "Merge the findings + draft into a final answer."
context: { findings, draft }
OpenProse programs map to OpenClaw primitives:
| OpenProse concept | OpenClaw tool |
|---|---|
| Spawn session / Task tool | sessions_spawn |
| File read / write | read / write |
| Web fetch | web_fetch (exec + curl when POST is needed) |
OpenProse keeps state under .prose/ in your workspace:
.prose/
├── .env # config (key=value), e.g. OPENPROSE_POSTGRES_URL
├── runs/
│ └── {YYYYMMDD}-{HHMMSS}-{random}/
│ ├── program.prose # copy of the running program
│ ├── state.md # execution state
│ ├── bindings/
│ ├── imports/ # nested remote program runs
│ └── agents/
└── agents/ # project-scoped persistent agents
User-level persistent agents (shared across projects) live at:
~/.prose/agents/
<Warning>
Postgres credentials flow into sub-agent logs. Use a dedicated,
least-privileged database.
</Warning>
Treat .prose files like code. Review them before running, including remote
use imports. Top-level /prose run https://... requests are explicit, but
transitive remote imports require per-run approval before they are fetched or
executed. Use OpenClaw tool allowlists and approval gates to control side
effects. For deterministic, approval-gated workflows, compare with
Lobster.
Official site: https://www.prose.md