Partner

unlisted

by Paulo Bernardy

Run a terminal in a sidebar, powered by xterm.js and connected to an external PTY relay, for using Claude Code inside Obsidian.

Updated 1mo agoMIT
View on GitHub

Partner

Run a terminal in a sidebar inside Obsidian — multiple independent tabs, each its own PowerShell 7 session — so you can use Claude Code (or any CLI) without leaving your vault.

Desktop only (Windows / macOS). Partner spawns an external Node process and a shell, so it cannot run on Obsidian mobile.

Features

  • Terminal sidebar powered by xterm.js.
  • Multiple independent terminal tabs, each with its own session and PTY.
  • Theme-aware — colors follow your active Obsidian theme.
  • Clickable links: URLs open in your browser; vault paths and wikilinks open inside Obsidian.
  • Configurable starting directory, font size/family, and copy-on-select.
  • Explicit node / npm / pwsh paths in settings for when they are not on your PATH.

Requirements

  • Obsidian 1.4.11+ on desktop (Windows or macOS).
  • Node.js on your PATH (or set its path in the plugin settings).
  • PowerShell 7 (pwsh) on your PATH (or set its path in the plugin settings).
  • Internet access on first launch — see "How it works" below.

How it works

Partner runs a small Node "relay" process, separate from Obsidian. The relay opens a local WebSocket server on 127.0.0.1:48771 and, for each terminal tab, spawns a PowerShell 7 PTY via node-pty. The plugin (running inside Obsidian) is the WebSocket client.

On first launch the plugin writes the relay files into its own folder and runs npm install --production there to fetch the relay's dependencies (node-pty, ws). After that, no network access is needed.

Disclosures

In line with the Obsidian developer policies, Partner discloses the following:

  • External process and shell access. Partner spawns a Node process and PowerShell 7 sessions. A terminal has the same access as your normal shell — it can read and modify files anywhere on your system, not only inside the vault. Treat it with the same caution as a system terminal.
  • Local network use. The relay listens on the loopback address 127.0.0.1:48771. The plugin itself sends no data to any remote server; the connection is local-only.
  • First-run dependency install. On first launch the plugin runs npm install --production in its relay/ folder to fetch node-pty and ws from the npm registry. This needs Node, npm, and internet access once.
  • Third-party tools you run. Anything you run in the terminal (for example Claude Code) is third-party software with its own behavior, network use, and policies. Partner neither controls nor endorses it.
  • No telemetry. Partner collects no analytics and sends no telemetry.

Installation

Manual

  1. Download main.js, manifest.json, and styles.css from the latest release.
  2. Create the folder <vault>/.obsidian/plugins/partner/ and place the three files inside it.
  3. Reload Obsidian and enable Partner under Settings → Community plugins.

From source

npm install
npm run build

Then copy main.js, manifest.json, and styles.css into <vault>/.obsidian/plugins/partner/.

Settings

  • Starting directory — home, vault root, or a custom path.
  • Copy on select — copy the terminal selection to the clipboard automatically.
  • Font size / family — terminal typography.
  • Executable paths — explicit node / npm / pwsh paths, used when PATH detection fails (a common cause of a "not found" error on a fresh machine).

Development

  • npm run dev — watch build.
  • npm test — Vitest: pure-logic unit tests plus a real relay integration test (requires pwsh).
  • npm run typecheck — TypeScript type checking.

License

MIT.

For plugin developers

Search results and similarity scores are powered by semantic analysis of your plugin's README. If your plugin isn't appearing for searches you'd expect, try updating your README to clearly describe your plugin's purpose, features, and use cases.