Shareable packaging for the Canvas Copilot CLI extension.
Canvas lets Copilot CLI agents display rich HTML content in a local browser window, update it with live reload, and receive browser actions through a local back-channel.
The installer asks whether to install Canvas as:
- User-scoped - available to Copilot CLI in every working directory.
- Repo-scoped - copied into the current repository at
.github/extensions/canvas.
irm https://raw.githubusercontent.com/ipdelete/canvas/main/install.ps1 | iexbash -c "$(curl -fsSL https://raw.githubusercontent.com/ipdelete/canvas/main/install.sh)"After installing, restart Copilot CLI or run extensions_reload.
Set COPILOT_EXTENSION_SCOPE to user or repo.
$env:COPILOT_EXTENSION_SCOPE = "user"
irm https://raw.githubusercontent.com/ipdelete/canvas/main/install.ps1 | iexCOPILOT_EXTENSION_SCOPE=user bash -c "$(curl -fsSL https://raw.githubusercontent.com/ipdelete/canvas/main/install.sh)"Copy the extension folder into either your user extensions directory or a repository's extension directory:
extensions/canvas -> ~/.copilot/extensions/canvas
extensions/canvas -> .github/extensions/canvas
Then restart Copilot CLI or run extensions_reload.
canvas- display and update local browser canvases from Copilot CLI.pi/canvas.ts- Pi coding agent adapter for the same Canvas browser tools.
See extensions/canvas/README.md for Copilot usage details.
For a step-by-step beginner guide, see docs/README.md.
Canvas can also be loaded as a Pi package without changing the Copilot extension layout:
pi install git:github.com/ipdelete/canvasOr try it for a single Pi run:
pi -e git:github.com/ipdelete/canvasThe Pi adapter registers canvas_show, canvas_update, canvas_close, canvas_list, canvas_library, and canvas_actions using Pi's extension API. Browser content is served from the existing extensions/canvas/data/content directory by default. Set PI_CANVAS_CONTENT_DIR=/absolute/path to use a different content directory.
The installer writes .canvas-install.json into each installed extension copy with the source repository, branch, install scope, and installed commit SHA.
When Canvas starts, it compares that installed commit to the latest main commit in ipdelete/canvas. If the installed copy is stale, Canvas downloads the latest managed files, verifies them against canvas-manifest.json SHA-256 hashes, updates the installed copy in place, and asks Copilot CLI to reload extensions via the SDK.
Canvas preserves data/ so generated canvas content is not part of the self-update.
Set CANVAS_DISABLE_AUTO_UPDATE=true before starting Copilot CLI to disable self-updates.
Delete the installed extension folder:
~/.copilot/extensions/canvas
.github/extensions/canvas
The installer only writes the chosen extension folder and does not modify Copilot settings.