The node-graph patchbay for your AI coding sessions.
From session to the next run.
Your agents write everything down: transcripts, tool calls, files touched, spend. Then nobody reads it, and the context dies at each tool boundary. threadle reads it, draws it, and lets you wire it into the next run. Every Claude Code, opencode, Cursor agent, Antigravity agy, Codex, GitHub Copilot CLI, Grok Build, and Muse Code session becomes a wireable node. Inspect what happened. Hand context across tools. Run the pipeline.
Yours, with no catch. Discovery is read-only against storage you already have. threadle binds 127.0.0.1, has no account and no telemetry, and does not upload transcripts. Pressing ▶ drives each tool’s own CLI under your credentials. If threadle disappears tomorrow, your sessions are exactly where they always were.
Website · Docs · Install · CLI · MCP · Security
Every session on disk. Tokens, cache, spend — nothing to import.
Every session, drawn. See what your agents did while you weren't looking.
Curl portable. macOS or Linux (arm64 / x64), bundled Node 26:
curl -fsSL https://threadle.sh/install.sh | bash
threadle # http://127.0.0.1:4570Windows, and anywhere with Node ≥ 22.12. Use npm:
npx threadle
# or from a clone
git clone https://github.com/threadle-sh/threadle && cd threadle
npm install && npm run build && npm startPrefer WSL on Windows if you want the curl installer and Linux agent paths (~/.claude, …). Native Windows threadle sees native Windows agent homes (%USERPROFILE%\.…). It does not bridge into WSL storage.
Tip
Sessions appear on first launch, nothing to import. threadle check verifies PATH, provider storage, and UI assets. threadle check --providers probes inject-critical CLI flags.
Pin a curl release with THREADLE_VERSION=1.0.2. Uninstall as cleanly as you installed: rm -rf ~/.local/share/threadle ~/.local/bin/threadle. Everything threadle wrote lives in ~/.config/threadle. Install notes · provider freshness
threadle # UI
threadle run hello-wire # agent-free example
threadle run plan-implement-review --param task="…" --approve-all- See. Every session on disk, with spend, cache, and context pressure. Open a blueprint for turns, tools, files, subagents.
- Connect. Distill a session into a brief and inject it into another tool. Payloads stay tagged and show up in lineage.
- Run. Wire agents, gates, iterators, merges. ▶ is a server job. Approval parks for a splice, and live handoff chats until Ready.
- Ask.
threadle mcpexposes sessions and saved workflows as MCP tools, so your agent can answer "what did I spend on this last week?" without leaving the session.
One canvas. Every agent.
A handoff, concretely:
Claude Code plans an auth refactor → the session appears in threadle
Distill it into a brief → tagged, content-addressed, in the library
Inject the brief into Cursor → same repo, next tool, no copy-paste
Lineage: session → brief → session → nothing lost at the boundary
Recipes (best-of-n, handover-brief, …) live in examples/recipes/.
Eight views, one source of truth · sessions · lineage · map · timeline · library · statistics · files · subworkflows
The full set lives in docs/screenshots/.
Parsers never mutate ~/.claude, opencode’s SQLite, ~/.cursor, ~/.gemini/antigravity-cli, ~/.codex, ~/.copilot, or ~/.grok, ~/.muse, or ~/.local/share/muse. Runs spawn the official CLI, and it writes new sessions.
The server rejects foreign Host (DNS rebinding) and cross-site write Origin (CSRF). There is no remote mode and no auth token. List prices ship bundled (CI-refreshed from models.dev). The process does not fetch them at runtime. Everything threadle persists is under ~/.config/threadle/.
Detached / CLI runs cannot splice a parked gate or distill mid-run. They need --approve-all or a pre-materialized payload. Live chat stays on the canvas. Constraints.
| Goal | Start here |
|---|---|
| Tour, learning path, recipes | docs.threadle.sh |
| CLI, jobs, detached runs | docs/cli, also skills, open, run --watch |
| MCP server + canvas client | docs/mcp.md · examples/mcp |
| Custom nodes | docs/custom-nodes.md · stdlib pack |
| File viewer | docs/file-viewer.md |
git clone https://github.com/threadle-sh/threadle.git
cd threadle
npm install
npm run dev # API :4570 + Vite :5173packages/shared types, zod, node catalog
packages/server Hono API + `threadle` bin
packages/web Vue 3 + Vue Flow
See CONTRIBUTING.md for checks before a PR. The fastest bug report is an issue with a session bundle attached (Sessions → ⇓ bundle).







