Skip to main content

OpenProse

OpenProse is a portable, markdown-first workflow format for orchestrating AI sessions. In Clawdbot it ships as a plugin that installs an OpenProse skill pack plus a /prose slash command. Programs live in .prose files and can spawn multiple sub-agents with explicit control flow. Official site: https://www.prose.md

What it can do

  • Multi-agent research + synthesis with explicit parallelism.
  • Repeatable approval-safe workflows (code review, incident triage, content pipelines).
  • Reusable .prose programs you can run across supported agent runtimes.

Install + enable

Bundled plugins are disabled by default. Enable OpenProse:
clawdbot plugins enable open-prose
Restart the Gateway after enabling the plugin. Dev/local checkout: clawdbot plugins install ./extensions/open-prose Related docs: Plugins, Plugin manifest, Skills.

Slash command

OpenProse registers /prose as a user-invocable skill command. It routes to the OpenProse VM instructions and uses Clawdbot tools under the hood. Common commands:
/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

Example: a simple .prose file

# 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 }

File locations

OpenProse keeps state under .prose/ in your workspace:
.prose/
├── .env
├── runs/
│   └── {YYYYMMDD}-{HHMMSS}-{random}/
│       ├── program.prose
│       ├── state.md
│       ├── bindings/
│       └── agents/
└── agents/
User-level persistent agents live at:
~/.prose/agents/

State modes

OpenProse supports multiple state backends:
  • filesystem (default): .prose/runs/...
  • in-context: transient, for small programs
  • sqlite (experimental): requires sqlite3 binary
  • postgres (experimental): requires psql and a connection string
Notes:
  • sqlite/postgres are opt-in and experimental.
  • postgres credentials flow into subagent logs; use a dedicated, least-privileged DB.

Remote programs

/prose run <handle/slug> resolves to https://p.prose.md/<handle>/<slug>. Direct URLs are fetched as-is. This uses the web_fetch tool (or exec for POST).

Clawdbot runtime mapping

OpenProse programs map to Clawdbot primitives:
OpenProse conceptClawdbot tool
Spawn session / Task toolsessions_spawn
File read/writeread / write
Web fetchweb_fetch
If your tool allowlist blocks these tools, OpenProse programs will fail. See Skills config.

Security + approvals

Treat .prose files like code. Review before running. Use Clawdbot tool allowlists and approval gates to control side effects. For deterministic, approval-gated workflows, compare with Lobster.