chenxiachan/thoughtdag

Your thinking deserves a map: an infinite canvas where LLM conversations grow into an editable thought graph. Wires are the context.

427

stars

558

commits

TypeScript

primary language

Sep 10, 2026

updated

chenxiachan.github.io/thoughtdag/
agentic-search
ai-tools
context-engineering
cordis-plugin
dag
deepseek-harness-plugin
dsh-plugin
human-in-the-loop
infinite-canvas
knowledge-graph
llm
local-first
mcp
note-taking
ollama
pkm
react-flow
research-tool
self-hosted
Browse cluster: RAG, Knowledge Graphs, and LLM Systems

README

ThoughtDAG logo

ThoughtDAG

Your thinking deserves a map. An infinite canvas where LLM conversations grow into an editable thought graph.

License Status

Download ↓ · Website · Docs

中文 · Quick start · How it differs · Session Atlas · Research · Documentation · Models & privacy

ThoughtDAG hero demo: asking from a PDF passage, editing model context by removing an edge, zooming out into a thought map, exporting a backup, and turning scattered agent sessions into persistent project context with Session Atlas

YouTube thumbnail for the ThoughtDAG narrated tour

▶ The 33-second narrated tour

The one rule

Wires are the context. What the model sees is exactly what wires into the node. Editing the graph edits the model's memory.

Many tools put conversations on a canvas. In ThoughtDAG, a wire is not decoration or an execution route. It determines what the model sees next.

In action

One principle behind every gesture: the human in the loop, the model on the wires. No autonomous agent redraws your graph.

Illustration: the research chain wired to a summary node, with the edge to a dinner node cut into a red dashed line

✂️ Delete one edge, get a different answer

The model sees only what wires in. Delete the noise edge, ask again, and the same prompt returns a clean answer. Reproduce it in chapter ③ of the example canvas.

📖 Read a paper into a map

Select a passage, ask right there. The answer lands on the canvas with its page number, and the p.N chip jumps back to the page. Finish the paper, and the map is drawn.

Illustration: a passage selected on the original page, a purple ask bubble beside it, the paragraph tagged p.3
Illustration: three takeaway plaques with ruled-out, decided and pivoted badges, linked by dashed lines

💎 Condense, zoom out, and export the shape

Merge nodes into a higher conclusion; weave highlights into cited prose. Zoom through full cards, takeaway plaques and an icon skeleton. Then export the current structure as a light or dark Thought Map.

🧭 Session Atlas: bring agent conversations onto the canvas

Bring work scattered across different agents into one editable context graph. Continue from any node, then bring the new work back to where the thought began.

Currently supports local Claude Code and Codex sessions, with more agent integrations in development. Source sessions remain read-only.

Illustration: local Codex and Claude Code sessions grouped by project, opened as a context graph, then continued in a fresh CLI session

How ThoughtDAG differs

Many products use nodes and edges, but the graph does a different job in each category.

Product categoryHow it differs from ThoughtDAG
Linear chatContext follows one chronological thread; ThoughtDAG selects and merges visible paths.
Mind maps and whiteboardsEdges organize ideas for people; ThoughtDAG edges also change model input.
Branching chat canvasesThey usually follow one inherited branch; ThoughtDAG can merge or prune several paths.
Workflow and agent canvasesEdges run tasks and data; ThoughtDAG edges control conversational context.
RAG and automatic memoryThe system retrieves context automatically; ThoughtDAG makes the selection visible and editable.

ThoughtDAG is a user-authored context graph: incoming paths and explicit references form the next request, while excluded work stays visible on the canvas.

🗺️ Export the shape of your thinking

The export keeps the nodes, wires and high-level structural counts. Different questions and different ways of exploring them leave visibly different maps.

Four Thought Map exports showing a deep single thread, five explored branches, a three-week investigation and a literature review season

Quick start

Desktop app

On macOS, install with Homebrew:

brew install --cask thoughtdag

Or use the download page, which detects your platform and gives you the right installer; Releases keeps every build. macOS builds are signed and notarized. Windows builds are not signed yet and may show a SmartScreen warning.

Connect the Codex or Claude Code skill

Session Atlas discovers and opens your local sessions with no setup at all — and an open canvas keeps following its conversation on its own. To jump from a conversation straight to its canvas inside the agent:

  • Claude Code: /thoughtdag
  • Codex: $thoughtdag

Enable it in Session Atlas → Sources: the app installs one readable local command file, removable anytime.

Run from source

npm install
npm run server    # LLM proxy :3001
npm run dev       # → localhost:5173
# No .env? Connect any OpenAI-compatible endpoint inside the app

Environment variables, local models and connection details → docs/setup.md

Browser demo

Want a ten-second look before installing anything? The hosted demo runs in the browser, and the example canvas needs no key. It is a feature subset: Session Atlas, local session discovery, keyless web search, some direct-connection tools and the subscription bridge are desktop/local-only.

🧪 Research: Why editable context matters

Context Intervention Benchmark · Pilot v2

9 models · 1,485 test runs · $0 in free tiers · answers scored by exact match

Context does not only fade as conversations grow longer. A wrong statement flows into the replies that come after it and undermines the truthfulness of every later conclusion. Our benchmark verified this across nine language models and found the effect to be widespread: deleting the message that introduced the error is often not enough, because the follow-up replies still carry it. Restoring correct answers required cleaning up the affected passage as a whole, or letting the model rewrite it. In one model whose step-by-step thinking we could switch on and off, the minimal cleanup only worked while thinking was on. Managing context, not just accumulating it, decides what a model gets right.

The full report explains the method, the numbers and their statistics, and what this does and does not establish. It does not rank models and does not explain their inner workings; it tests one observable claim: changing what a model sees changes what it answers next.

📖 Read the first case study · 📊 Methodology and results · 🗳️ Suggest the next model · 🧪 Contribute a run or case

More capabilities

CapabilityWhat it does
📤 Read-only shareOne link carries the whole graph: no account, no server storage
🧭 Staleness & replayUpstream edits mark the answers they invalidate; replay in dependency order, token estimate first
✂️ ClippingSelect a passage or drag a rectangle in the reader; it becomes canvas material with page provenance
🔌 Any modelPer-node pins that follow the line; text-only models read images through their companion text
🧭 Agent session continuityBring sessions from different agents into one map; continue from any node and return the result to the graph.
🔒 Local-firstAutomatic folder backup writes real files; point it at a synced folder for cross-device

Full feature list (60+, grouped by area) → docs/features.md

Models, cost & privacy

Connect a local Ollama or any OpenAI-compatible endpoint. Built-in presets, subscription connections and environment variables are documented in setup.

  • The free model tier covers every feature; a local Ollama runs fully offline
  • In the desktop app everything lives on your machine: canvases, keys, documents; on the web demo, model traffic runs browser-direct and keys never touch the server
  • PDFs never leave your machine; only extracted text travels when you ask
  • The backup format stays backward compatible; Markdown export is the permanent escape hatch

Contributors

@KehanLiu

Contributions are welcome — start with CONTRIBUTING.md.

Supporters

With gratitude to @andreilaiter, ThoughtDAG's first supporter, and to everyone helping this independent open-source project grow.

Support ThoughtDAG


The graph is acyclic. You are the loop.

MIT © 2026 Xia Chen · Roadmap · Feedback · Cite

Contributors

chenxiachan/thoughtdag

Your thinking deserves a map: an infinite canvas where LLM conversations grow into an editable thought graph. Wires are the context.

427

stars

558

commits

TypeScript

primary language

Sep 10, 2026

updated

chenxiachan.github.io/thoughtdag/
agentic-search
ai-tools
context-engineering
cordis-plugin
dag
deepseek-harness-plugin
dsh-plugin
human-in-the-loop
infinite-canvas
knowledge-graph
llm
local-first
mcp
note-taking
ollama
pkm
react-flow
research-tool
self-hosted
Browse cluster: RAG, Knowledge Graphs, and LLM Systems

README

ThoughtDAG logo

ThoughtDAG

Your thinking deserves a map. An infinite canvas where LLM conversations grow into an editable thought graph.

License Status

Download ↓ · Website · Docs

中文 · Quick start · How it differs · Session Atlas · Research · Documentation · Models & privacy

ThoughtDAG hero demo: asking from a PDF passage, editing model context by removing an edge, zooming out into a thought map, exporting a backup, and turning scattered agent sessions into persistent project context with Session Atlas

YouTube thumbnail for the ThoughtDAG narrated tour

▶ The 33-second narrated tour

The one rule

Wires are the context. What the model sees is exactly what wires into the node. Editing the graph edits the model's memory.

Many tools put conversations on a canvas. In ThoughtDAG, a wire is not decoration or an execution route. It determines what the model sees next.

In action

One principle behind every gesture: the human in the loop, the model on the wires. No autonomous agent redraws your graph.

Illustration: the research chain wired to a summary node, with the edge to a dinner node cut into a red dashed line

✂️ Delete one edge, get a different answer

The model sees only what wires in. Delete the noise edge, ask again, and the same prompt returns a clean answer. Reproduce it in chapter ③ of the example canvas.

📖 Read a paper into a map

Select a passage, ask right there. The answer lands on the canvas with its page number, and the p.N chip jumps back to the page. Finish the paper, and the map is drawn.

Illustration: a passage selected on the original page, a purple ask bubble beside it, the paragraph tagged p.3
Illustration: three takeaway plaques with ruled-out, decided and pivoted badges, linked by dashed lines

💎 Condense, zoom out, and export the shape

Merge nodes into a higher conclusion; weave highlights into cited prose. Zoom through full cards, takeaway plaques and an icon skeleton. Then export the current structure as a light or dark Thought Map.

🧭 Session Atlas: bring agent conversations onto the canvas

Bring work scattered across different agents into one editable context graph. Continue from any node, then bring the new work back to where the thought began.

Currently supports local Claude Code and Codex sessions, with more agent integrations in development. Source sessions remain read-only.

Illustration: local Codex and Claude Code sessions grouped by project, opened as a context graph, then continued in a fresh CLI session

How ThoughtDAG differs

Many products use nodes and edges, but the graph does a different job in each category.

Product categoryHow it differs from ThoughtDAG
Linear chatContext follows one chronological thread; ThoughtDAG selects and merges visible paths.
Mind maps and whiteboardsEdges organize ideas for people; ThoughtDAG edges also change model input.
Branching chat canvasesThey usually follow one inherited branch; ThoughtDAG can merge or prune several paths.
Workflow and agent canvasesEdges run tasks and data; ThoughtDAG edges control conversational context.
RAG and automatic memoryThe system retrieves context automatically; ThoughtDAG makes the selection visible and editable.

ThoughtDAG is a user-authored context graph: incoming paths and explicit references form the next request, while excluded work stays visible on the canvas.

🗺️ Export the shape of your thinking

The export keeps the nodes, wires and high-level structural counts. Different questions and different ways of exploring them leave visibly different maps.

Four Thought Map exports showing a deep single thread, five explored branches, a three-week investigation and a literature review season

Quick start

Desktop app

On macOS, install with Homebrew:

brew install --cask thoughtdag

Or use the download page, which detects your platform and gives you the right installer; Releases keeps every build. macOS builds are signed and notarized. Windows builds are not signed yet and may show a SmartScreen warning.

Connect the Codex or Claude Code skill

Session Atlas discovers and opens your local sessions with no setup at all — and an open canvas keeps following its conversation on its own. To jump from a conversation straight to its canvas inside the agent:

  • Claude Code: /thoughtdag
  • Codex: $thoughtdag

Enable it in Session Atlas → Sources: the app installs one readable local command file, removable anytime.

Run from source

npm install
npm run server    # LLM proxy :3001
npm run dev       # → localhost:5173
# No .env? Connect any OpenAI-compatible endpoint inside the app

Environment variables, local models and connection details → docs/setup.md

Browser demo

Want a ten-second look before installing anything? The hosted demo runs in the browser, and the example canvas needs no key. It is a feature subset: Session Atlas, local session discovery, keyless web search, some direct-connection tools and the subscription bridge are desktop/local-only.

🧪 Research: Why editable context matters

Context Intervention Benchmark · Pilot v2

9 models · 1,485 test runs · $0 in free tiers · answers scored by exact match

Context does not only fade as conversations grow longer. A wrong statement flows into the replies that come after it and undermines the truthfulness of every later conclusion. Our benchmark verified this across nine language models and found the effect to be widespread: deleting the message that introduced the error is often not enough, because the follow-up replies still carry it. Restoring correct answers required cleaning up the affected passage as a whole, or letting the model rewrite it. In one model whose step-by-step thinking we could switch on and off, the minimal cleanup only worked while thinking was on. Managing context, not just accumulating it, decides what a model gets right.

The full report explains the method, the numbers and their statistics, and what this does and does not establish. It does not rank models and does not explain their inner workings; it tests one observable claim: changing what a model sees changes what it answers next.

📖 Read the first case study · 📊 Methodology and results · 🗳️ Suggest the next model · 🧪 Contribute a run or case

More capabilities

CapabilityWhat it does
📤 Read-only shareOne link carries the whole graph: no account, no server storage
🧭 Staleness & replayUpstream edits mark the answers they invalidate; replay in dependency order, token estimate first
✂️ ClippingSelect a passage or drag a rectangle in the reader; it becomes canvas material with page provenance
🔌 Any modelPer-node pins that follow the line; text-only models read images through their companion text
🧭 Agent session continuityBring sessions from different agents into one map; continue from any node and return the result to the graph.
🔒 Local-firstAutomatic folder backup writes real files; point it at a synced folder for cross-device

Full feature list (60+, grouped by area) → docs/features.md

Models, cost & privacy

Connect a local Ollama or any OpenAI-compatible endpoint. Built-in presets, subscription connections and environment variables are documented in setup.

  • The free model tier covers every feature; a local Ollama runs fully offline
  • In the desktop app everything lives on your machine: canvases, keys, documents; on the web demo, model traffic runs browser-direct and keys never touch the server
  • PDFs never leave your machine; only extracted text travels when you ask
  • The backup format stays backward compatible; Markdown export is the permanent escape hatch

Contributors

@KehanLiu

Contributions are welcome — start with CONTRIBUTING.md.

Supporters

With gratitude to @andreilaiter, ThoughtDAG's first supporter, and to everyone helping this independent open-source project grow.

Support ThoughtDAG


The graph is acyclic. You are the loop.

MIT © 2026 Xia Chen · Roadmap · Feedback · Cite

Contributors

Languages

TypeScript

73.4%

JavaScript

16.7%

HTML

7.4%

CSS

1.6%