JetBrains plugin

One plugin that brings insrc into the JetBrains IDE family — IntelliJ IDEA, PyCharm, GoLand and WebStorm — from a single install. It is a thin orchestrator that owns no reasoning: it wires insrc's grounded-analyze and tracked-workflow capabilities into the IDE's own AI assistant and manages the backing daemon, so your assistant answers from a citation-grounded model of your codebase.

What it is

All the reasoning still runs through the insrc MCP server that your IDE's assistant invokes — the plugin opens no cloud path of its own. Its whole job is orchestration at IDE lifecycle moments (project open, install, uninstall):

Privacy. The plugin stores no credentials and opens no cloud path — all reasoning routes through your assistant's existing CLI / OAuth sessions. Every write into a host-owned config or rules file is marker-delimited and replace-only, so it preserves your surrounding content and is fully reversed on uninstall.

Requirements

RequirementWhy
A JetBrains IDE, 2024.2+IntelliJ IDEA, PyCharm, GoLand or WebStorm. The plugin declares an open-ended upper bound, so it loads on current and future releases.
A JetBrains AI hostAI Assistant or Junie — the agentic assistant that invokes the insrc MCP server. Without one the plugin stays dormant and re-checks on later project opens.
The insrc daemonThe backend the plugin talks to. It is installed on first use (see setup below); no manual step needed.
Node + gitUsed by the daemon and its installer. The plugin provisions a private Node runtime automatically when the system Node is unsuitable.

Install

A · JetBrains Marketplace (recommended)

In your IDE, open Settings → Plugins → Marketplace, search for insrc, and click Install. Updates are delivered through the Marketplace like any other plugin.

B · Install from disk (pre-release / internal)

Build the distribution artifact (see building from source) — a single zip in jetbrains-plugin/build/distributions/ — then install it directly:

Settings → Plugins → ⚙ → Install Plugin from Disk… and select the built insrc-jetbrains-<version>.zip.

First-run setup

Installing the plugin does not touch the daemon by itself — setup happens the first time you open a project with the plugin active. On project open the plugin:

  1. Probes for the daemon (a health + staleness check over the daemon socket).
  2. Offers a one-click setup if the daemon is absent — a notification you accept explicitly. Accepting runs the bootstrap installer bundled inside the plugin, which clones and builds the daemon into ~/.insrc/daemon. If the daemon is already present it is silently kept current instead.
  3. Offers "Enable insrc for this project" — a one-click prompt that registers the open project with the daemon through the strict repo.add contract.
  4. Wires your AI host — writes the insrc MCP-server registration plus the tracked-workflow steering block into the detected host's config and rules files.
The first daemon provisioning is a deliberate one-click consent surfaced as an IDE notification — not something that happens the instant you install the plugin. After that, daemon updates are silent. If no AI host is present, the plugin does nothing and re-checks on a later project open.

How it works

Once a project is enabled, you keep using your IDE's assistant exactly as before — the plugin just makes it far more grounded:

In the IDE

Beyond the invisible wiring, the plugin adds a small set of native surfaces so you can drive and inspect insrc without leaving the IDE or dropping to a shell:

These surfaces are read-only by default. The only state-changing controls are explicit and, where they matter, confirm-gated: the config edits, the Daemon-page lifecycle actions (start/stop/restart/update/backup/compact), the Debug orphan-process kill, and artifact approval. Everything reaches only the local socket, local files and local processes.

Clean removal

All of the plugin's writes into host-owned files are reversible:

Build from source

The plugin lives in-repo under jetbrains-plugin/ as a separate Gradle / Kotlin build (deliberately independent of the TypeScript backend). It requires JDK 21; the committed Gradle wrapper pins Gradle 8.10.2, so you do not need Gradle on your PATH.

bash
$ cd jetbrains-plugin
$ ./gradlew build          # compile + run tests + produce the distribution zip
$ ./gradlew buildPlugin     # just the installable zip → build/distributions/
$ ./gradlew runIde          # launch a sandbox IDE with the plugin loaded
$ ./gradlew verifyPlugin     # run the IntelliJ Platform plugin verifier
Use ./gradlew, not a system gradle. The wrapper pins Gradle 8.10.2 because the IntelliJ Platform Gradle plugin is incompatible with Gradle 9.x — a bare gradle from a recent install will fail to configure. The first build downloads the IntelliJ IDEA 2024.2 SDK (~1.5 GB), then caches it.

runIde is the fastest way to exercise the integration end-to-end: it boots a throwaway IDE with the plugin loaded against your real ~/.insrc/daemon, where you can watch the onboarding offer, the MCP + steering wiring, and the daemon lifecycle in action.

Where next