JetBrains 推出 ThinkRail:专为编码 Agent 打造的轻量自适应开源 IDE
英文标题:📦 JetBrains/thinkrail
JetBrains 孵化开源项目 ThinkRail 是一款专为 AI 编码 Agent 设计的轻量级 IDE,围绕开源编码 Agent「pi」构建并提供独立的 Git Worktree 隔离工作区。它通过维护活文档(Living Specs)图谱建立持久的项目上下文知识,支持多会话流式交互、Monaco 编辑器、可视化 UI 比对以及 MCP 协议扩展。ThinkRail 同时提供原生桌面客户端与浏览器 CLI 两种运行形态,支持使用 JetBrains AI 或开发者自有的大模型凭据。该项目展示了 IDE 从单纯的辅助编码环境向以 Agent 为核心、具备自主演进能力工作台的演进趋势。
26.0 KB
25.4 KB
33.0 KB
24.7 KB
55.0 KB
61.4 KB
29.0 KB
1.8 KB
487.7 KB
485.1 KB
570.5 KB
567.5 KB
中文
ThinkRail 是一款 Agent 驱动型 IDE,随着你的每一次使用而不断进化——如今它通过活文档(living specs)理解你的项目,未来更将根据你的需求自主构建所需功能能力。
我们围绕 pi 编码 Agent 构建了丰富的交互界面,将各项任务隔离到独立的工作区中,并通过活文档与可复用技能赋予 Agent 持久的项目上下文知识。下一步,我们将加入全面的扩展支持,使 ThinkRail 能够根据你的实际工作习惯自主创建所需的工具。
官网: thinkrail.ai · 博客: thinkrail.ai/blog · Discord: thinkrail.ai/discord
⭐ 如果你觉得 ThinkRail 对你有帮助,请为它点亮 Star——这能让更多开发者发现它。

一个 pi 会话及其执行的变更,范围限定在独立的 git-worktree 工作区中。
- 隔离工作区(Isolated workspaces)。 可以将任意 Git 仓库作为项目打开,并通过
git worktree从中划分出工作区,每个工作区拥有独立的分支与工作目录。Agent 能够并行工作而不影响你正在检出的代码;你只需合并符合预期的分支,删除其余分支即可。你还可以挂载已有的 worktree,或直接在项目根目录下工作。已完成或处于休眠状态的工作区会自动归档至每个项目的归档架(Settled shelf)——例如在关联的 PR 合并或关闭时,或闲置一周后——一旦你再次进入其中操作,它会立刻恢复。顶部状态栏会展示当前分支相对于origin及其 Pull Request 的状态,并支持一键执行下一步操作:发布、推送,或基于计划、提交记录、PR 模板或 Agent 生成的草稿直接发起 PR。GitHub PR 创建完成后,界面会展示 CI 检查与评审结果,并允许你将其标记为就绪状态、将失败的 CI 检查或发生偏离的分支交由 Agent 处理、使用仓库最近使用的合并方式进行合并、重新打开 PR,或删除远程分支。 - 围绕 Agent 构建的真正 IDE。 提供支持分屏的 Monaco 编辑器标签页工作台、带有实时 Git 变更标记与 Changed 变更视图的文件树、终端以及文档——所有内容均绑定在当前激活的工作区作用域内。你可以在文件与 Diff 上留下锚定评审评论,并作为结构化上下文发送至对话,或者直接在你本地已安装的 IDE 中打开对应的 worktree。
- 与引擎思考同频的流式对话。 每个工作区支持并发开启多个
pi会话,每个会话均可配置独立模型并带有实时的 Token 与成本计费展示。支持在运行时动态引导转向或排队后续指令、分派任务至子 Agent(subagents),以及共同协作维护一个共享计划(由 Agent 更新,支持用户自由编辑)——计划中每个已完成的步骤都可以单独提交与评审。 - 以 Specs 活文档作为真实依据。 一组相互链接的
SPEC.md文件直接存放在代码旁;Agent 通过专用的spec_*工具读取、检索与维护这套规范图谱,确保开发意图能够跨会话持久留存。只读的 Specs 工具可在工作台中将该图谱渲染为树状视图。 - 技能与工作流(Skills and workflows)。 原生直接读取你在其他编码 Agent 中使用的通用 Agent Skills,并内置引导工作流,涵盖项目初始化、设计头脑风暴,以及 Pull Request 交付——可通过你本地的
ghCLI 自动推送分支并创建或更新 GitHub PR。 - 超越 Shell 的专有 Agent 工具。 支持网络检索;当 Agent 遇到歧义时会在对话中主动向你发起结构化的单选/多选题,而非胡乱猜测;在对话内直接渲染内联图表、方案对比以及文件预览——当 Agent 提出 UI 修改建议时,会展示可直接如同 Diff 一样发表评论的前后效果对比模型。在「Settings → Extensions」中列出了 Agent 获取的所有 ThinkRail 扩展,并允许你按需关闭单项。其中的提问(questions)与可视化(visualize)工具也已作为独立的
pinpm 包发布:提问工具为pi install npm:@thinkrail/pi-ask-user-question(@thinkrail/pi-ask-user-question),图表与预览工具为pi install npm:@thinkrail/pi-visualize(@thinkrail/pi-visualize)——这意味着终端中的原生pi也能直接使用这套工具。 - MCP 服务器支持。 可直接连接
pi的mcp.json中配置的 MCP 服务器(也可在 Settings 中添加或选择预设):当服务器执行未标记为只读的调用时,ThinkRail 会在对话中向你确认(或者针对你在项目中信任的工具设置为始终允许);仓库内定义的 MCP 服务器在获得你批准前将保持禁用;支持在 Settings 中完成 OAuth 服务器登录;并在每个会话中并列展示当前会话使用的服务器、后台命令与子 Agent。 - 自有服务商,自有凭据。 支持使用 JetBrains AI 账号登录,或通过
pi原生认证机制连接任意模型供应商。ThinkRail 本身不设立独立账号体系。 - 复用已有 pi 配置。 ThinkRail 会自动读取你现有的
pi配置(~/.pi/agent)。如需使用其他配置(例如个人的~/.pi/agent-personal),或向 Agent、终端及 MCP 服务器传递额外的环境变量,可在「Settings → Environment」中设置,配置将在下次启动时生效。启动时直接传入的环境变量(如PI_CODING_AGENT_DIR=… thinkrail)优先级最高。 - 桌面客户端或浏览器运行。 提供原生桌面应用程序,亦可通过
thinkrailCLI 命令在浏览器中打开完全一致的应用界面。两者均内嵌相同的引擎宿主;应用状态数据统一保存在~/.thinkrail路径下。 - 多语言支持。 在「Settings → Language」中可跟随系统语言或手动选择;已内置英文、日文、简体中文与西班牙语。若要添加 ThinkRail 尚未内置的语言,只需将翻译好的
en.json放置到~/.thinkrail/locales目录下——保存后即刻生效。Agent 的回复内容与工具输出将保留其生成的原始内容。 - 主题定制。 在「Settings → Appearance」中内置了深色(dark)、浅色(light)、极简(minimal)与高对比度(high-contrast)主题。你也可以通过复制内置的
*.theme.json、修改其 ID 与配色方案,并保存至~/.thinkrail/themes目录下创建自定义主题。

以树状结构呈现的项目规范图谱(spec graph),右侧同时渲染规范文档正文。
ThinkRail 提供两种互为补充的分发形式:原生桌面安装包与自包含的 thinkrail CLI。两者发布时均在 Releases 页面 附带了对应的 SHA256SUMS 校验和。
下载适合你平台的 thinkrail-desktop-* 资源:
-
macOS 14+(Apple Silicon 或 Intel) — 打开对应架构的 DMG 文件:
thinkrail-desktop-darwin-arm64.dmg或thinkrail-desktop-darwin-x64.dmg。 -
Windows x64 — 解压完整的安装 ZIP 包,并在其释放的依赖文件旁就地运行安装可执行程序。
-
Linux x64 / ARM64 — 解压安装 tar 包并运行
installer。桌面版本需要 glibc 2.38+ 并依赖 GTK 3、WebKitGTK 4.1、Ayatana AppIndicator 3 以及 librsvg 2(需 Ubuntu 24.04 或更新版本):sudo apt install libgtk-3-0 libwebkit2gtk-4.1-0 libayatana-appindicator3-1 librsvg2-2
打包好的 Stable 与 Nightly 桌面版本会在后台检查更新,并在 Settings → Updates 中提示:Download → Preparing update → Install & Restart。在点击 Install & Restart 之前,不会应用任何更新。确认后,ThinkRail 将展示安装进度与日志,关闭并以新版本重新打开。重启后,系统会提示更新是否成功;如果失败,会解释原因并提供重试选项。自动更新器仅在安装包携带合法的 HTTPS 源凭据时生效;早于该凭据机制的历史安装版本需要先手动安装一次更新。
安装脚本会自动下载适配当前系统的二进制文件,校验 SHA-256 签名,并将 thinkrail 写入系统的 PATH 环境变量。
macOS / Linux(亦支持 Windows 下的 Git Bash):
curl -fsSL https://raw.githubusercontent.com/JetBrains/thinkrail/main/install.sh | bash
Windows — 在 cmd 与 PowerShell 下均可直接执行相同命令:
powershell -c "irm https://raw.githubusercontent.com/JetBrains/thinkrail/main/install.ps1 | iex"
随后运行 thinkrail 即可,也可在命令后附带某个 Git 仓库路径以作为项目打开:
thinkrail 依赖系统 PATH 中包含 git,且需要配置模型服务商凭据——可在应用内直接登录 JetBrains AI,或使用你自有的服务商凭据。首次启动时会引导你连接服务商并选择项目;点击 Start a new project 可初始化一个空的 Git 仓库(默认位于 ~/thinkrail 目录下),因此你无需提前准备仓库。点击 Add project → Clone repository… 可将 Git 仓库克隆到运行 ThinkRail 的计算机新目录中并作为项目打开。你可以指定父级目录和文件夹名称、按需限制克隆深度,或随时取消正在进行的克隆操作。GitHub 及其他 Git 托管平台可直接复用宿主机现有的 Git 凭据与 SSH 密钥;目标目录若已存在则绝不会被覆盖。执行 thinkrail --help 可查看全部参数;thinkrail --version 可输出构建版本信息。
Nightly 版本、版本锁定、更新与卸载
安装脚本支持 --channel stable|nightly 以及 --version 参数;指定锁定的版本必须属于所选的分发通道:
curl -fsSL https://raw.githubusercontent.com/JetBrains/thinkrail/main/install.sh | bash -s -- --channel nightly
curl -fsSL https://raw.githubusercontent.com/JetBrains/thinkrail/main/install.sh | bash -s -- --channel stable --version 0.1.2
curl -fsSL https://raw.githubusercontent.com/JetBrains/thinkrail/main/install.sh | bash -s -- --channel nightly --version 0.2.0-nightly.10
在 Windows 上,这些配置项通过环境变量传递(THINKRAIL_CHANNEL、THINKRAIL_VERSION、THINKRAIL_PREFIX、THINKRAIL_NO_MODIFY_PATH):
$env:THINKRAIL_CHANNEL='nightly'; irm https://raw.githubusercontent.com/JetBrains/thinkrail/main/install.ps1 | iex # PowerShell
set "THINKRAIL_CHANNEL=stable" && set "THINKRAIL_VERSION=0.1.2" && powershell -c "irm https://raw.githubusercontent.com/JetBrains/thinkrail/main/install.ps1 | iex" # cmd
已安装的 Stable 与 Nightly CLI 宿主会定期在 Settings → Updates 中提示 Run Update。它会在后台执行宿主机上的 thinkrail update 命令——即使用户界面是在另一台机器的浏览器中打开也是如此——更新成功后会提示你手动重启宿主程序。你也可以在任意平台上直接执行 thinkrail update:它会重新运行对应通道的安装程序并替换 <prefix>/bin/thinkrail[.exe];只有需要强制覆盖时才需要传入 --channel 或 --version。
执行 thinkrail uninstall 会移除可执行文件、安装器添加的 PATH 项以及安装元数据,并询问是否删除 ~/.thinkrail 应用状态数据(默认保留——添加 --remove-data 可彻底删除,-y 跳过交互提示)。
倾向于手动安装?可在 Releases 页面下载对应的二进制文件与 SHA256SUMS 并校验哈希值。为确保自动更新能够正常工作,请将其重命名为 thinkrail(Windows 下为 thinkrail.exe)并放置在 <prefix>/bin/thinkrail[.exe] 目录下;若保留发布时的原始文件名或放置在其他路径下,后续更新必须手动替换或重新通过脚本安装。
| 平台 | 桌面端 | CLI |
|---|---|---|
| macOS Apple Silicon / Intel | DMG | 已签名二进制文件 |
| Windows x64 | 已签名的安装程序及应用二进制文件 | 已签名的 .exe |
| Linux x64 / ARM64 | 未签名的安装 tar 包 | 未签名 |
JetBrains 对 Windows CLI、桌面安装程序以及桌面应用安装的所有可执行文件与 DLL 进行了签名。macOS CLI 已签名但尚未进行公证(notarized)。已签名且完成公证的桌面版 DMG 需要 JetBrains 统一的服务流水线协同构建;更早发布的 DMG 和本地构建的安装包可能仍未签名,会被 Gatekeeper 拦截。Linux 构建构件未经签名。
ThinkRail 应用会收集绑有随机安装 ID 的基础使用事件——包括启动、创建会话、发送消息、连接服务商等。使用分析数据绝不包含提示词、代码、文件、凭据或账户身份信息。错误报告同样默认发送并与同一安装 ID 关联,以便我们修复崩溃问题,内容涵盖错误类型、错误代码以及在 ThinkRail 自身代码中发生的位置,绝不包含错误详细信息文本、文件路径、名称、URL 或来自你的项目与扩展中的任何内容。附加产品数据……
English / 原文
ThinkRail is the agentic IDE that gets better every time you use it — learning your project through living specs today, and building its own capabilities tomorrow.
We built a rich interface around the pi coding agent, isolated work into separate workspaces, and gave the agent durable project knowledge through living specs and reusable skills. Next, we're adding full extension support, so ThinkRail can create the tools it needs based on how you actually work.
Website: thinkrail.ai · Blog: thinkrail.ai/blog · Discord: thinkrail.ai/discord
⭐ If you find ThinkRail useful, give it a star — it helps others discover it.

Api session and the change it made, scoped to an isolated git-worktree workspace.
- Isolated workspaces. Open any git repo as a project and cut workspaces from it as
git worktrees, each with its own branch and working directory. Agents work in parallel without touching your checkout; merge the good branch, delete the rest. You can also attach existing worktrees or explicitly work in the project folder itself. Finished and dormant workspaces settle onto a per-project shelf on their own — when their pull request merges or closes, or after a quiet week — and come back the moment you work in them. The topbar shows where the active branch stands againstoriginand its pull request, with the next step one click away: publish, push, or open a PR described from the plan, the commits, your PR template, or an agent-written draft. Once a GitHub PR is open it shows the CI checks and review decision, and lets you mark it ready, hand failing checks or a diverged branch to the agent, merge it with the repository's last-used method, reopen it, or delete the remote branch. - A real IDE around the agent. A splittable workbench of Monaco editor tabs, a Files tree with live git change marks and a Changed view, terminals, and documents — all scoped to the active workspace. Leave anchored review comments on files and diffs and send them to a chat as structured context, or open the worktree in your installed IDE.
- Chats that stream like the engine thinks. Several concurrent
pisessions per workspace, each with its own model and live token and cost readout. Steer a running turn or queue a follow-up, delegate to subagents, and work a shared plan the agent updates and you edit — each completed step can be committed and reviewed on its own. - Specs as ground truth. A connected graph of
SPEC.mdfiles lives beside the code; the agent reads, searches, and maintains it through dedicatedspec_*tools, so intent survives the session. The read-only Specs tool renders the graph as a tree in the workbench. - Skills and workflows. Portable Agent Skills you already keep for other coding agents are read in place, and bundled workflows guide project setup, design brainstorming, and shipping a pull request — pushing the workspace branch and opening or updating its GitHub PR through your own
gh. - Agent tools beyond the shell. Web research, structured multiple-choice questions the agent asks you in the chat instead of guessing, and inline diagrams, option comparisons and file previews rendered right in the chat — when the agent proposes a UI change it shows a before/after mockup you can comment on like a diff. Settings → Extensions lists the ThinkRail extensions the agent gets and lets you switch each one off. The questions and visualize tools are also published as plain
pipackages, one each —pi install npm:@thinkrail/pi-ask-user-questionfor the questions (@thinkrail/pi-ask-user-question) andpi install npm:@thinkrail/pi-visualizefor the diagrams and previews (@thinkrail/pi-visualize) — so a vanillapiin the terminal gets the same tools. - MCP servers. Connect the MCP servers in your
pimcp.json(or add them, and a few presets, from Settings): ThinkRail asks in the chat before calls the server does not mark read-only (or always allows the tools you trust in a project), keeps servers a repository defines off until you approve them, signs you in to OAuth servers from Settings, and shows each chat's servers next to its background commands and subagents. - Your providers, your credentials. Sign in with JetBrains AI or connect any provider through
pi's own auth. ThinkRail has no accounts of its own. - Your pi setup. ThinkRail reads your existing
piconfiguration (~/.pi/agent). To use another one — say a personal~/.pi/agent-personal— or to pass extra environment variables to the agent, terminals and MCP servers, set them in Settings → Environment; they apply on the next start. A variable you set when launching (PI_CODING_AGENT_DIR=… thinkrail) still wins. - Desktop app or browser. A native desktop app, or the
thinkrailCLI that opens the same app in your browser. Both embed the same engine host; app state lives under~/.thinkrail. - Your language. Settings → Language follows your system language or a language you pick; English, Japanese, Simplified Chinese, and Spanish are built in. Add a language ThinkRail doesn't ship yet by dropping a translated
en.jsoninto~/.thinkrail/locales— it applies as you save. Agent replies and tool output stay as the agent wrote them. - Your themes. Settings → Appearance ships dark, light, minimal and high-contrast themes. Make your own by copying a bundled
*.theme.json, changing its id and colors, and saving it to~/.thinkrail/themes.

The project's spec graph as a tree, with the spec itself rendered alongside.
ThinkRail ships in two additive forms: a native desktop installer and the self-contained thinkrail CLI. Both are published with SHA256SUMS on the releases page.
Download the thinkrail-desktop-* asset for your platform:
-
macOS 14+ (Apple Silicon or Intel) — open the DMG for your architecture:
thinkrail-desktop-darwin-arm64.dmgorthinkrail-desktop-darwin-x64.dmg. -
Windows x64 — extract the complete setup ZIP, then run its setup executable in place, next to its payload.
-
Linux x64 / ARM64 — extract the setup tarball and run
installer. Desktop builds need glibc 2.38+ with GTK 3, WebKitGTK 4.1, Ayatana AppIndicator 3, and librsvg 2 — Ubuntu 24.04 or newer:sudo apt install libgtk-3-0 libwebkit2gtk-4.1-0 libayatana-appindicator3-1 librsvg2-2
Packaged stable and nightly desktop builds check for updates in the background and offer them in Settings → Updates : Download → Preparing update → Install & Restart. Nothing is applied until you choose Install & Restart. ThinkRail then shows the installation's progress and log, closes, and reopens on the new version. After the restart it tells you whether the update installed. If it didn't, it explains why and offers to retry. The updater appears only when the package carries a valid HTTPS feed identity; installations that predate that identity need one manual installation first.
The installer downloads the right binary, verifies its SHA-256 checksum, and puts thinkrail on your PATH.
macOS / Linux (also Windows under Git Bash):
curl -fsSL https://raw.githubusercontent.com/JetBrains/thinkrail/main/install.sh | bash
Windows — the same command works from cmd and PowerShell:
powershell -c "irm https://raw.githubusercontent.com/JetBrains/thinkrail/main/install.ps1 | iex"
Then run thinkrail, optionally with a git repo to open as a project:
thinkrail needs git on your PATH and a model provider — sign in with JetBrains AI from the app or use your own provider credentials. The first launch walks you through connecting a provider and picking a project; Start a new project creates an empty git repository (under ~/thinkrail by default), so you don't need one ready. Add project → Clone repository… clones a Git URL into a new folder on the computer running ThinkRail and opens it as a project. Choose the parent folder and folder name, optionally limit the history depth, or cancel an in-progress clone. GitHub and other Git hosts work with the host's existing Git credentials and SSH keys; existing destination folders are never overwritten. thinkrail --help lists the flags; thinkrail --version prints the build.
Nightly builds, pinned versions, updates, and uninstall
The installer takes --channel stable|nightly and --version; a pinned version must belong to the selected channel:
curl -fsSL https://raw.githubusercontent.com/JetBrains/thinkrail/main/install.sh | bash -s -- --channel nightly
curl -fsSL https://raw.githubusercontent.com/JetBrains/thinkrail/main/install.sh | bash -s -- --channel stable --version 0.1.2
curl -fsSL https://raw.githubusercontent.com/JetBrains/thinkrail/main/install.sh | bash -s -- --channel nightly --version 0.2.0-nightly.10
On Windows the options are environment variables (THINKRAIL_CHANNEL, THINKRAIL_VERSION, THINKRAIL_PREFIX, THINKRAIL_NO_MODIFY_PATH):
$env:THINKRAIL_CHANNEL='nightly'; irm https://raw.githubusercontent.com/JetBrains/thinkrail/main/install.ps1 | iex # PowerShell
set "THINKRAIL_CHANNEL=stable" && set "THINKRAIL_VERSION=0.1.2" && powershell -c "irm https://raw.githubusercontent.com/JetBrains/thinkrail/main/install.ps1 | iex" # cmd
Installed stable and nightly CLI hosts periodically offer Run Update in Settings → Updates. It runs the host machine's thinkrail update in the background — also when the UI is open in a browser on another machine — and a successful update asks you to restart the host manually. You can run thinkrail update directly on any platform: it re-runs the installer for the installed channel and replaces <prefix>/bin/thinkrail[.exe]; pass --channel or --version only for an explicit override.
thinkrail uninstall removes the executable, the PATH entry the installer added, and the install metadata, and asks whether to delete your ~/.thinkrail app state (kept by default — --remove-data deletes it, -y skips the questions).
Prefer a manual install? Download a binary and SHA256SUMS from the releases page and verify the checksum. For self-update to work, rename it to thinkrail (thinkrail.exe on Windows) and place it at <prefix>/bin/thinkrail[.exe]; a binary kept under its release filename or elsewhere must be replaced manually or reinstalled with the script.
| Platform | Desktop | CLI |
|---|---|---|
| macOS Apple Silicon / Intel | DMG | signed binary |
| Windows x64 | signed setup executable and app binaries | signed .exe |
| Linux x64 / ARM64 | setup tarball, unsigned | unsigned |
JetBrains signs the Windows CLI, the desktop setup executable, and every executable and DLL the desktop app installs. The macOS CLI is signed but not yet notarized. Signed and notarized desktop DMGs require the coordinated JetBrains service pipeline; older published DMGs and locally built packages may still be unsigned and blocked by Gatekeeper. Linux artifacts are unsigned.
ThinkRail apps collect basic usage events — launches, chat creation, message sends, provider connections — tied to a random installation ID. Usage analytics never include prompts, code, files, credentials, or account identity. Error reports are also always sent, tied to the same installation ID, so we can fix crashes: the error type and code and where in ThinkRail's own code it happened. They never include error messages, file paths, names, URLs, or anything from your projects or extensions. Additional product usage and how you found ThinkRail are shared only while Share additional usage data is on; the switch is offered as a step of first-run setup (or right after you skip it) and lives in Settings → Privacy. When launching from the command line, thinkrail --no-analytics (or THINKRAIL_NO_ANALYTICS=1) turns additional sharing off for that run. With additional sharing on, a packaged build may open the ThinkRail blog in your browser once to link your installation to the website visit that brought you here — only where you accepted marketing cookies on the website or no consent is required — and that link expires after 30 days.
Feedback surveys are separate from usage analytics. ThinkRail may invite you to a short survey, and you can also open it from Settings → Feedback. Your answers, including anything you type, are sent to the ThinkRail team only when you press Send , whatever your analytics settings, and are tied to the same random installation ID — not to your name or account. Please don't include secrets, code, or personal data; to have your answers deleted, email info@thinkrail.ai.
The ThinkRail apps and the ThinkRail website (thinkrail.ai) use PostHog Inc. services for analytics. The website also uses PostHog Surveys to collect feedback after a desktop download and, only if you choose to enter one, your email address, which is used to ask for further feedback and to send product updates. PostHog's privacy policy is at posthog.com/privacy.
ThinkRail is a thin host that runs pi in-process and bridges it to a rich web UI. pi owns models, skills, compaction, cost, and session state; the app owns the workspace, the editor, and the wire — it never assembles prompts behind your back. Three rings:
- Engine host —
packages/server(+packages/shared): aBun.serveHTTP+WS host with one in-processpisession per chat, launched byapps/cliorapps/desktop. - The wire —
packages/contracts: the typed, versioned protocol between host and UI. - UI client —
apps/web: React 19 + Zustand + Tailwind v4, shipped independently; it dials a host over the wire and depends on the contracts only.
goal-and-requirements.md and architecture.md are the canonical product and design specs. ThinkRail is developed spec-first: a SPEC.md sits beside every module, and a change that moves a boundary, contract, or decision updates the spec in the same change.
You need Bun 1.4.4 (the pinned package manager and runtime), Node.js ≥ 22.19 (required by the in-process pi engine), and an authenticated pi provider for agent work.
git clone https://github.com/JetBrains/thinkrail.git
cd thinkrail
bun install
bun run dev # host + web client together; Ctrl+C stops both
bun run --filter @thinkrail/cli dev # browser launcher
bun run build:binary # standalone CLI artifact
bun run desktop:dev # package and open the Electrobun app
bun run desktop:build # package without opening it
CONTRIBUTING.md covers the checks, the end-to-end suites, desktop packaging, and the repository layout.
Contributions are welcome — see CONTRIBUTING.md. This project and community are governed by the Code of Conduct.
Community
Join us on Discord to ask questions, share what you're building, and talk to the team. Bugs and feature requests go to GitHub issues.
Licensed under the Apache License 2.0.