Files
adolf/docs/prose.md
alvis bedb527145
Some checks failed
ClawSweeper Dispatch / dispatch (push) Has been cancelled
CodeQL / Security High (actions) (push) Has been cancelled
CodeQL / Security High (channel-runtime-boundary) (push) Has been cancelled
CodeQL / Security High (core-auth-secrets) (push) Has been cancelled
CodeQL / Security High (mcp-process-tool-boundary) (push) Has been cancelled
CodeQL / Security High (network-ssrf-boundary) (push) Has been cancelled
CodeQL / Security High (plugin-trust-boundary) (push) Has been cancelled
CodeQL / Security High (process-exec-boundary) (push) Has been cancelled
Docs Sync Publish Repo / sync-publish-repo (push) Has been cancelled
Docs / docs (push) Has been cancelled
OpenClaw Stable Main Closeout / Resolve stable release closeout inputs (push) Has been cancelled
OpenClaw Stable Main Closeout / Verify stable main closeout (push) Has been cancelled
Workflow Sanity / no-tabs (push) Has been cancelled
Workflow Sanity / actionlint (push) Has been cancelled
Workflow Sanity / generated-doc-baselines (push) Has been cancelled
CI / runner-admission (push) Has been cancelled
CI / preflight (push) Has been cancelled
CI / security-fast (push) Has been cancelled
CI / pnpm-store-warmup (push) Has been cancelled
CI / build-artifacts (push) Has been cancelled
CI / native-i18n (push) Has been cancelled
CI / ${{ matrix.check_name }} (push) Has been cancelled
CI / ${{ matrix.checkName }} (push) Has been cancelled
CI / checks-node-compat-node22 (push) Has been cancelled
CI / check-bundled-channel-config-metadata (push) Has been cancelled
CI / check-dependencies (push) Has been cancelled
CI / check-guards (push) Has been cancelled
CI / check-lint (push) Has been cancelled
CI / check-prod-types (push) Has been cancelled
CI / check-shrinkwrap (push) Has been cancelled
CI / check-test-types (push) Has been cancelled
CI / check-additional-boundaries-a (push) Has been cancelled
CI / check-additional-boundaries-bcd (push) Has been cancelled
CI / check-additional-extension-bundled (push) Has been cancelled
CI / check-additional-extension-channels (push) Has been cancelled
CI / check-additional-extension-package-boundary (push) Has been cancelled
CI / check-additional-runtime-topology-architecture (push) Has been cancelled
CI / check-session-accessor-boundary (push) Has been cancelled
CI / check-session-transcript-reader-boundary (push) Has been cancelled
CI / check-docs (push) Has been cancelled
CI / skills-python (push) Has been cancelled
CI / macos-swift (push) Has been cancelled
CI / ios-build (push) Has been cancelled
CI / ci-timings-summary (push) Has been cancelled
Native App Locale Refresh / Refresh native fa (push) Has been cancelled
Native App Locale Refresh / Refresh native fr (push) Has been cancelled
Native App Locale Refresh / Refresh native hi (push) Has been cancelled
Native App Locale Refresh / Refresh native id (push) Has been cancelled
Native App Locale Refresh / Refresh native it (push) Has been cancelled
Native App Locale Refresh / Refresh native ja-JP (push) Has been cancelled
Control UI Locale Refresh / plan (push) Has been cancelled
Control UI Locale Refresh / Refresh ${{ matrix.locale }} (push) Has been cancelled
Control UI Locale Refresh / Commit control UI locale refresh (push) Has been cancelled
Live Media Runner Image / Build live media runner image (push) Has been cancelled
Native App Locale Refresh / Refresh native ar (push) Has been cancelled
Native App Locale Refresh / Refresh native de (push) Has been cancelled
Native App Locale Refresh / Refresh native es (push) Has been cancelled
Native App Locale Refresh / Refresh native ko (push) Has been cancelled
Native App Locale Refresh / Refresh native nl (push) Has been cancelled
Native App Locale Refresh / Refresh native pl (push) Has been cancelled
Native App Locale Refresh / Refresh native pt-BR (push) Has been cancelled
Native App Locale Refresh / Refresh native ru (push) Has been cancelled
Native App Locale Refresh / Refresh native sv (push) Has been cancelled
Native App Locale Refresh / Refresh native th (push) Has been cancelled
Native App Locale Refresh / Refresh native tr (push) Has been cancelled
Native App Locale Refresh / Refresh native uk (push) Has been cancelled
Native App Locale Refresh / Refresh native vi (push) Has been cancelled
Native App Locale Refresh / Refresh native zh-CN (push) Has been cancelled
Native App Locale Refresh / Refresh native zh-TW (push) Has been cancelled
Native App Locale Refresh / Commit native locale refresh (push) Has been cancelled
Plugin Init Scaffold Validation / Validate provider scaffold (push) Has been cancelled
Plugin NPM Release / preview_plugins_npm (push) Has been cancelled
Plugin NPM Release / Validate release publish approval (push) Has been cancelled
Plugin NPM Release / preview_plugin_pack (push) Has been cancelled
Plugin NPM Release / publish_plugins_npm (push) Has been cancelled
Sandbox Common Smoke / sandbox-common-smoke (push) Has been cancelled
Website Installer Sync / static (push) Has been cancelled
Website Installer Sync / linux-docker (push) Has been cancelled
Website Installer Sync / macos-installer (push) Has been cancelled
Website Installer Sync / windows-installer (push) Has been cancelled
Website Installer Sync / sync-website (push) Has been cancelled
Vendor OpenClaw source as Adolf fork baseline
Adolf is a fork/vendored clone of github.com/openclaw/openclaw (v2026.6.11),
free to diverge. Tree copied sans upstream .git; upstream remote added for
future syncs. Node pinned to 24 (.nvmrc); engines already require >=22.19.
Preserves docs/ARCHITECTURE.md.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01LeqyaxJF2nbRXJtae2kNB2
2026-07-05 09:36:54 +00:00

205 lines
6.4 KiB
Markdown

---
title: "OpenProse"
sidebarTitle: "OpenProse"
summary: "OpenProse is a markdown-first workflow format for multi-agent AI sessions. In OpenClaw it ships as a plugin with a /prose slash command and a skill pack."
read_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.
<CardGroup cols={3}>
<Card title="Install" icon="download" href="#install">
Enable the OpenProse plugin and restart the Gateway.
</Card>
<Card title="Run a program" icon="play" href="#slash-command">
Use `/prose run` to execute a `.prose` file or remote program.
</Card>
<Card title="Write programs" icon="pencil" href="#example-parallel-research-and-synthesis">
Author multi-agent workflows with parallel and sequential steps.
</Card>
</CardGroup>
## Install
<Steps>
<Step title="Enable the plugin">
OpenProse is bundled but disabled by default. Enable it:
```bash
openclaw plugins enable open-prose
```
</Step>
<Step title="Restart the Gateway">
```bash
openclaw gateway restart
```
</Step>
<Step title="Verify">
```bash
openclaw plugins list | grep prose
```
You should see `open-prose` as enabled. The `/prose` skill command is now
available in chat.
</Step>
</Steps>
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:
```text
/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 `.prose` programs you can run across supported agent runtimes.
## Example: parallel research and synthesis
```prose
# 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`, or
`web_fetch`, OpenProse programs will fail. Check your
[tools allowlist config](/gateway/config-tools).
</Warning>
## File locations
OpenProse keeps state under `.prose/` in your workspace:
```text
.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:
```text
~/.prose/agents/
```
## State backends
<AccordionGroup>
<Accordion title="filesystem (default)">
State is written to `.prose/runs/...` in the workspace. No extra
dependencies required.
</Accordion>
<Accordion title="in-context">
Transient state kept in the context window; select with `--in-context`.
Suitable for small, short-lived programs.
</Accordion>
<Accordion title="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`.
</Accordion>
<Accordion title="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.
</Warning>
</Accordion>
</AccordionGroup>
## 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](/tools/lobster).
## Related
<CardGroup cols={2}>
<Card title="Skills reference" href="/tools/skills" icon="puzzle-piece">
How OpenProse's skill pack loads and what gates apply.
</Card>
<Card title="Subagents" href="/tools/subagents" icon="users">
OpenClaw's native multi-agent coordination layer.
</Card>
<Card title="Text-to-speech" href="/tools/tts" icon="volume-high">
Add audio output to your workflows.
</Card>
<Card title="Slash commands" href="/tools/slash-commands" icon="terminal">
All available chat commands including /prose.
</Card>
</CardGroup>
Official site: [https://www.prose.md](https://www.prose.md)