# chenxiachan/thoughtdag: wires are the context, and that is not the whole context

> An infinite canvas where model conversations become nodes you can branch, rewire and condense, with a CLI, an Electron desktop app, a DeepSeek Harness plugin, and a recall layer that searches other agents' local sessions. Its headline latency figure is 391 milliseconds against 24,813, on six runs over fourteen synthetic excerpts, with the caveats stated in the same paragraph.

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

- Repository: https://github.com/chenxiachan/thoughtdag
- Website: https://chenxiachan.github.io/thoughtdag/
- Stars: 510 · Forks: 50
- Language: TypeScript
- License: MIT
- Published: 2026-09-10 · Updated: 2026-09-10 · Language: en
- Canonical page: https://hysenlabs.com/projects/chenxiachan-thoughtdag

## The speed comparison is unusually honest about being uncontrolled

The feature that most needs scepticism has the best-documented caveats in the file. A median selection latency of 391 milliseconds is reported against 24,813 for a general model adapter, which is roughly a sixty-threefold difference. The disclosure underneath says six runs per engine over the same fourteen synthetic excerpts, that these are different inference paths and not a controlled ranking of model speed, and that retrieval and answer generation are excluded, so it does not measure whole-product speed or accuracy gains. Synthetic excerpts also mean selection quality on real material is untested by the figure. What the architecture actually claims is narrower and more interesting than the ratio: the decision layer is optional and separable, a small model ranks relevance and the model you chose writes the answer, with a rules-based fallback when no decision model is configured. The System 1 and System 2 framing is explicitly described as software roles and not a claim about human cognition.

## The headline rule describes one of two context sources

The stated rule is that wires are the context: connect conversation paths to use them in the next question, and disconnect a path without deleting the work. The supporting text makes the mechanism concrete, saying the graph changes the model's input and not just the layout, so branching, rewiring and regenerating are input operations rather than cosmetic ones. Then the detail that complicates it appears in the same section. Wires select the conversation paths, and explicit references and enabled recall can add material alongside them. So there are two mechanisms feeding the prompt, one deliberate and manual, one automatic and retrieval-based, and the slogan names only the first. That is not a contradiction so much as an unstated boundary, and it is the thing to understand before trusting the rule as a complete model of what the model will receive.

## There is no test script, only four scripts with test-shaped names

The manifest defines a smoke script, a layout test, a live-log test and a subagents test, each a plain node invocation of a script under the scripts directory. There is no plain test entry, so the conventional command does nothing useful and a continuous integration job has nothing obvious to call. That is worth weighing against what the repository actually contains, because the number of independently shipped artefacts here is larger than the script list suggests. The build graph fans out to a documentation site built with VitePress, a separate marketing site with its own build and check scripts, an Electron desktop application, a command-line bundle, a harness plugin with its own build step, and a Cloudflare deployment that combines a Functions directory, a Worker entry point and a Wrangler configuration. Four bespoke verification scripts for that surface area is thin, and the gap is where a contributor should look first.

## One repository, several shipped surfaces and two languages of documentation

The canvas itself is built on a graph library for React rather than on hand-rolled canvas drawing, which is the concrete detail behind the infinite-canvas claim. The command-line surface is three subcommands over the local index:

```bash
npx thoughtdag why src/lib/api.ts           # conversations about this file
npx thoughtdag find "a phrase you remember" # matching conversation turns
npx thoughtdag topics                       # topics in your local index
```

Around it sit several distributable targets. The command-line bundle is produced by bundling the CLI entry point to a single file targeting Node 20, and a second bundle of the CLI's shared library feeds the desktop application, so the desktop app and the CLI genuinely share code rather than duplicating it. A harness plugin is built by its own script, and the local server is a plain node entry point. Configuration for exposing history tools to an agent is committed as an example file rather than assumed, and a registry manifest sits alongside it. Documentation is duplicated into Chinese, for both the readme and the contributing guide, and deployment instructions are their own top-level document rather than a section.

## Providers register themselves the moment a key appears

The configuration template is the most useful file in the repository for understanding the design, because it explains the wiring in one paragraph. At least one key is required, and every provider registers automatically when its key is present, with no code changes and no configuration files, after which you restart the local server. Model providers are wired through one SDK with separate adapters for several, plus a catch-all adapter for OpenAI-compatible endpoints, so adding a provider is a matter of the key rather than the configuration. The template also splits capability from provider: image understanding and the reader's per-page recognition need a vision-capable model, and a free-tier model qualifies while flagship vision models read scientific figures noticeably better and are picked automatically when present. A search-quality switch is offered separately, with a documented price multiplier for the better index.

## Search falls back to a keyless tier attributed to your address

Web search has a fallback that is worth reading carefully. When no model-provider key is set, search runs keyless on an anonymous per-IP tier, and a free signup key lifts the daily quota. The practical effect is that a user who has configured nothing may still be sending queries out, identified by network address rather than by an account. That is a reasonable default for a trial and a real consideration for anyone whose queries carry confidential project names. The filtering side is more opinionated in a good way: document-farm and question-and-answer-farm domains are filtered out of results by default, with an environment variable for adding more. For a tool whose purpose is assembling research context, quietly dropping low-quality sources at the retrieval stage is a defensible choice that a reader would otherwise have to do by hand.

## Two minimum versions are given for the same host application

The harness integration section states its requirement twice, a few sentences apart, and the two statements disagree. For the desktop application it says open the plugin manager in version 0.2.0-rc.2 or later, search for the plugin, install it and restart. Then, in the same paragraph describing what the plugin bundles, it says the integration requires an earlier release candidate, 0.1.2-rc.1 or later, as well as a Node version floor. Both cannot be the minimum. The section also documents a genuinely non-obvious packaging gotcha: a release published within the last twenty-four hours has to be named with an explicit version, because the package manager holds such versions back by default. That is the kind of detail that costs an afternoon when you hit it, and having written it down is worth something on its own.

## The manifest says one version and the tags say another, three times a day

Three releases were published on the same date, roughly three hours apart, in a patch sequence. The root manifest, which is private, declares a version two series lower than any of them, so the number you would find by reading the manifest is not the number you installed. That is common in a repository that tags releases per artefact rather than per workspace, and it is not a defect, but it does mean the tags are the only version signal that matters. The comparison table that positions the tool against linear chat, mind maps, branching chat canvases and agent workflow tools is cut off partway through its fifth row, which is the row for retrieval, so the category this tool most directly overlaps is the one that is missing from view. Both the readme and the contributing guide exist in a second language, and the response is to follow a single social account for release announcements.

## Conclusion

This suits someone whose useful context is scattered across old conversations and who wants to assemble it deliberately rather than let a retriever choose. Adopt it knowing that wires are only one of two context sources, since recall can add material alongside them, and read the recall panel before sending rather than after. There is no unified test command, so if you contribute, budget for verifying each surface separately, and treat the selection timings as a claim about a pipeline stage rather than about end-to-end speed.

## FAQ

### What does ThoughtDAG do with a conversation?

Each exchange becomes a node on an infinite canvas, and the connections between nodes determine which paths enter the next question. You can select text in an answer to start a side branch, disconnect a branch without deleting it, condense a path into a shorter copy while keeping the original, and weave selected highlights into cited prose that can be exported as Markdown. Zooming out changes the view rather than the context.

### How do I search past conversations with ThoughtDAG?

Through the command line, with a subcommand that finds conversations about a given file path, one that matches a remembered phrase to specific turns, and one that lists topics in the local index. For regular use it installs globally, and a setup command exposes read-only history tools to your agent so relevant turns can be retrieved instead of replaying an entire session.

### What are the latency numbers behind the recall feature?

A median selection latency of 391 milliseconds for the decision layer against 24,813 for a general model adapter, from six runs per engine over the same fourteen synthetic excerpts. The documentation states these are different inference paths and not a controlled ranking of model speed, and that retrieval and answer generation are excluded, so the figures describe one pipeline stage rather than end-to-end speed or accuracy.

### Which model providers does ThoughtDAG support?

Several, wired through one SDK with adapters for named providers plus a catch-all for OpenAI-compatible endpoints. Providers register automatically when their key is present in the environment file, with no code changes and no configuration files, after which you restart the local server. At least one key is required, and image features need a vision-capable model, which a free-tier model satisfies.

### Can ThoughtDAG read other agents' conversations?

It can index and display local sessions from several supported agents, and those source sessions remain read-only. A session view lets you open one as a graph, choose where to branch or continue, and use a history index to find related discussions from other sessions. Recall can then add material from those sessions into a request, and the context panel lets you inspect or exclude items before continuing.

## Sources

- [chenxiachan/thoughtdag on GitHub](https://github.com/chenxiachan/thoughtdag)
- [License: MIT](https://github.com/chenxiachan/thoughtdag/blob/main/LICENSE)
- [Project website](https://chenxiachan.github.io/thoughtdag/)
- [README](https://github.com/chenxiachan/thoughtdag/blob/main/README.md)
- [Releases](https://github.com/chenxiachan/thoughtdag/releases)

---

Hysen Labs editorial analysis, written from the project's own repository and release notes. Cite the canonical page: https://hysenlabs.com/projects/chenxiachan-thoughtdag
