The protoLabs.studio browser extension brings protoLabs Studio into any browser tab. Chat with Ava, monitor agent status, and extract context from GitHub pages -- all from Chrome's side panel.
Status: Optional Repository: protoLabsAI/protoExtension Targets: Chrome (primary), Firefox (secondary)
- Side panel chat -- Talk to Ava from any tab via streaming chat
- Context menu -- Select text, right-click "Ask Ava about this", and the selection is sent to the chat
- Agent badge -- Toolbar icon shows active (blue) and blocked (red) agent counts in real-time
- GitHub extraction -- On GitHub pages, the extension extracts repo metadata, PR diffs, issue details, and file contents as context for Ava
- Project picker -- Switch between protoLabs Studio projects without leaving the browser
- A running protoLabs Studio server (default
http://localhost:3008) - An API key (
AUTOMAKER_API_KEYfrom your server.env) - Chrome 114+ (for side panel support) or Firefox
git clone https://github.com/protoLabsAI/protoExtension.git
cd protoExtension
pnpm install
pnpm devLoad the unpacked extension from .output/chrome-mv3/ in chrome://extensions (Developer mode enabled).
See the full Developer Quickstart for detailed instructions.
- Open the extension options page (right-click extension icon > Options)
- Enter your protoLabs Studio server URL (default:
http://localhost:3008) - Enter your API key
- Click Test Connection to verify, then Save
The extension communicates with the protoLabs Studio server via two channels:
All requests include an X-API-Key header for authentication.
| Endpoint | Purpose |
|---|---|
/api/health |
Connection validation |
/api/workspace |
List available projects |
/api/features |
Feature list for badge |
/api/auto-mode |
Auto-mode status for badge |
/api/chat |
Chat with Ava (SSE streaming) |
Real-time updates flow through /api/events:
- Extension requests a one-time token from
GET /api/auth/token - Connects to
ws://localhost:3008/api/events?wsToken=<token>&projectPath=<path> - Receives
feature:started,feature:completed,feature:error,auto-mode:started,auto-mode:stoppedevents - Reconnects with exponential backoff (1s base, 30s cap) on disconnection
The extension works with the standard protoLabs Studio server. No additional configuration is needed on the server side -- the existing /api/health, /api/chat, /api/events, and /api/auth/token endpoints are all it uses.
If your server runs on a non-default port or host, update the Server URL in the extension options.
If the extension makes requests from a content script context (rather than the background service worker), the server may need CORS headers. The default protoLabs Studio server configuration handles this. If you encounter CORS errors, ensure the server's CORS middleware allows the extension's origin.
| Badge | Color | Meaning |
|---|---|---|
| Number | Blue (#1D6AE5) |
Active agents running |
| Number | Red (#DC2626) |
At least one agent is blocked |
| (none) | -- | No agents running |
Updates via WebSocket when the side panel is open, with 5-minute alarm polling as a fallback.
| Permission | Why |
|---|---|
storage |
Persist credentials, chat sessions, and project path |
activeTab |
Read current tab URL and title for context |
sidePanel |
Chrome side panel API for the chat UI |
contextMenus |
Right-click "Ask Ava about this" menu item |
alarms |
5-minute polling interval for badge updates |
No host permissions are required at install time. Runtime permissions are requested as needed.
- Verify the server is running:
curl http://localhost:3008/api/health - Check the API key in the extension options matches
AUTOMAKER_API_KEYin the server's.env - Open the service worker console (Chrome > Extensions > protoLabs.studio > Details > Inspect views: service worker)
The side panel must be opened at least once to establish the WebSocket connection. Without it, the extension falls back to 5-minute alarm polling.
- Side panel API is not available -- use the popup instead
- Host permissions require explicit user grant at runtime
chrome.sidePanel.open()calls will silently fail