<!-- README.md -->
JetBrains InnovationHub Apache-2.0 open source
The agentic IDE that gets better every time you use it.
Open a repo as a project. Cut isolated git-worktree workspaces. Pair with a real agent across Monaco tabs, terminals, and diffs β while your project's intent lives in a spec graph the agent actually reads.
ThinkRail runs on macOS, Windows, and Linux.
macOS
Browser UI via command line #
Install the local launcher; run thinkrail to open the browser UI.
curl -fsSL https://raw.githubusercontent.com/JetBrains/thinkrail/main/install.sh | bash Windows
Browser UI via command line #
Install the local launcher; run thinkrail to open the browser UI.
PowerShell
irm https://raw.githubusercontent.com/JetBrains/thinkrail/main/install.ps1 | iex Command Prompt (cmd)
powershell -c "irm https://raw.githubusercontent.com/JetBrains/thinkrail/main/install.ps1 | iex" WSL
curl -fsSL https://raw.githubusercontent.com/JetBrains/thinkrail/main/install.sh | bash Linux
Browser UI via command line #
Install the local launcher; run thinkrail to open the browser UI.
curl -fsSL https://raw.githubusercontent.com/JetBrains/thinkrail/main/install.sh | bash <!-- WHY ThinkRail -->
Why ThinkRail #
Agents deserve worktrees, not your working tree.
Every workspace is a real git worktree β its own branch, its own
cwd. Run several agents in parallel; each one's mess stays on its branch, and
main stays clean until you say otherwise.
Specs are the ground truth.
ThinkRail is built spec-first, and so are your projects: a connected graph of spec files lives beside the code, and the agent reads, searches, and maintains it with dedicated tools. Intent survives the session.
A thin host, a real engine.
The pi coding agent
runs in-process and owns models, skills, compaction, and cost. ThinkRail owns
the workspace, the editor, and the wire β it never assembles prompts behind
your back.
<!-- FEATURES / worktrees -->
Projects β workspaces #
A project is any local git repo. A workspace is a git worktree cut from
it β created in one click, listed in the rail, disposable without ceremony.
~/code/my-repo β project
ββ ~/.thinkrail/worktrees/
ββ workspace-1 β feature/auth agent A building
ββ workspace-2 β fix/flaky-test agent B fixing
ββ workspace-3 β spike/ideas you, exploring
- Own branch + cwd per workspace β files, diffs, terminals, and chats all scope to it.
- Switch workspaces instantly; nothing reloads, nothing leaks across.
- Merge the good one, delete the rest. Your repo never noticed the chaos.
<!-- FEATURES / editor -->
A real IDE around the agent #
Watch the agent work β or work beside it β without leaving the page.
Monaco editor tabs
The VS Code editor engine: syntax everywhere, rendered markdown with a source toggle, file tabs per workspace.
Files tree
The active worktree at a glance β like the rail on the right of this very page.
Changes
A live git diff of the workspace branch, so you review the agent's work as it lands.
Terminals
Real PTYs scoped to the worktree β run the tests yourself while the agent keeps typing.
<!-- FEATURES / agent-chat -->
Chats that stream like the engine thinks #
This transcript is a real pi session, captured in ThinkRail while it
worked on its own repo:
goal-and-requirements.md Β· architecture.md
ThinkRail is the agentic IDE built around the pi coding agent β
a thin host that runs pi in-process and bridges it to a rich UI,
while pi owns models, skills, compaction, cost, and session state.
The three rings:
- Engine host (
packages/server) βcreateServer()runs an HTTP+WS host plus anAgentSessionManager: one in-processpisession per tab. - The wire (
packages/contracts) β the typed, versioned protocol between host and UI. Types only. - UI client (
apps/web) β mobile-first React that ships independently and dials any host over the wire.
- Several sessions per workspace, streaming concurrently.
- Pick the model per session; tokens and cost tick live in the header.
- Steer a running turn or queue a follow-up β no waiting for the agent to finish.
- Interactive tools: the agent can ask structured questions back, right in the chat.
<!-- FEATURES / specs -->
Specs are first-class #
Every module carries a SPEC.md with frontmatter linking it into a graph β
goal, architecture, modules, tasks. The bundled pi-spec-graph extension
gives the agent spec_* tools to search, navigate, and maintain it, and
the Specs tab renders the live graph of your worktree:
main spec
arch
module
submodule
module
---
id: module-server
type: module-design
status: active
parent: architecture
---
Plain markdown, plain frontmatter, versioned with the code β reading the specs is enough to understand an area and formulate the next task. The agent keeps them honest as it builds.
<!-- INSTALL.md -->
Install #
Choose your platform and start working.
macOS Apple Silicon
Windows Windows x64
Linux Ubuntu 24.04+
Linux: extract the archive, run ./installer, and check the native library requirements.
Browser UI via command line #
Install the local launcher, then run thinkrail to open the browser UI.
curl -fsSL https://raw.githubusercontent.com/JetBrains/thinkrail/main/install.sh | bash irm https://raw.githubusercontent.com/JetBrains/thinkrail/main/install.ps1 | iex powershell -c "irm https://raw.githubusercontent.com/JetBrains/thinkrail/main/install.ps1 | iex" Requires git and an authenticated pi provider. See all releases and advanced CLI options.