Glossary
Weaving vocabulary where threadle invented a concept; plain words everywhere else.
| Term | Meaning |
|---|---|
| Agent definition | A droppable node representing one agent a provider offers — a Claude Code or Cursor builtin, an opencode agent, or a markdown agent file in .claude/agents/. It carries a provider, a name, a source, and a model you pick in the inspector. Running one starts a real session through that provider’s CLI. See Agents & sessions. |
| Blueprint | An auto-assembled structural view of a single session: every tool it called, every skill and slash command it invoked, the files it touched, turn counts, and its subagent runs. Assembled from the whole transcript including abandoned branches, not just the surviving thread. |
| Bottom dock | Panel under the workflow canvas with Run log, Issues, and Loose ends, plus gate prompts when an in-tab run parks. See Bottom dock. |
| Bypass | Node state that makes the node pass its inbound text straight through without executing. The wire stays live; the work does not happen. Mutually exclusive with mute. See Graph & wires. |
| Context payload | An immutable, content-addressed blob of extracted context — a distilled summary, a transcript excerpt, or a files list. Identified by the SHA-256 of its kind, source session, and content, so re-extracting the same thing produces one file. Stored under payloads/; see Files & config. |
| Detached run | A server job — the workflow runs inside the threadle process, not the browser tab. Started by ▶ (when there are no interactive gates), ≫, or threadle run --detach. Survives a closed tab; reopen the graph to watch progress, or use threadle jobs / logs. Try the agent-free Detached delay example (~60s). Gates need approve-all; context nodes need a payload already materialized. See Detached runs. |
| Delay | A ◷ node that pauses the text lane for a wall-clock duration (capped at 5 minutes). No agent. 1 in · 1 out. Useful for practicing detached jobs. |
| Frame | A ▦ Group node drawn around others. A plain frame is visual grouping plus drag-together membership; a linked frame points at another graph and behaves as an embedded sub-workflow, with inbound wires broadcast to its entry members and outbound wires fanned in from its exits. |
| Issues | Bottom-dock tab listing hard readiness problems that block ▶ / ≫ — missing model, unwired required ports, unusable context, and so on. Same check as the pre-run gate. See Bottom dock. |
| Knot | A ⋈ node that merges several inbound wires with an explicit strategy — concat, first, majority, or synthesize. Multi-in · 1-out by design. See Knot. |
| Lane | What a wire is carrying. Three exist: text (the common case), session (an agent’s run handed to a session node, or a session used as a continuation), and context (anything touching a context node). Lanes are colour-coded on the canvas. See Lanes & value types. |
| Library | The ❝ Library view — every context payload you have ever extracted, newest first, searchable and taggable. Tags live in a sidecar file so the payloads themselves stay immutable. |
| Lineage | The ⇄ Lineage view — the record of which payload was injected into which session, and what came out. Backed by an append-only runs/injects.jsonl; clearing it loses the history, not the payloads. |
| Loose ends | Always-on soft graph hygiene in the bottom dock: dangling outputs, unwired required ports, unreachable nodes, unused params, muted nodes. Advisory — it does not block a run by itself. See Loose ends. Hard blockers are under Issues. |
| Term | Meaning |
|---|---|
| Mute | Node state that removes the node from the run entirely. Downstream nodes starve. Muting is also the escape hatch for a node that would otherwise block a detached run. |
| Node | One block on the canvas. Some represent things that already exist (a session, an agent definition, a context payload); others do work (prompt, agent, knot, custom); others are pure structure (frame, note). See Nodes overview. |
| Param | A named value declared on a workflow and substituted into prompts and converter templates as {{param:name}}. Filled at run time from the dialog, or from --param name=value on the CLI. Params have a declared type and are validated before the run starts. |
| Port capacity | Max wires allowed on a handle. Built-ins have fixed limits (e.g. Delay 1/1); custom named ports default to 1 and can raise it with maxConnections in node.json. A new wire on a full single-capacity slot replaces the oldest. |
| Ply | The maximum number of independent ready nodes allowed to execute at once. Default 4. A ceiling, not a target — it never reorders dependencies. See Ply. |
| Portable graph | A workflow exported as threadle/graph@1 JSON. Machine-local details are stripped — payload hashes, session ids, absolute artifact paths, run statuses and output contents — so the file travels; skills and rules re-resolve by name on import. threadle run ./file.json imports and executes one. |
| Provider | An adapter for one agent tool: a read-only parser over whatever that tool already wrote to disk, plus a run surface that shells out to its official CLI. Claude Code, opencode, and Cursor. Missing providers contribute nothing and break nothing. See Providers. |
| Session | One conversation belonging to a provider, discovered from that provider’s own storage. Sessions are first-class nodes: sources for context extraction, targets for injection, and continuation links for agents. threadle reads them and never rewrites them. |
| Skill node | A ✦ node that injects a SKILL.md into the text lane at run time. It resolves by absolute path when known, falling back to a name lookup so a portable graph still works on another machine. Its sibling § Rules does the same for CLAUDE.md, AGENTS.md, and Cursor rules files. |
| Splice | Editing the inbound text at an approval gate — or at a tripwire set to park — before letting the run continue. The reason gates are worth having rather than just log lines. See Splice. |
| Sub-workflow | A graph whose kind is subgraph rather than workflow: extracted from a selection, and reusable by dragging it onto another canvas as a linked frame. Editing it in one place updates every graph that links to it. |
| Tracked cost / actual spend | Two numbers, never blended. Tracked cost is the list price of the tokens a run consumed, from the models.dev price table — what an API would have billed. Actual spend is what you were really billed: $0 for subscription-billed Claude Code and Cursor sessions, real money for opencode (which pays your own API keys), and equal to tracked cost when you set Claude billing to api in Settings. See Costs & billing. |
| Tripwire | A ‡ circuit breaker on one wire, watching spend, tokens, duration, content, or retry count, and reacting with abort, skip, or park. Distinct from the whole-run spend tripwire in graph settings. Reactive, not predictive. See Tripwire. |
| Value type | The declared shape of what a wire carries: text, int, float, bool, or json. text accepts anything and int widens to float; everything else must parse or the node fails loudly rather than poisoning what comes next. |
| Wire | One edge between two node handles. Invalid pairs are refused at connect time. Wires have no context menu — select one and press Backspace or Delete. See Keyboard & canvas. |
Pairs worth not confusing
Section titled “Pairs worth not confusing”| These two | Differ because |
|---|---|
| Mute vs bypass | Mute removes the node and starves downstream. Bypass keeps the wire flowing and skips only the work. |
| Lane vs value type | The lane is what kind of thing travels (text, session, context). The value type is how the text parses (int, json, …). |
| Knot vs frame | A knot merges values. A frame groups nodes. |
| Tracked cost vs actual spend | List price versus money. threadle shows both and never averages them. |
| Loose ends vs readiness | Loose ends are advisory lint. Readiness is the hard preflight that refuses a detached run. |
| Frame vs sub-workflow | A frame is a node on a canvas. A sub-workflow is a graph on disk. A linked frame is a frame pointing at one. |
| Portable graph vs saved graph | A portable graph is a file you can send. A saved graph is an id in ~/.config/threadle/graphs/. |
Why the loom words
Section titled “Why the loom words”A treadle is the pedal that drives a loom. The metaphor is load-bearing rather than decorative, and it is consistent:
| Word | In weaving | In threadle |
|---|---|---|
| Warp | Threads already strung on the frame | Your existing sessions |
| Weft | The thread crossing them | The wires you draw |
| Ply | How many strands are twisted together | How many branches run at once |
| Knot | Where strands are tied into one | Where wires merge under a strategy |
| Splice | Joining two ends by hand | Editing the text at a gate |
| Loose ends | The bits left hanging | Dangling outputs and unwired ports |
| Lane | — | Which kind of value a wire carries |
Everything else — node, wire, param, provider, session — is deliberately the boring word.
Related
Section titled “Related”- Graph & wires — the model these words describe
- Nodes overview — glyph for glyph
- Keyboard & canvas — doing it with your hands