What
Durable, project-scoped Markdown notes that persist across runs, are read/written by agents via the Fabro MCP server, and are viewable/editable by humans in the web UI. Inspired by [Soloterm's scratchpads](https://soloterm.com/api/v1/docs/scratchpads).
Why
Fabro has context (ephemeral, stage-to-stage), artifacts (write-once results), variables (typed config), and Git checkpoints (code) — but no durable, shared working note that survives across runs and that parallel branches, sub-agents, child runs, and humans can all read and append to.
Top use case: durable handoffs in fan-out/fan-in graphs — a supervisor writes the plan, parallel workers append findings, the merge node reads it back. Fabro can do this natively because it owns the run graph; an external scratchpad MCP can't.
Proposed shape
- Model: named Markdown note (
id, title, body, timestamps, revision/ETag), project-scoped. Stored in the existing object store / SlateDB; included in fabro dump.
- MCP tools:
scratchpad_list, _read, _write, _append_section, _edit (with If-Match), _tail, _find. Prefer section-append + revisioned edits over blind replace (concurrent writers).
- Workflow: readable/writable from any stage; shared across sub-agents/child runs/branches; usable in prompt templates; emits run events.
- UI / CLI / REST: per-project panel with live updates;
fabro scratchpad … with --json; project REST endpoints with If-Match (matching automations/environments).
- Config:
[server.scratchpads] to toggle + set size limits; respect secret redaction.
Non-goals
Not artifacts/checkpoints, not typed config (variables), not multi-tenant ACLs (inherits single-tenant posture), not a CRDT editor.
What
Durable, project-scoped Markdown notes that persist across runs, are read/written by agents via the Fabro MCP server, and are viewable/editable by humans in the web UI. Inspired by [Soloterm's scratchpads](https://soloterm.com/api/v1/docs/scratchpads).
Why
Fabro has
context(ephemeral, stage-to-stage),artifacts(write-once results),variables(typed config), and Git checkpoints (code) — but no durable, shared working note that survives across runs and that parallel branches, sub-agents, child runs, and humans can all read and append to.Top use case: durable handoffs in fan-out/fan-in graphs — a supervisor writes the plan, parallel workers append findings, the merge node reads it back. Fabro can do this natively because it owns the run graph; an external scratchpad MCP can't.
Proposed shape
id,title,body, timestamps, revision/ETag), project-scoped. Stored in the existing object store / SlateDB; included infabro dump.scratchpad_list,_read,_write,_append_section,_edit(withIf-Match),_tail,_find. Prefer section-append + revisioned edits over blind replace (concurrent writers).fabro scratchpad …with--json; project REST endpoints withIf-Match(matching automations/environments).[server.scratchpads]to toggle + set size limits; respect secret redaction.Non-goals
Not
artifacts/checkpoints, not typed config (variables), not multi-tenant ACLs (inherits single-tenant posture), not a CRDT editor.