中文 | English
Chrome extension AI agent · Browser automation tool · LLM web agent · In-page agent runtime
Goby gives any LLM a set of tools to operate the page in front of you — query, fill, click, screenshot, evaluate. Bring your own model. Talk to it in plain language. It runs entirely in your browser; there is no backend.
| Tools for the live web | 26 built-in tools + MCP server extensions — query, list, fill, click (selector / index dual mode), check, select, submit, wait, scroll, evaluate, screenshot, analyze, navigate, open_tab, list_tabs, close_tab, finish_workflow, search bookmarks, and more. Connect Tavily, GitHub, Cloudflare or any Streamable HTTP MCP server. The page is the agent's workspace. |
| Bring your own model | Any OpenAI-compatible endpoint — OpenAI, DeepSeek, Qwen, GLM, or your own. Multiple profiles, switch on the fly. |
| A real tool-calling loop | Streaming responses. Multi-step reasoning across chained tool calls. Up to 50 rounds per turn, 50 tools per session, 15 s per-tool timeout. Stop button to interrupt in-progress execution. |
| Cross-page autonomous navigation | Agent can navigate to other pages, open new tabs, run tasks on them, and return results — all automatically. Worker tab progress streams back to the chat tab in real time. |
| No backend, ever | Everything runs in your browser. Your API key and your conversations never touch a Goby-controlled server. |
| Movable, resizable | Drag the floating ball anywhere on the screen. Resize the panel from any edge or corner. Positions and geometry persist across sessions. |
| Isolated by design | Shadow DOM keeps the panel out of the page — and the page out of the panel. DOMPurify sanitizes every LLM payload; user input uses textContent, never innerHTML. |
| Read it in an afternoon | ~5,500 lines of vanilla JS, no framework, no build step, no transpile. The whole runtime fits in your head. |
![]() |
![]() |
| First open — Goby greets you with its capabilities | Tool call in action — page_analyze returns a summary |
- Clone or download this repo.
- Open
chrome://extensionsin Chrome (or any Chromium browser). - Enable Developer mode (top-right toggle).
- Click Load unpacked → select the project root directory.
- Pin the Goby icon to your toolbar. Navigate to any web page, then click the floating ball at the bottom-right (or the toolbar icon) to open the panel.
-
Click the toolbar icon → ⚙ Settings (or the gear icon inside the panel).
-
Add a profile:
- **API Base URL** — e.g. `https://api.openai.com/v1` or your provider's OpenAI-compatible endpoint. - **API Key** — stored locally in `chrome.storage.local`, never transmitted except to the endpoint you configure. - **Model** — e.g. `gpt-4o-mini`, `qwen-plus`, `deepseek-chat`. -
Save. The active profile is used for the next message.
Open the panel and just talk to it:
- "Fill the search box with 'chrome extensions' and submit"
- "List all buttons on this page"
- "Take a screenshot of the page (excluding the panel)"
- "What's 23 × 17 + 4?"
The agent loops: LLM → tool calls → tool results → LLM → … until it has a final text reply (or hits the 50-round cap).
For cross-page tasks, the agent can open new tabs, navigate to different URLs, execute workflows on them, and return results:
- "Open Google, search for 'web agent', and summarize the top 3 results"
- "Navigate to the GitHub repo and list all the sections in the README"
- "Open the support site and find the user manual for enterprise routers"
Goby is designed to send your data to exactly one place: the LLM endpoint you configured.
- API keys live in
chrome.storage.localon your machine. They are only sent to the API Base URL you entered — nowhere else. - Page content and your conversation are sent only to your configured LLM endpoint as part of the chat completion request.
- No telemetry, no analytics, no "phone home". No request is made to any Goby-controlled server. You can verify this by inspecting
background.js(the only place network calls happen) or by watching the Network tab in DevTools. - Vendored libraries (
lib/marked.min.js,lib/purify.min.js) are bundled locally — no CDN, no runtime fetch.
- Browser-internal pages (
chrome://,chrome-extension://,about:) are off-limits — Chrome blocks content scripts there. The Web Store and most settings pages are also restricted. file://pages require you to toggle "Allow access to file URLs" in the extension's details page.- Strict CSP sites may block
page_evaluate's injected scripts. The other tools (DOM queries, fills, clicks) still work because they operate through Chrome's own APIs. data:URLs are not supported — Chrome blocks content script injection ondata:URLs. Navigating to adata:URL will cause the agent to stop permanently. Usepage_evaluateto create content inline instead.- Cross-origin session isolation — Sessions are scoped by origin. Navigating to a different subdomain creates a new session (context is inherited from the previous origin).
MIT © Spark



