Skip to content

Glossary

Plain words lead (session, wire, run, gate, merge, judge, parallelism, circuit breaker). Splice is the one loom word we keep. There isn’t a short plain synonym for “edit the value in flight.”


TermMeaning
Agent definitionA droppable node representing one agent a provider offers. A Claude Code, Cursor, Copilot, Codex, or Grok builtin, an opencode / Antigravity 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.
BlueprintAn 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. Root / subagent nodes support view transcript, open context, and view reasoning. Tool / skill / reasoning nodes support view / download invocations. ❝ context nodes support view context / download payload. Topbar ↗ urls lists outbound http(s) URLs from tool calls (filter by domain / tool / text). See Session blueprint.
Bottom dockPanel under the workflow canvas with Run log, Issues, and Graph lint, plus gate prompts when an in-tab run parks. Toggle with ⊞/⊟ or double-click the header. Drag the top edge to resize. Does not auto-open on run start/stop. See Bottom dock.
BypassNode 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.
Circuit breakerA ‡ per-wire limit on spend, tokens, duration, content, or retries. Abort, skip, or park. See Circuit breakers.
Context payloadAn 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.
Data nodeA ◇ built-in that holds a typed value on the card (string · int · float · bool · json), or coerces an inbound text-lane wire to that type at run time. Useful between custom nodes that declare typed ports. See Prompt, converter & output.
Detached runA 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 extract/distill runs mid-job when a session is wired. See Detached runs.
DelayA ◷ 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.
err port / error connectorAgent-def lower red out (out:err). After retries are exhausted, failure text emits there when wired. The wire paints red. Hover: err · after retries exhausted. Unwired keeps halt / continue-on-error starve. See Agents · Errors.
FrameA ▦ 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.
Graph lintSoft 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 Graph lint. Hard blockers are under Issues.
IssuesBottom-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.
InvocationsEvery call of one tool, skill, or reasoning stream in a session. The blueprint side list shows up to 60 samples. view invocations / view reasoning / ⇓ download … load the full dump. See View invocations and Session blueprint.
JudgeA ? node that routes inbound text to one labeled out-port (pass / fail / unsure) via ordered regex or contains matchers. Unmatched → unsure emit or park. Not an expression language. See Judge.
LaneWhat 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.
FavoritesThe ★ Favorites jump list. Soft bookmarks to workflows, sessions, library payloads, skills, rules, and files. Not a copy of content. Missing targets can be pruned. See Favorites. Distinct from the Library.
LibraryThe ❝ 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. Session contexts copied with → workflow · reference land here tagged reference. See Context library and Open files & context.
LineageThe ⇄ 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.
Live (session status)Process is up: live (open, not generating), running (generating), or waiting (needs input). isSessionLive is true for all three. The footer ❯ N live and Sessions ● active filter use that. Distinct from live handoff. See Sessions · Live status.

TermMeaning
MapThe ◈ Map view (/map). One project as a graph of sessions, contexts, workflows, agents, rules, and skills. Built from GET /api/atlas?dir=…. Distinct from the flat Sessions list. See Map.
MergeA ⋈ node that combines several inbound wires (concat, first, majority, or synthesize). Multi-in · 1-out. See Merging.
MCPModel Context Protocol. threadle mcp exposes saved workflows as host tools (wf_<graphId>. Optional publish allowlist). The canvas ◈ MCP tool node calls one tool on a discovered server (stdio · streamable-http · SSE). Registry: ~/.config/threadle/mcp/servers.json. See MCP and MCP tool.
MuteNode 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.
NodeOne block on the canvas. Some represent things that already exist (a session, an agent definition, a context payload). Others do work (prompt, agent, merge, custom). Others are pure structure (frame, note). See Nodes overview.
NodeDefinitionDeclarative catalog entry for one built-in graph type (identity, wiring, ports, menus). Custom nodes are not definitions. They all use type: "custom". See NodeDefinition.
Open (file viewer)Floating, resizable windows that show local text files, interactive transcripts, reconstructed session context, tool / skill / reasoning invocation dumps, or library payload bodies in-app. Syntax highlighting, markdown render, 1.5 MB preview cap, Esc to close. ⟨/⟩ opens in your editor (files / context). ⇓ downloads (including full uncapped invocations). See Open files & context.
ParamA 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.
ParallelismMax independent ready nodes executing at once (default 4). A ceiling, not a target. See Parallelism.
Port capacityMax 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.
Portable graphA 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.
ProviderAn 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, Cursor, Antigravity, Codex, GitHub Copilot, and Grok Build. Missing providers contribute nothing and break nothing. See Providers.
Reference (tag)Library tag applied when you snapshot a session’s reconstructed context via → workflow · reference or library · reference. The payload is a full transcript-excerpt (thinking + tool I/O). Filter Library / palette for reference to reuse it on other graphs. See Open files & context.
SessionOne 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. Runs create new sessions via the provider CLI.
Skill nodeA ✦ node that either injects a SKILL.md into the text lane, or invokes /{name} on a provider CLI (Claude, Cursor, opencode, …). Sibling § Rules injects rules files only. See Skills & rules.
Skill invokeSkill mode: "invoke". Headless run with prompt /{name} (+ optional inbound text). Provider chip on the card. Default Claude.
Watch modethreadle run … --watch. Re-run on portable graph file mtime and/or git changes under --dir. Prefer triggers + daemon for multi-graph automation. See CLI. Watch mode.
Open (CLI)threadle open [target…]. Open the local UI to a dashboard tab, /graph/:id, session blueprint, or skill/rules focus. Needs a running server. See CLI. Open UI.
Backup bundlethreadle/backup@1 archive of graphs, payloads, nodes, settings, favorites, and folders. threadle export / import. Distinct from a portable graph. See CLI.
Graph historyPersisted snapshots on save under graphs/versions/<id>/ (cap 30). Distinct from in-session undo. See Graph history.
TriggerConfig-file cron or path-watch that starts a detached workflow (triggers.json + threadle daemon). Distinct from CLI --watch. See Triggers.
Stdlib packCurated utility custom nodes in the threadle repo (examples/nodes/stdlib/): jq, extract-json, split-md, diff, rg, …. Import instead of growing built-ins. Distinct from tutorial demos under examples/nodes/. See Stdlib pack.
Spend ceilingGraph-wide tracked-cost limit in ≔ params. Distinct from a per-wire circuit breaker. See Costs and Circuit breakers.
Status barApp-wide footer (Sessions, Timeline, Lineage, Diff, canvas) showing live session count, jobs, agents, services, and memory. Hover for a breakdown popover. Not the bottom dock. See Tour.
SpliceEditing inbound text at an approval gate. Or at a circuit breaker set to park. Before continuing. Downstream gets your version. See Splice.
Sub-workflowA 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 spendTwo numbers, never blended. Tracked cost is the list price of the tokens a run consumed, from the bundled models.dev-shaped price table. What an API would have billed. Actual spend is what you were really billed: $0 for subscription-billed Claude Code, Cursor, and Antigravity 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.
UntilA ↻ node for counted re-entry of a subgraph (default max 3, hard cap 8). Outs: reenter / exhausted. Reenter edges are ignored by topo. Not a free DAG cycle. Pair with a spend ceiling or circuit breaker. See Until.
Model usage exhaustedSubscription pool spent. Claude 5h / 7d weekly / Opus 7d (from ~/.claude.json), or Cursor monthly Spending pools (from CLI errors). Run log ! line. Claude agent cards chip at ≥90%. See Costs · Errors.
Wait for idleA ◌ gate that parks until an inbound session is not running / waiting, then continues. On timeout: park, skip, or abort. See Wait for idle.
Value typeThe 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.
WireOne 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.

These twoDiffer because
Live (session status) vs live handoffStatus is process liveness on Sessions. Live handoff is a ⇄ canvas gate.
Wait for idle vs live handoffWait-for-idle only polls until not busy. Live handoff opens a chat until Ready.
Status bar vs bottom dockFooter chips + hover hint vs Run log / Issues / Graph lint under the canvas.
Built-in vs custom nodeBuilt-ins are NodeDefinitions in the shared catalog. Custom nodes are folders you own under ~/.config/threadle/nodes/, all typed custom.
Stdlib pack vs demosStdlib = curated utilities (jq, diff, …). Demos = tutorial flavors (hello-world, typed lanes). Both import the same way.
MCP server vs MCP tool nodeServer = hosts call your workflows. Tool node = your graph calls an external MCP server.
Mute vs bypassMute removes the node and starves downstream. Bypass keeps the wire flowing and skips only the work.
Trigger vs --watchtriggers.json + daemon = multi-graph / cron. --watch = one foreground graph, graph-file + git.
Open (file viewer) vs threadle openFile viewer floats markdown/transcripts in-app. CLI open launches the browser to a dashboard deep link.
Lane vs value typeThe lane is what kind of thing travels (text, session, context). The value type is how the text parses (int, json, …).
Merge vs frameA merge combines values. A frame groups nodes.
Judge vs circuit breakerJudge routes to a labeled out. A breaker aborts, skips, or parks on one wire.
Until vs cycleUntil is counted re-entry with a hard max. Free DAG cycles stay refused.
Tracked cost vs actual spendList price versus money. threadle shows both and never averages them.
Model usage exhausted vs spend ceilingUsage = provider subscription pool. Spend ceiling = graph-wide tracked-cost tripwire you set.
Graph lint vs readinessLint is advisory. Readiness is the hard preflight that refuses a detached run.
Frame vs sub-workflowA 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 graphA portable graph is a file you can send. A saved graph is an id in ~/.config/threadle/graphs/.
Spend ceiling vs circuit breakerCeiling is whole-run. Breaker is one wire.

A treadle is the pedal that drives a loom. Sessions are the warp. Wires are the weft. That metaphor is flavor only. The UI speaks in everyday words.