[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-103794":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":9,"htmlUrl":10,"language":11,"languages":9,"totalLinesOfCode":9,"stars":12,"forks":13,"watchers":14,"openIssues":15,"contributorsCount":9,"subscribersCount":16,"size":16,"stars1d":16,"stars7d":16,"stars30d":16,"stars90d":16,"forks30d":16,"starsTrendScore":16,"compositeScore":17,"rankGlobal":9,"rankLanguage":9,"license":9,"archived":18,"fork":18,"defaultBranch":19,"hasWiki":18,"hasPages":18,"topics":20,"createdAt":9,"pushedAt":9,"updatedAt":34,"readmeContent":35,"aiSummary":9,"trendingCount":16,"starSnapshotCount":16,"syncStatus":36,"lastSyncTime":37,"discoverSource":38},103794,"thinkrail","JetBrains\u002Fthinkrail","JetBrains","Vibe code with pi in a lightweight, real IDE that customises itself around the way you work — The Vibe You Need",null,"https:\u002F\u002Fgithub.com\u002FJetBrains\u002Fthinkrail","TypeScript",5014,259,12,188,0,56.13,false,"main",[21,22,23,24,25,26,27,28,29,30,31,32,33],"agent","agent-skills","agentic-ai","agentic-workflow","ai-coding","ai-tools","spec-driven","spec-driven-coding","spec-driven-development","vibe-coding","vibecoding","pi-agent","pi-agent-extension","2026-10-29 08:00:02","# ThinkRail\n\n[![JetBrains incubator project](https:\u002F\u002Fjb.gg\u002Fbadges\u002Fincubator-plastic.svg)](https:\u002F\u002Fconfluence.jetbrains.com\u002Fdisplay\u002FALL\u002FJetBrains+on+GitHub)\n[![GitHub stars](https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Fstars\u002FJetBrains\u002Fthinkrail?style=social)](https:\u002F\u002Fstar-history.com\u002F#JetBrains\u002Fthinkrail&Date)\n\n\n\u003Ca href=\"https:\u002F\u002Fwww.producthunt.com\u002Fproducts\u002Fthinkrail?embed=true&amp;utm_source=badge-featured&amp;utm_medium=badge&amp;utm_campaign=badge-thinkrail\" target=\"_blank\" rel=\"noopener noreferrer\">\n  \u003Cimg alt=\"ThinkRail - the agentic IDE that gets better every time you use it | Product Hunt\" width=\"250\" height=\"54\" src=\"https:\u002F\u002Fapi.producthunt.com\u002Fwidgets\u002Fembed-image\u002Fv1\u002Ffeatured.svg?post_id=1293188&amp;theme=light&amp;t=1793013338496\">\n\u003C\u002Fa>\n\n\n\nThinkRail is the agentic IDE that gets better every time you use it — learning your project through\nliving specs today, and building its own capabilities tomorrow.\n\nWe built a rich interface around the [`pi`](https:\u002F\u002Fwww.npmjs.com\u002Fpackage\u002F@earendil-works\u002Fpi-coding-agent)\ncoding agent, isolated work into separate workspaces, and gave the agent durable project knowledge\nthrough living specs and reusable skills. Next, we're adding full extension support, so ThinkRail can\ncreate the tools it needs based on how you actually work.\n\n**Website:** [thinkrail.ai](https:\u002F\u002Fthinkrail.ai\u002F) · **Blog:** [thinkrail.ai\u002Fblog](https:\u002F\u002Fthinkrail.ai\u002Fblog\u002F)\n\n⭐ If you find ThinkRail useful, give it a star — it helps others discover it.\n\n\u003Cp align=\"center\">\n \u003Ca href=\"https:\u002F\u002Fwww.star-history.com\u002Fjetbrains\u002Fthinkrail\">\n  \u003Cpicture>\u003Csource media=\"(prefers-color-scheme: dark)\" srcset=\"https:\u002F\u002Fapi.star-history.com\u002Fbadge?repo=JetBrains\u002Fthinkrail&type=rank&theme=dark\" \u002F>\u003Csource media=\"(prefers-color-scheme: light)\" srcset=\"https:\u002F\u002Fapi.star-history.com\u002Fbadge?repo=JetBrains\u002Fthinkrail&type=rank\" \u002F>\u003Cimg alt=\"Star History Rank\" src=\"https:\u002F\u002Fapi.star-history.com\u002Fbadge?repo=JetBrains\u002Fthinkrail&type=rank\" \u002F>\u003C\u002Fpicture> \u003Cpicture>\u003Csource media=\"(prefers-color-scheme: dark)\" srcset=\"https:\u002F\u002Fapi.star-history.com\u002Fbadge?repo=JetBrains\u002Fthinkrail&type=trending&theme=dark\" \u002F>\u003Csource media=\"(prefers-color-scheme: light)\" srcset=\"https:\u002F\u002Fapi.star-history.com\u002Fbadge?repo=JetBrains\u002Fthinkrail&type=trending\" \u002F>\u003Cimg alt=\"GitHub Trending Repository of the Day\" src=\"https:\u002F\u002Fapi.star-history.com\u002Fbadge?repo=JetBrains\u002Fthinkrail&type=trending\" \u002F>\u003C\u002Fpicture>\n \u003C\u002Fa>\n\u003C\u002Fp>\n\n\u003Cpicture>\n  \u003Csource media=\"(prefers-color-scheme: dark)\" srcset=\".github\u002Freadme-assets\u002Fworkbench-dark.png\">\n  \u003Cimg src=\".github\u002Freadme-assets\u002Fworkbench-light.png\" alt=\"ThinkRail workbench: the Projects pane beside the left tool rail listing worktree workspaces and their Settled shelf, a finished pi conversation with its tool steps in the center, the resulting diff beside it, and the Specs tree above the Changes list on the right with their tools on the edge rail\" width=\"900\">\n\u003C\u002Fpicture>\n\n\n*A `pi` session and the change it made, scoped to an isolated git-worktree workspace.*\n\n## What you get\n\n- **Isolated workspaces.** Open any git repo as a project and cut workspaces from it as `git worktree`s,\n  each with its own branch and working directory. Agents work in parallel without touching your\n  checkout; merge the good branch, delete the rest. You can also attach existing worktrees or explicitly\n  work in the project folder itself. Finished and dormant workspaces settle onto a per-project shelf on\n  their own — when their pull request merges or closes, or after a quiet week — and come back the moment\n  you work in them. The topbar shows where the active branch stands against `origin` and its pull request,\n  with the next step one click away: publish, push, or open a PR described from the plan, the commits,\n  your PR template, or an agent-written draft. Once a GitHub PR is open it shows the CI checks and review\n  decision, and lets you mark it ready, hand failing checks or a diverged branch to the agent, merge it\n  with the repository's last-used method, reopen it, or delete the remote branch.\n- **A real IDE around the agent.** A splittable workbench of Monaco editor tabs, a Files tree with live git\n  change marks and a Changed view, terminals, and documents — all scoped to the active workspace. Leave\n  anchored review comments on files and diffs and send them to a chat as structured context, or open the\n  worktree in your installed IDE.\n- **Chats that stream like the engine thinks.** Several concurrent `pi` sessions per workspace, each with\n  its own model and live token and cost readout. Steer a running turn or queue a follow-up, delegate to\n  subagents, and work a shared plan the agent updates and you edit — each completed step can be committed\n  and reviewed on its own.\n- **Specs as ground truth.** A connected graph of `SPEC.md` files lives beside the code; the agent reads,\n  searches, and maintains it through dedicated `spec_*` tools, so intent survives the session. The\n  read-only Specs tool renders the graph as a tree in the workbench.\n- **Skills and workflows.** Portable Agent Skills you already keep for other coding agents are read in\n  place, and bundled workflows guide project setup, design brainstorming, and shipping a pull request —\n  pushing the workspace branch and opening or updating its GitHub PR through your own `gh`.\n- **Agent tools beyond the shell.** Web research, and inline diagrams, option comparisons and file previews\n  rendered right in the chat — when the agent proposes a UI change it shows a before\u002Fafter mockup you can\n  comment on like a diff. Settings → Extensions lists the ThinkRail extensions the agent gets and lets you switch\n  each one off.\n- **MCP servers.** Connect the MCP servers in your `pi` `mcp.json` (or add them, and a few presets, from\n  Settings): ThinkRail asks in the chat before calls the server does not mark read-only (or always allows\n  the tools you trust in a project), keeps servers a repository\n  defines off until you approve them, signs you in to OAuth servers from Settings, and shows each chat's\n  servers next to its background commands and subagents.\n- **Your providers, your credentials.** Sign in with [JetBrains AI](https:\u002F\u002Fwww.jetbrains.com\u002Fai\u002F) or\n  connect any provider through `pi`'s own auth. ThinkRail has no accounts of its own.\n- **Your pi setup.** ThinkRail reads your existing `pi` configuration (`~\u002F.pi\u002Fagent`). To use another one\n  — say a personal `~\u002F.pi\u002Fagent-personal` — or to pass extra environment variables to the agent, terminals\n  and MCP servers, set them in Settings → Environment; they apply on the next start. A variable you set\n  when launching (`PI_CODING_AGENT_DIR=… thinkrail`) still wins.\n- **Desktop app or browser.** A native desktop app, or the `thinkrail` CLI that opens the same app in your\n  browser. Both embed the same engine host; app state lives under `~\u002F.thinkrail`.\n- **Your language.** Settings → Language follows your system language or a language you pick; English and\n  Simplified Chinese are built in. Add a language ThinkRail doesn't ship yet by dropping a translated\n  `en.json` into `~\u002F.thinkrail\u002Flocales` — it applies as you save. Agent replies and tool output stay as\n  the agent wrote them.\n\n\u003Cpicture>\n  \u003Csource media=\"(prefers-color-scheme: dark)\" srcset=\".github\u002Freadme-assets\u002Fspecs-dark.png\">\n  \u003Cimg src=\".github\u002Freadme-assets\u002Fspecs-light.png\" alt=\"The Specs tool, opened from the right edge rail, listing the project's spec tree while the product goal spec is rendered in the editor\" width=\"900\">\n\u003C\u002Fpicture>\n\n*The project's spec graph as a tree, with the spec itself rendered alongside.*\n\n## Install\n\nThinkRail ships in two additive forms: a native desktop installer and the self-contained `thinkrail` CLI.\nBoth are published with `SHA256SUMS` on the [releases page](https:\u002F\u002Fgithub.com\u002FJetBrains\u002Fthinkrail\u002Freleases).\n\n### Desktop\n\nDownload the `thinkrail-desktop-*` asset for your platform:\n\n- **macOS 14+ (Apple Silicon or Intel)** — open the DMG for your architecture:\n  `thinkrail-desktop-darwin-arm64.dmg` or `thinkrail-desktop-darwin-x64.dmg`.\n- **Windows x64** — extract the complete setup ZIP, then run its setup executable in place, next to its\n  payload.\n- **Linux x64 \u002F ARM64** — extract the setup tarball and run `installer`. Desktop builds need glibc 2.38+\n  with GTK 3, WebKitGTK 4.1, Ayatana AppIndicator 3, and librsvg 2 — Ubuntu 24.04 or newer:\n\n  ```bash\n  sudo apt install libgtk-3-0 libwebkit2gtk-4.1-0 libayatana-appindicator3-1 librsvg2-2\n  ```\n\nPackaged stable and nightly desktop builds check for updates in the background and offer them in\n**Settings → Updates**: **Download** → **Preparing update** → **Install & Restart**. Nothing is applied until\nyou choose **Install & Restart**. ThinkRail then shows the installation's progress and log, closes, and\nreopens on the new version. After the restart it tells you whether the update installed. If it didn't, it\nexplains why and offers to retry. The updater appears only when the package carries a valid HTTPS feed\nidentity; installations that predate that identity need one manual installation first.\n\n### Command line\n\nThe installer downloads the right binary, verifies its SHA-256 checksum, and puts `thinkrail` on your PATH.\n\n**macOS \u002F Linux** (also Windows under Git Bash):\n\n```bash\ncurl -fsSL https:\u002F\u002Fraw.githubusercontent.com\u002FJetBrains\u002Fthinkrail\u002Fmain\u002Finstall.sh | bash\n```\n\n**Windows** — the same command works from cmd and PowerShell:\n\n```powershell\npowershell -c \"irm https:\u002F\u002Fraw.githubusercontent.com\u002FJetBrains\u002Fthinkrail\u002Fmain\u002Finstall.ps1 | iex\"\n```\n\nThen run `thinkrail`, optionally with a git repo to open as a project:\n\n```bash\nthinkrail ~\u002Fcode\u002Fmy-repo\n```\n\n`thinkrail` needs `git` on your PATH and a model provider — sign in with JetBrains AI from the app or use\nyour own provider credentials. `thinkrail --help` lists the flags; `thinkrail --version` prints the build.\n\n\u003Cdetails>\n\u003Csummary>\u003Cstrong>Nightly builds, pinned versions, updates, and uninstall\u003C\u002Fstrong>\u003C\u002Fsummary>\n\nThe installer takes `--channel stable|nightly` and `--version`; a pinned version must belong to the\nselected channel:\n\n```bash\ncurl -fsSL https:\u002F\u002Fraw.githubusercontent.com\u002FJetBrains\u002Fthinkrail\u002Fmain\u002Finstall.sh | bash -s -- --channel nightly\ncurl -fsSL https:\u002F\u002Fraw.githubusercontent.com\u002FJetBrains\u002Fthinkrail\u002Fmain\u002Finstall.sh | bash -s -- --channel stable --version 0.1.2\ncurl -fsSL https:\u002F\u002Fraw.githubusercontent.com\u002FJetBrains\u002Fthinkrail\u002Fmain\u002Finstall.sh | bash -s -- --channel nightly --version 0.2.0-nightly.10\n```\n\nOn Windows the options are environment variables (`THINKRAIL_CHANNEL`, `THINKRAIL_VERSION`,\n`THINKRAIL_PREFIX`, `THINKRAIL_NO_MODIFY_PATH`):\n\n```powershell\n$env:THINKRAIL_CHANNEL='nightly'; irm https:\u002F\u002Fraw.githubusercontent.com\u002FJetBrains\u002Fthinkrail\u002Fmain\u002Finstall.ps1 | iex   # PowerShell\nset \"THINKRAIL_CHANNEL=stable\" && set \"THINKRAIL_VERSION=0.1.2\" && powershell -c \"irm https:\u002F\u002Fraw.githubusercontent.com\u002FJetBrains\u002Fthinkrail\u002Fmain\u002Finstall.ps1 | iex\"   # cmd\n```\n\nInstalled stable and nightly CLI hosts periodically offer **Run Update** in **Settings → Updates**. It runs\nthe host machine's `thinkrail update` in the background — also when the UI is open in a browser on another\nmachine — and a successful update asks you to restart the host manually. You can run `thinkrail update`\ndirectly on any platform: it re-runs the installer for the installed channel and replaces\n`\u003Cprefix>\u002Fbin\u002Fthinkrail[.exe]`; pass `--channel` or `--version` only for an explicit override.\n\n`thinkrail uninstall` removes the executable, the PATH entry the installer added, and the install metadata,\nand asks whether to delete your `~\u002F.thinkrail` app state (kept by default — `--remove-data` deletes it,\n`-y` skips the questions).\n\nPrefer a manual install? Download a binary and `SHA256SUMS` from the releases page and verify the checksum.\nFor self-update to work, rename it to `thinkrail` (`thinkrail.exe` on Windows) and place it at\n`\u003Cprefix>\u002Fbin\u002Fthinkrail[.exe]`; a binary kept under its release filename or elsewhere must be replaced\nmanually or reinstalled with the script.\n\n\u003C\u002Fdetails>\n\n### Platform notes\n\n| Platform | Desktop | CLI |\n| --- | --- | --- |\n| macOS Apple Silicon \u002F Intel | DMG | signed binary |\n| Windows x64 | signed setup executable and app binaries | signed `.exe` |\n| Linux x64 \u002F ARM64 | setup tarball, unsigned | unsigned |\n\nJetBrains signs the Windows CLI, the desktop setup executable, and every executable and DLL the desktop app\ninstalls. The macOS CLI is signed but not yet notarized.\nSigned and notarized desktop DMGs require the coordinated JetBrains service pipeline; older published DMGs\nand locally built packages may still be unsigned and blocked by Gatekeeper. Linux artifacts are unsigned.\n\n## Analytics & privacy\n\nThinkRail collects basic usage events — launches, chat creation, message sends, provider connections — tied to\na random installation ID. Usage analytics never include prompts, code, files, credentials, or account\nidentity. Error reports are also always sent, tied to the same installation ID, so we can fix crashes: the\nerror type and code and where in ThinkRail's own code it happened. They never include error messages, file\npaths, names, URLs, or anything from your projects or extensions. Additional product\nusage and how you found ThinkRail are shared only while **Share additional usage\ndata** is on; the switch is offered at first launch and lives in **Settings → Privacy**. When launching from\nthe command line, `thinkrail --no-analytics` (or `THINKRAIL_NO_ANALYTICS=1`) turns additional sharing off for\nthat run. With additional sharing on, a packaged build may open the ThinkRail blog in your browser once to\nlink your installation to the website visit that brought you here — only where you accepted marketing cookies on the\nwebsite or no consent is required — and that link expires after 30 days.\n\n## Under the hood\n\nThinkRail is a thin host that runs `pi` in-process and bridges it to a rich web UI. `pi` owns models,\nskills, compaction, cost, and session state; the app owns the workspace, the editor, and the wire — it\nnever assembles prompts behind your back. Three rings:\n\n- **Engine host** — `packages\u002Fserver` (+ `packages\u002Fshared`): a `Bun.serve` HTTP+WS host with one in-process\n  `pi` session per chat, launched by `apps\u002Fcli` or `apps\u002Fdesktop`.\n- **The wire** — `packages\u002Fcontracts`: the typed, versioned protocol between host and UI.\n- **UI client** — `apps\u002Fweb`: React 19 + Zustand + Tailwind v4, shipped independently; it dials a host over\n  the wire and depends on the contracts only.\n\n[`goal-and-requirements.md`](goal-and-requirements.md) and [`architecture.md`](architecture.md) are the\ncanonical product and design specs. ThinkRail is developed spec-first: a `SPEC.md` sits beside every\nmodule, and a change that moves a boundary, contract, or decision updates the spec in the same change.\n\n## Developing ThinkRail\n\nYou need **Bun** 1.4.4 (the pinned package manager and runtime), **Node.js** ≥ 22.19 (required by the\nin-process `pi` engine), and an authenticated `pi` provider for agent work.\n\n```bash\ngit clone https:\u002F\u002Fgithub.com\u002FJetBrains\u002Fthinkrail.git\ncd thinkrail\nbun install\nbun run dev                          # host + web client together; Ctrl+C stops both\n```\n\n```bash\nbun run --filter @thinkrail\u002Fcli dev  # browser launcher\nbun run build:binary                 # standalone CLI artifact\nbun run desktop:dev                  # package and open the Electrobun app\nbun run desktop:build                # package without opening it\n```\n\n[`CONTRIBUTING.md`](CONTRIBUTING.md) covers the checks, the end-to-end suites, desktop packaging, and the\nrepository layout.\n\n## Contributing\n\nContributions are welcome — see [`CONTRIBUTING.md`](CONTRIBUTING.md). This project and community are\ngoverned by the [Code of Conduct](CODE_OF_CONDUCT.md).\n\n## License\n\nLicensed under the [Apache License 2.0](LICENSE).\n",2,"2026-10-29 04:23:39","trending"]