Branch your curiosity into a tree of threads.
A local-first, open-source desktop app for thinking with AI — on an infinite, branching canvas. Bring your own key.
Website · Download · Architecture · Development · Contributing
Instead of one long scrolling chat, Warren lets your exploration grow as a tree. A canvas is one session; a thread is one linear conversation (a box on the canvas); branch a child thread off any answer to dig deeper - without losing your place. Every question sees the full path back to the root plus a one-line summary of every other branch, so the model stays aware of your whole canvas.
- 🌱 Branching, not scrolling — follow a thread, branch off any answer, and keep the whole shape of your thinking on one infinite canvas.
- 📄 Reader threads — paste a URL and Warren extracts the readable article (text and images) into a box; select any passage or branch off it to chat with the article as context.
- 🔒 Local-first & private — everything lives on your device in a local SQLite database. No account, no server, no telemetry, works offline.
- 🔑 Bring your own model — Warren ships with a built-in Claude Code
provider that runs the local
claudeCLI (reusing your Claude subscription), and you can add any number of custom OpenAI-compatible endpoints (a local model, OpenRouter, your own adapter). Your keys, your models, your bill. - 🪶 Tiny & native — a ~7 MB Tauri app, not a 100 MB Electron bundle.
- 📖 Open source — MIT licensed; PRs welcome.
Get the latest build for macOS, Windows, or Linux from Releases.
Builds are unsigned, so the first launch needs a nudge:
- macOS: right-click the app → Open (once).
- Windows: "More info" → Run anyway.
- Providers (top-right): if the
claudeCLI is installed, start the built-in Claude Code provider in one click - it runs a local OpenAI-compatible server that reuses your Claude subscription. Or Add provider for any custom OpenAI-compatible endpoint: a name, a base URL (e.g.https://openrouter.ai/api/v1), a model id, your API key, and optional headers. Set a default. - + New → New chat to ask a question, or New reader to paste a URL and read the extracted article on the canvas. A canvas can hold several roots.
- + on a box's right edge branches a child thread; in a reader, select text to branch a chat that has the article as context. Drag/resize boxes, Auto tidy to clean up, single-click to highlight a lineage, double-click to focus. Dismiss a thread to hide it (restore later) or delete it outright.
Data is stored on-device and persists across updates and reinstalls.
Prerequisites: Node 22+, pnpm, the Rust toolchain, and the Tauri platform prerequisites.
git clone https://github.com/rousan/warren.git
cd warren
pnpm install
pnpm dev:desktop # launch the desktop app with hot reloadMore in docs/development.md.
- Architecture — how it's built (Tauri, SQLite, the context engine, BYOK inference).
- Development — setup, scripts, project layout, common tasks.
- Release process — branching, versioning, CI.
- Contributing — how to propose changes.
Contributions are welcome — see docs/contributing.md.
In short: branch off develop, keep pnpm typecheck && pnpm lint && pnpm build
green, and open a PR against develop.
React 19 · Vite · Tailwind v4 · React Flow ·
Tauri v2 · SQLite (tauri-plugin-sql) · native HTTP
(tauri-plugin-http).
MIT © Rousan Ali