OpenProse: Markdown-First Multi-Agent Workflow Format
Learn how OpenProse enables portable, markdown-first workflows for orchestrating AI sessions. This guide covers installation, the /prose slash command, and writing multi-agent programs.
Read this when
- You want to run or write .prose workflow files
- You want to enable the OpenProse plugin
- You need to understand how OpenProse maps to OpenClaw primitives
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.
-
Install, Turn on the OpenProse plugin and restart the Gateway.
-
Run a program, Run
/prose runto execute a.prosefile or remote program. -
Write programs, Create multi-agent workflows with parallel and sequential steps.
Install
Enable the plugin
OpenProse is included but turned off by default. Enable it:
openclaw plugins enable open-prose
Restart the Gateway
openclaw gateway restart
Verify
openclaw plugins list | grep prose
You should see open-prose listed 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
Slash command
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.
What it can do
- Multi-agent research and synthesis with explicit parallelism.
- Repeatable, approval-safe workflows (code review, incident triage, content pipelines).
- Reusable
.proseprograms you can run across supported agent runtimes.
Example: parallel research and synthesis
# 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 }
OpenClaw runtime mapping
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) |
Warning
If your tool allowlist blocks
sessions_spawn,read,write, orweb_fetch, OpenProse programs will fail. Check your tools allowlist config.
File locations
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/
State backends
filesystem (default)
State is written to .prose/runs/... in the workspace. No extra dependencies required.
in-context
Transient state kept in the context window; select with --in-context.
Suitable for small, short-lived programs.
sqlite (experimental)
Select with --state=sqlite. Requires the sqlite3 binary on PATH
(falls back to filesystem when missing); state lands in
.prose/runs/{id}/state.db.
postgres (experimental)
Select with --state=postgres. Requires psql and a connection string in
OPENPROSE_POSTGRES_URL (set it in .prose/.env).
Warning
Postgres credentials flow into sub-agent logs. Use a dedicated, least-privileged database.
Security
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.
Related
-
Skills reference, How OpenProse's skill pack loads and what gates apply.
-
Subagents, OpenClaw's native multi-agent coordination layer.
-
Text-to-speech, Add audio output to your workflows.
-
Slash commands, All available chat commands including /prose.
Official site: https://www.prose.md