All features
knowledge + extensibility

Skills-as-Nodes.

Every node is a skill. Publish one and it becomes a node anyone can drop on the canvas — so the palette grows every time the community ships.

Active
publish → palette → canvas· community-shipped· MIT
what it is

The palette isn't a fixed menu. It's an ecosystem.

Every built-in — Investigate, Plan, Create, Review, Deploy — is just a skill: a named unit of work with typed inputs, a prompt-or-tool body, and typed outputs.

Write your own, publish it, and it lands in the palette as a first-class node — indistinguishable from the built-ins. Drag it onto the canvas, wire it in, press Run. When someone else publishes one, it shows up in your palette too.

a node is a skill
skill.dispatch.yaml publishes as a node
1name: "Sentiment Scan"
2author: "@mira"
3kind: node           # drops on the canvas
4inputs:
5  - text: string      # typed, wired upstream
6model: "per-node · hotswappable"
7body: "Classify tone → -1..1 + label"
8outputs:
9  - score: number
10  - label: string     # flows downstream

Same contract as a built-in node: typed in, typed out. The runtime treats Sentiment Scan exactly like Investigate or Review.

try it

Publish a skill. Watch the palette grow.

Publish a skill from the registry (left) → it enters your palette (middle) → drop it into the chain (right). Every published skill is a node you can wire in.

community registry live

Click to publish → adds to your palette.

your palette 0 added

Empty.
Publish a skill from the registry and it appears here as a draggable node.

canvas idle
Initialisertrigger
Investigateweb_search
drop a skill node here
Reviewgate

Tip: publish a skill, then drag — or tap — its palette node onto the canvas. Keyboard: focus a node, press Enter.

how it works

From a file to a node anyone can drop.

A skill is a small, version-controlled artifact. The runtime resolves it into a node type at load time — so publishing is just shipping a file.

01 · author Write the skill

Declare a name, typed inputs, a prompt-or-tool body, and typed outputs. The body can call models, tools, or shell out — same primitives the built-ins use.

02 · publish Publish to the registry

Push the skill to the shared registry — or just drop the file in your project. No build step, no plugin API. It is immediately resolvable.

03 · palette It becomes a node

The skill appears in the palette as a first-class node, indistinguishable from Plan or Create. Per-node model hotswap applies.

04 · canvas Anyone drops it in

Drag it onto the graph, wire its typed ports into a chain, and press Run. Its output — and control — flows downstream like any other node.

why it matters

One contract turns the community into your palette.

no plugin tax

No second-class extension API.

Built-ins and community skills share one node contract — typed in, a body, typed out. A skill you write isn't bolted on; it is a node.

Investigate Sentiment Scan same contract
compounding palette

Every publish grows what everyone can build.

When someone ships PDF Extract or SQL Query, it lands in your palette too — the canvas compounds with the ecosystem, not the roadmap.

core nodes13 shipped
community skillsgrowing
typed + composable

Wire it like any node.

Typed ports mean a community skill snaps into Parallel, Merge, and Review just like the built-ins.

model hotswap

Per-node, even for skills.

A published skill inherits the same per-node provider + model control — run it on GPT, Claude, or a local model.

local-first + MIT

Yours to fork.

Skills are just files in your repo. Self-host the registry, audit every body, keep it air-gapped — nothing leaves your network.