A coding agent in your Chrome side panel, connected directly to your local project.
Screencast.from.2026-08-14.16-11-40.webm
A demo of Ramp Glance
Ramp Glance puts a persistent Pi coding session beside the page you are building. Ask it to inspect, explain, or change your project without switching away from the browser. Responses, reasoning, and tool activity stream into the side panel as Pi works.
This project focuses on the Chrome extension experience. A small local bridge connects the extension to Pi and gives the agent access to one explicitly configured project directory.
Ramp Glance turns Chrome's persistent side panel into a workspace for making changes to a local web project.
- Sends your request and the active tab URL to Pi
- Streams assistant responses, available reasoning, and tool activity
- Keeps multiple persistent Pi conversations in the side panel
- Queues additional requests while a thread is working
- Runs separate threads independently
- Restricts every session to one configured project directory
- Communicates through a loopback-only local bridge
Pi edits the source files while your project's existing development server handles hot reload. Ramp Glance does not start, stop, or reload the application for you.
Ramp Glance was inspired by the workflow and visual language of Ramp Inspect. This is an independent project focused only on bringing that browser-side coding experience to a Chrome extension. It is not affiliated with or endorsed by Ramp.
- Node.js 22.19 or newer
- npm 10 or newer
- Google Chrome 114 or newer
- A Pi-supported model and provider
Pi uses its normal configuration directory (~/.pi/agent unless
PI_CODING_AGENT_DIR overrides it). Run pi, then use /login and /model, or
provide a supported provider API key before starting the bridge.
npm install
npm run buildOpen chrome://extensions, enable Developer mode, choose Load unpacked,
and select apps/extension/dist. Copy the extension ID shown by Chrome.
Set the project Pi is allowed to edit and provide the extension ID you copied:
export LOCAL_PI_PROJECT_DIR=/absolute/path/to/your/web-project
export LOCAL_PI_EXTENSION_IDS=abcdefghijklmnopabcdefghijklmnop
npm run start:bridgeKeep the web project's own development server running separately. Click the Ramp Glance extension action to open the side panel and submit your first request.
After changing extension source, rebuild it with npm run build:extension and
click Reload on its card in chrome://extensions.
For browser UI development without packaging the extension, run these in separate terminals:
npm run dev:bridge
npm run dev:extension| Variable | Default | Description |
|---|---|---|
LOCAL_PI_PROJECT_DIR |
Local development path | Absolute path to the only project directory Pi may access. Set this explicitly. |
LOCAL_PI_BRIDGE_PORT |
3210 |
Port used by the loopback bridge. |
LOCAL_PI_EXTENSION_IDS |
None | Comma-separated Chrome extension IDs allowed to call the bridge. Required for the packaged extension. |
LOCAL_PI_ALLOWED_ORIGINS |
http://127.0.0.1:5173,http://localhost:5173 |
Comma-separated browser origins allowed during Vite development. |
VITE_LOCAL_PI_BRIDGE_URL |
http://127.0.0.1:3210 |
Bridge URL embedded in the extension build. Only HTTP loopback URLs are accepted. |
PI_CODING_AGENT_DIR |
~/.pi/agent |
Optional override for Pi credentials, settings, and sessions. |
If you change the bridge port, use the same URL when building the extension:
VITE_LOCAL_PI_BRIDGE_URL=http://127.0.0.1:4321 npm run build:extension
LOCAL_PI_BRIDGE_PORT=4321 npm run start:bridgeThe bridge always binds to 127.0.0.1; it cannot be exposed on the LAN through
configuration. The extension requests only sidePanel, storage, and tabs,
plus HTTP access to 127.0.0.1 and localhost.
Chrome tab + Ramp Glance side panel
|
| HTTP + Server-Sent Events on 127.0.0.1
v
Local Node bridge
|
| Pi TypeScript SDK
v
Pi coding agent
|
v
Configured local project directory
apps/extensioncontains the Manifest V3 React side panel, thread history, active-tab context capture, and streaming conversation UI.apps/bridgeembeds@earendil-works/pi-coding-agent, manages Pi sessions and per-thread queues, and streams normalized events over SSE.packages/protocolcontains the shared request, response, history, execution, and event types used by both applications.
Pi remains the source of truth for complete conversation history. The extension
stores only its lightweight thread index and active thread ID in
chrome.storage.local.
See MANUAL_TESTING.md for the full production acceptance
pass.