Install
openclaw skills install multi-agent-protocolOpenClaw-native v2 protocol for spec-first multi-agent delivery. Use when you need 2+ agents with explicit phase control, dual review gates, bounded retry/ci...
openclaw skills install multi-agent-protocolOpenClaw-native multi-agent protocol. Keep the good parts from v1:
Replace the brittle parts from v1:
sessionKey memory contractshared/blackboard.jsonbeads or git dependencyUse the stack below and do not silently swap layers:
SKILL.md
Defines protocol, roles, dependency expectations, and non-negotiable rules.OpenProse
Owns orchestration flow and agent dispatch.Lobster
Owns approval, pause/resume, and side-effect recovery templates.task-store plugin
Owns authoritative task state via typed tools + SQLite event log.ACP
Connects external coding harnesses such as Codex.The source of truth is the task-store plugin, not prompts and not reviewer output.
Declare these dependencies explicitly in the skill or the workflow setup:
OpenProseLobster runtime for approval/resumetask-store plugin enabledOptional, but explicit when used:
gitDo not assume:
beadsbdshared/blackboard.jsongit worktreeNo execution phase starts before a spec record exists in task-store.
Minimum spec payload:
goalscope_inscope_outinputsoutputsacceptance_criteria[]risks[]If acceptance criteria are weak or missing, the orchestrator keeps the task in spec_draft.
Use a stored phase enum. Recommended baseline:
spec_draft
spec_review
execution_ready
executing
spec_gate
quality_gate
awaiting_approval
ready_to_resume
completed
failed
circuit_open
All transitions must be written through task_transition.
Reviewer output is evidence, not authority.
task_append_review.Retries are not tracked in free text.
Recommended policy:
attempt 1-2: retry same phase with bounded backoffattempt 3: optional stronger model/runtimeattempt >= 4: circuit_openAny real-world effect should pass through Lobster:
Lobster pauses, requests approval, and resumes from persisted state.
When using Codex or another external coding harness:
task_id, attempt_id, workspace, and allowed capabilitiesPractical note inferred from the local OpenClaw installation: parent streaming features such
as streamTo are tied to runtime=acp, not generic subagent runtime. Design the workflow
accordingly.
The orchestrator:
The orchestrator does not become a passive message relay or free-form blackboard parser.
The executor may be:
Executor responsibilities:
Executor cannot finalize completed, failed, or gate transitions on its own.
Reads the actual artifact and records one of:
approvedchanges_requestedblockedPlus findings with file references or artifact references.
Reads the actual artifact after spec gate passes and records:
Lobster manages:
Lobster does not own the business workflow phase. It only writes approval state and recovery
evidence back to task-store.
task_create
-> spec_review
-> execution_ready
-> executing
-> spec_gate
-> quality_gate
-> awaiting_approval (only if side effects exist)
-> ready_to_resume
-> completed
Failure branches:
executing -> retrying -> executing
executing -> circuit_open
spec_gate -> execution_ready
quality_gate -> execution_ready
awaiting_approval -> failed
spec_drafttask-store.spec_reviewspec_draft, orexecution_readyexecution_readyexecutingspec_gatequality_gateexecution_readyquality_gatecompletedexecution_readyawaiting_approvalawaiting_approvalready_to_resume.ready_to_resumecircuit_openThe task-store plugin should persist at least:
The plugin storage is authoritative. Prompt text is not.
The .prose workflow should be minimal and boring:
Do not encode business state only in the prose graph. The graph coordinates. The plugin stores.
Read workflows/openclaw-native-v2.prose when wiring the workflow.
Use Lobster only where it adds hard guarantees:
Read lobster/approval-recovery.template.yaml when a task contains side effects or human approval.
Use the task-store plugin as the only write path for protocol state.
Read references/task-store-plugin.md when:
Use least privilege. The matrix lives in references/agent-permissions.md.
Key rule:
Read references/migration.md before replacing an existing v1 setup.
Summary:
attempt_id and optional external_session_reftask-store.Do not do any of the following:
sessionKey as the memory backboneshared/blackboard.jsongit or beads exists without declaring it