Skip to content
| Marketplace
Sign in
Visual Studio Code>Other>JouleNew to Visual Studio Code? Get it now.
Joule

Joule

joule-sh

|
1 install
| (0) | Free
An agentic coding session in a side panel, driven by the joule daemon on your own machine.
Installation
Launch VS Code Quick Open (Ctrl+P), paste the following command, and press enter.
Copied to clipboard
More Info

Joule for the editor

An agentic coding session in a side panel, driven by the joule you already run in a terminal. The agent reads and edits the files in your workspace, runs commands and makes commits on your own machine - the panel is a front end to a local daemon, not a hosted service and not a second agent.

A terminal and this panel can drive the same session at the same time. Change the model or the approval mode in either one and the other moves with it, because both are talking to the same daemon over the same protocol.

Before you install: this needs the joule CLI

The extension does not carry an agent. It starts and attaches to a joule daemon, so the binary has to be on the machine the workspace is on:

curl -fsSL https://raw.githubusercontent.com/joule-sh/code/main/install.sh | sh

That installs joule for x86_64 Linux, Apple Silicon macOS and Intel macOS. The extension needs joule 0.13.0 or newer. If joule is not on PATH, point joule.path at it.

Credentials stay with the CLI. The panel never asks for an API key, never reads one, and never forwards one.

There is no Windows build yet

joule does not build for Windows (#173), so on a Windows machine this extension installs, loads, and then tells you there is nothing for it to drive. Nothing about the panel will work there. That is a limitation of the CLI, not of the extension, and it is being worked on.

WSL works today, and is the way to use this on Windows. Open the folder through WSL (or through Remote-SSH, or in a dev container): the extension declares itself a workspace extension, so it runs on the remote side, next to the Linux joule and next to your files. Install joule inside the WSL distribution with the one-liner above and the panel behaves exactly as it does on Linux.

What the panel does

It opens on a first-run screen when nothing is configured yet: one sentence on what joule is, and the three ways it can reach a model - a joule account, your own provider key, or a self-hosted joule server - each as its own button. A missing joule, a joule too old to drive, and a configuration that cannot start a session all land here with a sentence about what to do, rather than a red error somewhere in the corner.

An API key is never typed into the panel. The provider-key route opens ~/.config/joule-code/config.json in the editor and says so. The extension reads that file only to answer "is there a key here", never its value, and writes nothing to it but a server address you asked it to remember.

Approvals are cards, not prompts in a scrollback. When the agent wants to run a command or write a file that the current mode does not allow on its own, the panel shows what it wants to do and where it will run, and waits.

The composer carries the session's controls. A chip row names the file open beside the panel, which is what will be quoted at the top of your message and can be dismissed with a click. Below the input, the approval mode and the model sit as chips, with a line saying where tools will run and what this mode lets through without asking.

It attaches, resumes and reconnects. Close the window and the daemon keeps working; open it again and the panel picks the session back up.

Getting started

  1. Install joule (above) and run it once in a terminal to sign in or point it at a provider.
  2. Open a folder in your editor. The session opens in a tab beside your code, without taking focus from the file you opened.
  3. Press Attach.

Close that tab and the joule icon in the activity bar, on the left, is still the way back to the session, as is Joule: Open the session in an editor tab and the button in the view's own title bar. Set joule.openInEditorTab to false if you would rather the editor area stayed yours and the session lived in the activity bar.

Attaching is deliberately a button rather than something that happens on open: a workspace's daemon may already be driven from a terminal, and joining it is a decision you make. Set joule.attachOnStartup if you would rather it happen every time.

Settings

setting default what it does
joule.path joule the binary the daemon is started and stopped through
joule.openInEditorTab true open the session in an editor tab beside your code when the window opens
joule.attachOnStartup false attach as soon as the window opens, instead of waiting for the button
joule.resumeOnStart false when this window starts the daemon, resume the folder's previous session

joule.path must be the same install a terminal would use: the daemon is started and stopped through it.

Commands

command what it does
Joule: Open the session in an editor tab open the tab beside your code, or reveal the one already open
Joule: Attach to this workspace's session start or join the daemon for this folder
Joule: Detach from the session leave the session running and stop rendering it
Joule: Cancel the current turn stop the agent mid-turn
Joule: Stop this workspace's daemon shut the daemon down

Versions, and what happens when they disagree

The extension and the CLI are cut from the same tag, so a 0.18.0 extension and a 0.18.0 binary are the pair that was tested together. Attaching runs joule --version first and refuses to go further when the binary is missing, is not a joule, or is older than 0.13.0 - the release that first shipped the daemon and attach socket this panel talks to. A mismatch is one sentence in the panel rather than a session that dies on the first frame it does not recognise. A binary built from a checkout reports dev and is taken at its word.

Installing without the marketplace

Every release also attaches joule-editor-<version>.vsix to its GitHub release, cut from the same tag as the binaries:

code --install-extension joule-editor-<version>.vsix

or the Extensions view, through Install from VSIX.

Source, issues, and how it works

The extension is plain JavaScript with no dependencies and no build step, in editor/ of the joule-sh/code repository, MIT licensed.

  • Report a bug or ask for something
  • How the panel is built, and why - workspace-to-daemon mapping, trust level, where tools run, lifecycle, and what is reused from the terminal client rather than rewritten
  • Contact us
  • Jobs
  • Privacy
  • Manage cookies
  • Terms of use
  • Trademarks
© 2026 Microsoft