Runcastle

Topology

The manifest's topology is a small node/edge graph describing your orchestration shape. It is optional (validation warns if absent), but it is how your workflow shows itself: it drives the interactive diagram on the detail page, the mini-diagram on cards, and the social OG image.

Example

A plan → implement → review pipeline with a parallel fan-out on implementation, a review feedback loop, and a final non-agent git step:

"topology": {
  "nodes": [
    { "id": "plan",   "role": "planner",     "label": "Plan" },
    { "id": "impl",   "role": "implementer", "label": "Implement", "fanOut": true },
    { "id": "review", "role": "reviewer",    "label": "Review" },
    { "id": "merge",  "role": null,          "label": "Merge", "kind": "git" }
  ],
  "edges": [
    { "from": "plan",   "to": "impl" },
    { "from": "impl",   "to": "review" },
    { "from": "review", "to": "impl",  "label": "fix", "loop": true },
    { "from": "review", "to": "merge" }
  ]
}
PlanImplementReviewMerge

Node fields

  • id (string, required) — unique identifier, referenced by edges.
  • role (string | null, required) — the agent role this node represents. Use null for non-agent steps; they get a muted rendering.
  • label (string, required) — display text. Long labels are truncated in diagrams.
  • kind (string, optional) — node flavor, e.g. "git" for repository operations.
  • fanOut (boolean, optional) — marks a node that runs as parallel instances. Rendered as a stacked card with an ×N badge.

Edge fields

  • from / to (string, required) — node ids.
  • label (string, optional) — short annotation, e.g. a condition.
  • loop (boolean, optional) — marks a feedback edge (e.g. reviewer sending work back). Rendered dashed and amber, animated in the interactive diagram.

Where the graph is rendered

  • Detail page— an interactive, read-only React Flow diagram, laid out left-to-right. Clicking a node scrolls to that agent's prompt file.
  • Cards — a static mini-SVG generated server-side at publish time and cached, so browse pages stay light.
  • OG images — the same SVG renderer composes your topology into the social preview image for /w/author/slug.

All three renderings treat node and edge text as untrusted content — it is escaped and truncated everywhere. See the security model for the full picture, and the manifest reference for the exact schema.