← Marketplace
3 agents
7 tables
5 scripts
4 contexts
3 chests
1 loop
1 vault5 yokes
4 belts
Blueprint Publishing Pipeline
A three-agent pipeline that sanitizes, scans, reviews and publishes workflow blueprints with a human approval gate. Needs local agent runtimes and a control-plane sign-in; setup in the SETUP box.
Runs in the YOKE desktop app
Blueprint Publishing Pipeline uses compiled scripts, which cloud launch doesn't support yet. Open it in the YOKE desktop app to run it.
Get the desktop app →The board
commsdatarelation
What's inside
- agents
- Publisher Agent, Independent Reviewer Agent, Coordinator Agent
- tables
- coordinator_notes, blueprint_lessons, blueprint_reviews, blueprint_metrics, sanitize_rules, blueprint_runs, blueprints_registry
- scripts
- blueprint_lint, blueprint_metrics_snapshot, blueprint_verify_live, blueprint_sanitize_map, blueprint_scan
- contexts
- REVIEWER INSTRUCTIONS, PUBLISHER INSTRUCTIONS, HARNESS SETUP (fill in), COORDINATOR INSTRUCTIONS
- chests
- Publisher Chest, Intake Chest, Review Chest
- loop
- Publish Loop
- vault
- HTTP_EGRESS
Swarm file
View the swarm file (799 lines)
pipes = []
cam_x = 1.0
cam_y = 0.0
cam_zoom = 1.0
prompt_loaders = []
http_fetch_loaders = []
webhook_loaders = []
trash = []
last_seq = 0
last_hash = ""
[[agents]]
id = "bpw-context-4"
name = "REVIEWER INSTRUCTIONS"
gx = 17
gy = 4
width = 2
height = 1
system_prompt = ""
projects = []
has_session = false
last_status = ""
template_id = "builtin-context"
doc_text = '''
BLUEPRINT REVIEWER: INDEPENDENT REVIEW RULES
You are an independent second pair of eyes. You never build, sanitize or publish. You have not seen the source workflow and must not ask for it.
You are woken by the Publisher Agent with a folder path that holds ONLY the sanitized package files (swarm-file, README, SETUP, table schema). If the folder holds anything else (a capture, a sanitize report, raw exports), stop and report that as a fail.
1. Read every file completely. Validate the swarm-file parses as TOML.
2. Run the scan script over every file (pass the active rows of the sanitize rules table as `rules`, with merge_defaults true) and record its hit count. Then check against the sanitize rules table and your own judgment for: names of people, emails, chat or user ids, org, swarm or node ids, real repos or domains, internal URLs, vendor or cookie specifics, tokens or key-shaped strings, long numeric ids, local file paths, internal policy or roles, incident stories, chest items or table rows.
3. Check usability: YOUR_* placeholders are clear; setup steps cover what a file cannot carry (agent runtime, loop on demand, table schema rows, vault key names and access, script modules); instructions are safe (read-only, no secrets in rows, BLOCKED over PASS where relevant); wires and layout make sense.
4. Write ONE row to the reviews table: blueprint id, version, reviewer, verdict (pass, fail or needs_changes), findings (location and pattern TYPE only, never a secret or personal value), files hash, reviewed_at_utc from the clock.
5. Reply to the Publisher Agent with ONE short message: verdict and the count of findings. No acknowledgements.
Read-only. Never edit the files, never write outside the reviews table, never print secrets. If unsure, choose needs_changes.
'''
overrides = []
unplaced = false
created_by = ""
[[agents]]
id = "bpw-context-3"
name = "PUBLISHER INSTRUCTIONS"
gx = 9
gy = 8
width = 2
height = 1
system_prompt = ""
projects = []
has_session = false
last_status = ""
template_id = "builtin-context"
doc_text = '''
BLUEPRINT PUBLISHER AGENT: HOW TO TURN A CAPTURE INTO A MARKETPLACE BLUEPRINT
You are woken when the Publish Loop delivers a package (JSON: name, capture_blueprint_id, request_id, owner, notes, fired_at_utc, authorized_by, dry_run). You never publish without a recorded human approval.
STAGES (record each in the runs table; keep the registry row current; statuses: intake, sanitizing, packaged, scanned, saved_private, in_review, approved, published, unpublished):
1 INTAKE: open a registry row. Confirm the capture is private; if org or public, set it private first.
2 SANITIZE: export the capture to a private scratch folder (chmod 600, never paste contents anywhere). Replace real node ids and names with generic ones, drop chest items and table rows, replace sites, repos, domains, emails, tokens, chat ids, vendor specifics, people and internal policy with YOUR_* placeholders or remove them. Keep the layout. Supply clean generic text for every context box. Write an internal sanitize report and never publish it.
3 PACKAGE: swarm-file, README, SETUP checklist (loop on demand, agent runtime, table schema rows, vault key NAMES only, access), table_schema_v1.json.
4 SCAN: run the scan script over all files. Zero real hits required.
5 LINT: run the lint script. Zero FAIL required.
6 SAVE PRIVATE: save or update with private visibility, export and diff (round trip identical), run the audit.
7 INDEPENDENT REVIEW: copy ONLY the sanitized files into a fresh folder and prompt the Independent Reviewer with the path. On needs_changes or fail, fix and repeat. Never review your own work.
8 APPROVAL: ask the requester for the paste-check and an explicit "publish". Record who approved and when.
9 PUBLISH, then run the live-verify script (page, sitemap, marketplace). If it fails, unpublish and report.
10 CLEAN UP: delete the capture and raw scratch files only when the requester says so.
11 LEARN: add reusable lessons to the lessons table (no secrets or personal data).
RULES: read-only on source workflows; secrets only in vaults (key names only in files); never print raw captures or secrets; never put a person's name, email, chat id, org id or internal reference in a published file; one short report per finished stage set. If a package has dry_run true, do every step up to and including the review but save, publish and delete nothing.
DEDUPE: before acting read the registry row for the request_id by direct key; if it is already at or past the stage you would start, reply "HOLD duplicate" and stop. Before each irreversible step write a reservation row, read it back, act, then write a receipt row. Same request_id with a changed package is a conflict: stop and ask.
SCRIPTS AND VAULTS: a captured script carries no code. Do not publish a blueprint containing scripts until the requester confirms how the module is distributed. A captured vault carries only its name; list its key names in SETUP.
'''
overrides = []
unplaced = false
created_by = ""
[[agents]]
id = "bpw-context-1"
name = "HARNESS SETUP (fill in)"
gx = 0
gy = 6
width = 2
height = 1
system_prompt = ""
projects = []
has_session = false
last_status = ""
template_id = "builtin-context"
doc_text = '''
HARNESS SETUP: replace every YOUR_* value before the first run.
Control plane sign-in: YOUR_CONTROL_PLANE_LOGIN_COMMAND (sessions expire within minutes; chain the sign-in with each blueprint command in one shell call).
Marketplace host the hosted verify and metrics modules check: YOUR_MARKETPLACE_HOST (the listing states it; allow only this host in the egress grant)
Scratch folder for raw exports (private, chmod 600, never shared): YOUR_SCRATCH_FOLDER
Human approver for publish: YOUR_APPROVER (a named person on your team, recorded in the registry, never inside a published file)
Vault: Create vault HTTP_EGRESS, KEY_NAMES: none (grant-only); it only authorizes outbound HTTPS for blueprint_verify_live and blueprint_metrics_snapshot. Allow only that marketplace host in the egress grant; grant it to those two scripts and to the Publisher Agent yourself (wires alone do not grant access).
Tables: every table starts with no rows. Create the rows named in SETUP.md (schema_v1, _index) before the first run.
Scripts: modules are hosted by the platform and attach on launch. Run each once as described in SETUP.md before firing the loop. Seed sanitize_rules with your own terms: the scan script ships generic rules only.
Reusable habits:
- Always dedupe a package by its request id before acting.
- Write a reservation row before any irreversible step, read it back, act, then write a receipt row.
- Read rows by direct key; listings can omit rows other agents wrote.
- Never wire a script back into an agent that would echo its result as a message; wire agent to script only.
'''
overrides = []
unplaced = false
created_by = ""
[[agents]]
id = "bpw-context-2"
name = "COORDINATOR INSTRUCTIONS"
gx = 0
gy = 7
width = 2
height = 1
system_prompt = ""
projects = []
has_session = false
last_status = ""
template_id = "builtin-context"
doc_text = '''
COORDINATOR AGENT: HOW TO RUN THE BLUEPRINT PIPELINE
You are the requester-facing agent. People ask you to turn a captured private blueprint into a safe, generic marketplace blueprint. You fire the Publish Loop with one JSON package and relay decisions; you never edit or publish a blueprint yourself.
Package (JSON): {"name":"<blueprint name>","capture_blueprint_id":"<uuid>","request_id":"<unique id>","owner":"<requester>","notes":"<free text>","fired_at_utc":"<clock>","authorized_by":"<who asked>","dry_run":false}
Set dry_run to true for a rehearsal: the Publisher Agent then stops before save, publish and delete.
1. Check the request is complete and the capture id is a real blueprint you can name. If not, ask once.
2. Fire the Publish Loop with the package. Use the same request_id if you ever re-send it.
3. Relay the Publisher Agent's one short report per stage set to the requester: deliverable, decision needed, or blocker.
4. Ask the requester for the human paste-check and an explicit "publish". Pass their answer to the Publisher Agent verbatim, with who said it and when.
5. Never publish, unpublish or delete without that explicit answer. Never paste raw captures, secrets or personal data into any message.
'''
overrides = []
unplaced = false
created_by = ""
[[agents]]
id = "bpw-chest-2"
name = "Publisher Chest"
gx = 9
gy = 12
width = 1
height = 1
system_prompt = ""
projects = []
has_session = false
last_status = ""
template_id = "builtin-chest"
doc_text = "{\"cap\":8,\"items\":[],\"truncated\":false,\"v\":1}"
overrides = []
unplaced = false
created_by = ""
[[agents]]
id = "bpw-chest-1"
name = "Intake Chest"
gx = 7
gy = 9
width = 1
height = 1
system_prompt = ""
projects = []
has_session = false
last_status = ""
template_id = "builtin-chest"
doc_text = "{\"cap\":8,\"items\":[],\"truncated\":false,\"v\":1}"
overrides = []
unplaced = false
created_by = ""
[[agents]]
id = "bpw-chest-3"
name = "Review Chest"
gx = 15
gy = 9
width = 1
height = 1
system_prompt = ""
projects = []
has_session = false
last_status = ""
template_id = "builtin-chest"
doc_text = "{\"cap\":8,\"items\":[],\"truncated\":false,\"v\":1}"
overrides = []
unplaced = false
created_by = ""
[[agents]]
id = "bpw-agent-2"
name = "Publisher Agent"
gx = 9
gy = 9
width = 2
height = 2
system_prompt = ""
projects = []
has_session = false
last_status = ""
overrides = []
unplaced = false
created_by = ""
[[agents]]
id = "bpw-agent-3"
name = "Independent Reviewer Agent"
gx = 17
gy = 5
width = 2
height = 2
system_prompt = ""
projects = []
has_session = false
last_status = ""
overrides = []
unplaced = false
created_by = ""
[[agents]]
id = "bpw-agent-1"
name = "Coordinator Agent"
gx = 0
gy = 8
width = 2
height = 2
system_prompt = ""
projects = []
has_session = false
last_status = ""
overrides = []
unplaced = false
created_by = ""
[[agents]]
id = "bpw-script-1"
name = "blueprint_lint"
gx = 4
gy = 5
width = 2
height = 2
system_prompt = ""
projects = []
has_session = false
last_status = ""
template_id = "builtin-script"
overrides = []
unplaced = false
created_by = ""
[[agents]]
id = "bpw-script-2"
name = "blueprint_metrics_snapshot"
gx = 6
gy = 5
width = 2
height = 2
system_prompt = ""
projects = []
has_session = false
last_status = ""
template_id = "builtin-script"
overrides = []
unplaced = false
created_by = ""
[[agents]]
id = "bpw-script-3"
name = "blueprint_verify_live"
gx = 8
gy = 5
width = 2
height = 2
system_prompt = ""
projects = []
has_session = false
last_status = ""
template_id = "builtin-script"
overrides = []
unplaced = false
created_by = ""
[[agents]]
id = "bpw-script-4"
name = "blueprint_sanitize_map"
gx = 10
gy = 5
width = 2
height = 2
system_prompt = ""
projects = []
has_session = false
last_status = ""
template_id = "builtin-script"
overrides = []
unplaced = false
created_by = ""
[[agents]]
id = "bpw-script-5"
name = "blueprint_scan"
gx = 12
gy = 5
width = 2
height = 2
system_prompt = ""
projects = []
has_session = false
last_status = ""
template_id = "builtin-script"
overrides = []
unplaced = false
created_by = ""
[[agents]]
id = "bpw-vault-1"
name = "HTTP_EGRESS"
gx = 2
gy = 1
width = 1
height = 1
system_prompt = ""
projects = []
has_session = false
last_status = ""
template_id = "builtin-vault"
overrides = []
unplaced = false
created_by = ""
[[agents]]
id = "bpw-loop"
name = "Publish Loop"
gx = 3
gy = 9
width = 1
height = 1
system_prompt = ""
projects = []
has_session = false
last_status = ""
template_id = "builtin-loop"
overrides = []
unplaced = false
created_by = ""
[[agents]]
id = "bpw-table-1"
name = "coordinator_notes"
gx = 0
gy = 10
width = 2
height = 2
system_prompt = ""
projects = []
has_session = false
last_status = ""
template_id = "builtin-table"
overrides = []
unplaced = false
created_by = ""
[[agents]]
id = "bpw-table-7"
name = "blueprint_lessons"
gx = 12
gy = 2
width = 2
height = 2
system_prompt = ""
projects = []
has_session = false
last_status = ""
template_id = "builtin-table"
overrides = []
unplaced = false
created_by = ""
[[agents]]
id = "bpw-table-2"
name = "blueprint_reviews"
gx = 6
gy = 2
width = 2
height = 2
system_prompt = ""
projects = []
has_session = false
last_status = ""
template_id = "builtin-table"
overrides = []
unplaced = false
created_by = ""
[[agents]]
id = "bpw-table-4"
name = "blueprint_metrics"
gx = 8
gy = 2
width = 2
height = 2
system_prompt = ""
projects = []
has_session = false
last_status = ""
template_id = "builtin-table"
overrides = []
unplaced = false
created_by = ""
[[agents]]
id = "bpw-table-6"
name = "sanitize_rules"
gx = 10
gy = 2
width = 2
height = 2
system_prompt = ""
projects = []
has_session = false
last_status = ""
template_id = "builtin-table"
overrides = []
unplaced = false
created_by = ""
[[agents]]
id = "bpw-table-5"
name = "blueprint_runs"
gx = 10
gy = 0
width = 2
height = 2
system_prompt = ""
projects = []
has_session = false
last_status = ""
template_id = "builtin-table"
overrides = []
unplaced = false
created_by = ""
[[agents]]
id = "bpw-table-3"
name = "blueprints_registry"
gx = 8
gy = 0
width = 2
height = 2
system_prompt = ""
projects = []
has_session = false
last_status = ""
template_id = "builtin-table"
overrides = []
unplaced = false
created_by = ""
[[agents]]
id = "bpw-loader-5"
name = "Pipeline Loader 5"
gx = 14
gy = 9
width = 1
height = 1
system_prompt = ""
projects = []
has_session = false
last_status = ""
template_id = "builtin-yoke"
doc_text = "{\"held\":null,\"v\":1}"
overrides = []
unplaced = false
created_by = ""
[[agents]]
id = "bpw-belt-4"
name = "Pipeline Belt 4"
gx = 13
gy = 9
width = 1
height = 1
system_prompt = ""
projects = []
has_session = false
last_status = ""
template_id = "builtin-belt"
doc_text = "{\"held\":null,\"v\":1}"
overrides = []
unplaced = false
created_by = ""
[[agents]]
id = "bpw-belt-3"
name = "Pipeline Belt 3"
gx = 12
gy = 9
width = 1
height = 1
system_prompt = ""
projects = []
has_session = false
last_status = ""
template_id = "builtin-belt"
doc_text = "{\"held\":null,\"v\":1}"
overrides = []
unplaced = false
created_by = ""
[[agents]]
id = "bpw-loader-4"
name = "Pipeline Loader 4"
gx = 11
gy = 9
width = 1
height = 1
system_prompt = ""
projects = []
has_session = false
last_status = ""
template_id = "builtin-yoke"
doc_text = "{\"held\":null,\"v\":1}"
overrides = []
unplaced = false
created_by = ""
[[agents]]
id = "bpw-loader-3"
name = "Pipeline Loader 3"
gx = 9
gy = 11
width = 1
height = 1
system_prompt = ""
projects = []
has_session = false
last_status = ""
template_id = "builtin-yoke"
doc_text = "{\"held\":null,\"v\":1}"
overrides = []
unplaced = false
created_by = ""
[[agents]]
id = "bpw-loader-2"
name = "Pipeline Loader 2"
gx = 8
gy = 9
width = 1
height = 1
system_prompt = ""
projects = []
has_session = false
last_status = ""
template_id = "builtin-yoke"
doc_text = "{\"held\":null,\"v\":1}"
overrides = []
unplaced = false
created_by = ""
[[agents]]
id = "bpw-loader-1"
name = "Pipeline Loader 1"
gx = 6
gy = 9
width = 1
height = 1
system_prompt = ""
projects = []
has_session = false
last_status = ""
template_id = "builtin-yoke"
doc_text = "{\"held\":null,\"v\":1}"
overrides = []
unplaced = false
created_by = ""
[[agents]]
id = "bpw-belt-2"
name = "Pipeline Belt 2"
gx = 5
gy = 9
width = 1
height = 1
system_prompt = ""
projects = []
has_session = false
last_status = ""
template_id = "builtin-belt"
doc_text = "{\"held\":null,\"v\":1}"
overrides = []
unplaced = false
created_by = ""
[[agents]]
id = "bpw-belt-1"
name = "Pipeline Belt 1"
gx = 4
gy = 9
width = 1
height = 1
system_prompt = ""
projects = []
has_session = false
last_status = ""
template_id = "builtin-belt"
doc_text = "{\"held\":null,\"v\":1}"
overrides = []
unplaced = false
created_by = ""
[agent_harnesses]
[agent_models]
[agent_runtimes]
[agent_slugs]
[node_creator]
[node_orientations]
[spawned_by]
[[wires]]
from = "bpw-agent-1"
to = "bpw-loop"
[[wires]]
from = "bpw-vault-1"
to = "bpw-agent-1"
[[wires]]
from = "bpw-agent-1"
to = "bpw-vault-1"
[[wires]]
from = "bpw-agent-2"
to = "bpw-agent-1"
[[wires]]
from = "bpw-agent-1"
to = "bpw-agent-2"
[[wires]]
from = "bpw-agent-1"
to = "bpw-context-2"
[[wires]]
from = "bpw-context-2"
to = "bpw-agent-1"
[[wires]]
from = "bpw-agent-1"
to = "bpw-chest-3"
[[wires]]
from = "bpw-agent-2"
to = "bpw-agent-3"
[[wires]]
from = "bpw-agent-3"
to = "bpw-agent-2"
[[wires]]
from = "bpw-table-1"
to = "bpw-agent-1"
[[wires]]
from = "bpw-agent-2"
to = "bpw-script-1"
[[wires]]
from = "bpw-script-1"
to = "bpw-agent-2"
[[wires]]
from = "bpw-agent-3"
to = "bpw-script-5"
[[wires]]
from = "bpw-agent-2"
to = "bpw-script-2"
[[wires]]
from = "bpw-agent-2"
to = "bpw-script-3"
[[wires]]
from = "bpw-agent-2"
to = "bpw-script-4"
[[wires]]
from = "bpw-agent-2"
to = "bpw-script-5"
[[wires]]
from = "bpw-script-4"
to = "bpw-agent-2"
[[wires]]
from = "bpw-script-3"
to = "bpw-agent-2"
[[wires]]
from = "bpw-script-2"
to = "bpw-agent-2"
[[wires]]
from = "bpw-context-3"
to = "bpw-agent-1"
[[wires]]
from = "bpw-agent-1"
to = "bpw-context-3"
[[wires]]
from = "bpw-context-4"
to = "bpw-agent-3"
[[wires]]
from = "bpw-context-3"
to = "bpw-agent-2"
[[wires]]
from = "bpw-vault-1"
to = "bpw-script-2"
[[wires]]
from = "bpw-vault-1"
to = "bpw-script-3"
[[wires]]
from = "bpw-script-2"
to = "bpw-table-4"
[[wires]]
from = "bpw-table-7"
to = "bpw-agent-3"
[[wires]]
from = "bpw-table-6"
to = "bpw-agent-3"
[[wires]]
from = "bpw-table-2"
to = "bpw-agent-2"
[[wires]]
from = "bpw-table-6"
to = "bpw-agent-2"
[[wires]]
from = "bpw-table-4"
to = "bpw-script-2"
[[wires]]
from = "bpw-table-2"
to = "bpw-agent-3"
[[wires]]
from = "bpw-table-4"
to = "bpw-agent-2"
[[wires]]
from = "bpw-table-7"
to = "bpw-agent-2"
[[wires]]
from = "bpw-table-5"
to = "bpw-agent-2"
[[wires]]
from = "bpw-table-3"
to = "bpw-agent-2"
[[wires]]
from = "bpw-context-1"
to = "bpw-agent-1"
[[wires]]
from = "bpw-context-1"
to = "bpw-agent-2"
[script_artifacts]
bpw-script-1 = { executor = "wasm-v1", org_id = "da29e898-cc35-467b-b306-22fd0115c0db", sha256 = "dc1700f5edb0bc18aca3fbdd6bdbef95c15c7cc9458c7e1bb3b50af246bf50a0" }
bpw-script-2 = { executor = "wasm-v1", org_id = "da29e898-cc35-467b-b306-22fd0115c0db", sha256 = "4bd7705a6bf561e814b0c8076e850a461a12c2b2d6b021e7db1bf169a55d5f29" }
bpw-script-3 = { executor = "wasm-v1", org_id = "da29e898-cc35-467b-b306-22fd0115c0db", sha256 = "7fbcdd3498b45af7ec797b293d9f33e0c736727bd9813c118d817e68b6d0846e" }
bpw-script-4 = { executor = "wasm-v1", org_id = "da29e898-cc35-467b-b306-22fd0115c0db", sha256 = "4ea0bd297c535e5d1957960d748057f8410290039b5dd842586d3c111673ceb7" }
bpw-script-5 = { executor = "wasm-v1", org_id = "da29e898-cc35-467b-b306-22fd0115c0db", sha256 = "99241531751ffb413ebd45608a99270165946db35096ce2aa2db473b0f9e2788" }