Skip to content
| Marketplace
Sign in
Visual Studio Code>AI>Sqowe WingmanNew to Visual Studio Code? Get it now.
Sqowe Wingman

Sqowe Wingman

Sqowe

|
1 install
| (0) | Free
A VS Code client for the pi coding agent
Installation
Launch VS Code Quick Open (Ctrl+P), paste the following command, and press enter.
Copied to clipboard
More Info

Sqowe Wingman

A VS Code client for the pi coding agent — pi's full agent loop, rendered natively in your editor.

Sqowe Wingman is a graphical front-end ("skin") over @earendil-works/pi-coding-agent ("pi"). The extension host spawns pi --mode rpc as a child process, renders pi's agent event stream natively in a webview, and wires pi's edit tool into VS Code's diff editor. Crucially, it reuses pi's own configuration — the same ~/.pi/agent/ global config and per-project .pi/ resources the pi CLI uses. Wingman is a different front-end over the same brain, not a separate tool with its own settings.

Status — 0.1.2 preview. Phases 0–8 are complete: native chat, tool cards, native diff, commands, the extension-UI protocol bridge, sessions, and config/trust are all built and tested. Phase 9 (packaging / Marketplace) is in progress, so for now you install from source (see below). See IMPLEMENTATION_PLAN.md for the roadmap.

Features

  • Native chat — streaming assistant text and thinking, mid-turn abort, markdown rendering with safe link handling.
  • Tool cards — a collapsible card for every tool call, with live output and copy buttons that yield clean source text (not a screen scrape).
  • Native diff — edit results open in VS Code's real diff editor (View Diff) or apply as pending Source Control changes (Apply), with syntax highlighting and side-by-side toggle for free.
  • Slash + native commands — pi's user slash commands appear as / autocomplete in the composer; pi's built-ins (model, thinking level, compact, new / fork / clone, export, session stats) are surfaced as native VS Code commands, menu items, and an always-visible status bar item.
  • Native dialogs — pi's permission prompts and inputs render as VS Code quick-picks, modals, and input boxes instead of terminal selectors.
  • Sessions — an activity-bar tree of your pi sessions for the open workspace, with switch / resume and full-fidelity transcript restore.
  • Project trust & multi-root — honors pi's project-trust gate before loading project .pi/ resources, with a folder picker for multi-root workspaces.

Prerequisites

pi is not bundled — install it yourself (it keeps its native bits in its own install, which lets Wingman ship as a single universal VSIX):

npm install -g @earendil-works/pi-coding-agent

Then authenticate once with the pi CLI — Wingman reuses the saved credentials:

pi          # then run /login in the pi TUI and follow the prompts

Tested against pi 0.79.x; older versions warn but are not blocked. Requires Node ≥ 20.

Configuration

Configure pi, not the extension. Wingman is a thin GUI over pi and shares pi's configuration files. Almost everything you'd want to change — your login / credentials, model providers and defaults, skills, extensions, themes, system prompts, and trust defaults — lives in pi's configuration, not in VS Code settings. Set it up once with pi (CLI or config files) and it applies to both the CLI and Wingman.

VS Code settings (intentionally minimal)

The extension exposes exactly one setting, because everything else belongs to pi:

Setting Default Description
sqoweWingman.piExecutablePath "" Path to the pi executable (a leading ~ is expanded). Empty = auto-detect from PATH, npm-global, Homebrew, and Volta.

pi's configuration (shared with the CLI)

Wingman spawns pi with its working directory set to your workspace folder and no config overrides, so pi reads exactly the same files as your terminal pi:

What you want to change Where it lives How to change it
Login / credentials ~/.pi/agent/ (e.g. auth.json) pi → /login
Model providers & defaults ~/.pi/agent/settings.json, models.json pi config — see pi's models.md / providers.md
Global skills, extensions, prompt templates, themes ~/.pi/agent/ pi config — see pi's skills.md / extensions.md / themes.md
Global agent instructions ~/.pi/agent/AGENTS.md edit the file
Project-local settings & resources <project>/.pi/, <project>/AGENTS.md edit per project (loaded only once the project is trusted)
Default project-trust behavior defaultProjectTrust in ~/.pi/agent/settings.json ("ask" / "always" / "never") pi config, or /settings in the pi TUI
Sessions ~/.pi/agent/sessions/ shared automatically

Because the configuration is shared, a session you start in the CLI shows up in Wingman (and vice versa), and you only have to log in once. For the authoritative reference, see pi's own docs/ directory (settings.md, models.md, providers.md, skills.md, extensions.md, security.md), which ships inside the npm package.

The in-editor commands (Set Model, Set Thinking Level, Compact, …) drive the running pi session over RPC — convenient for the current conversation — but persistent defaults still come from pi's configuration above.

Project trust

When a project contains trust-gated .pi/ resources (settings, extensions, skills, prompt templates, themes, or system-prompt files) and has no saved decision, Wingman shows a native Trust / Don't Trust prompt and saves your choice to pi's shared ~/.pi/agent/trust.json. Trusting loads the project's .pi/ resources; declining skips them. Re-run the decision any time with Sqowe Wingman: Trust Project from the command palette. In a multi-root workspace, use Sqowe Wingman: Select Workspace Folder to choose which folder the agent runs in.

Install from source

Wingman isn't on the Marketplace yet, so install it from this repo. You need Node ≥ 20, npm, and pi installed.

git clone https://github.com/sqowe/sqowe-wingman.git
cd sqowe-wingman
npm run install:all   # install host + webview dependencies
npm run build         # bundle host (esbuild) + webview (Vite) into dist/

Then pick one:

Option A — Run in an Extension Development Host (recommended for trying it out)

Open the folder in VS Code and press F5 (or Run ▸ Run Extension). The bundled .vscode/launch.json builds the project and opens a second VS Code window with Wingman loaded; its icon appears in the activity bar. This is the fastest way to test changes — edit code, then reload the dev-host window with Cmd/Ctrl+R.

The dev host opens the sample-workspace/ scratch folder so pi has a working directory (the agent needs an open workspace folder to spawn). To test against the extension's own source instead, point the trailing arg in .vscode/launch.json at ${workspaceFolder}.

Option B — Package a VSIX and install it into your daily VS Code

npm run vsce:package                       # produces wingman-0.1.2.vsix
code --install-extension wingman-0.1.2.vsix

Or in VS Code: Extensions view ▸ ⋯ menu ▸ Install from VSIX… ▸ pick the file, then reload when prompted.

Usage

Open a workspace folder and click the Sqowe Wingman icon in the activity bar. Two views appear: Chat (composer + transcript) and Sessions (your pi sessions for this workspace). Type a prompt and press Enter (Shift+Enter for a newline); type / to browse commands. When pi changes a file, use View Diff / Apply on the tool card.

Attaching images

When the active model supports image input (e.g. Claude claude-sonnet-4-5, GPT-4o), you can send images alongside your prompt:

  • + button — opens a file picker (PNG, JPEG, GIF, WebP).
  • Paste — paste an image from the clipboard directly into the composer.
  • Drag and drop — drag image files onto the composer textarea.

Attached images appear as thumbnail chips above the input; click × to remove one before sending. Sending is allowed with images and no text (image-only prompts).

If the active model does not accept images the + button is disabled and pasted/dropped images are ignored with a brief note naming the model.

Limits (enforced on both the webview and the extension host):

Limit Value
Max size per image 5 MB decoded
Max total image payload per prompt 20 MB decoded
Max images per prompt 10
Accepted formats PNG, JPEG, GIF, WebP
Max prompt text size 32 KB (UTF-8)

Tip: drag the Wingman view to the secondary (right) side bar so Source Control stays visible on the left.

Development

npm run install:all     # install host + webview dependencies
npm run build           # bundle the extension host (esbuild) + webview (Vite)
npm run typecheck       # type-check the extension host
npm test                # unit tests (host vitest + webview vitest)
npm run test:integration # integration tests in a real VS Code host (@vscode/test-cli)

Iterate with npm run watch:host and npm run watch:webview in separate terminals, then launch the Run Extension debug target.

The repo is split into two build targets:

  • src/ — the extension host (Node / TypeScript), bundled with esbuild into dist/extension.js.
  • webview-ui/ — the React + Vite + Zustand webview, built into dist/webview/.

See ARCHITECTURE.md and the AI_*.md files for the coding contracts.

Credits & license

Sqowe Wingman is released under the MIT License. It is a client for pi, which is an independent MIT-licensed project by Mario Zechner; see THIRD_PARTY_NOTICES.md for pi's copyright and license notice. "Sqowe Wingman" is a Sqowe product name and is not affiliated with or endorsed by the pi project.

  • Contact us
  • Jobs
  • Privacy
  • Manage cookies
  • Terms of use
  • Trademarks
© 2026 Microsoft