Buddy is a Chrome Manifest V3 extension written in TypeScript. It adds:
- a dedicated Buddy assistant window
- a static page bridge content script that runs the DOM tools on the current page
- a manual/dev mode page that can run the same DOM tools without the LLM
- BYO OpenAI API key settings stored locally in extension storage
Buddy exposes four page tools:
get_page_contexthighlight_elementclick_elementfill_form_field
The AI path uses AI SDK tool calling. Clicks and fills require approval in the Buddy window before they run.
npm install
npm run buildThe unpacked extension output is written to dist/.
- Open
chrome://extensions - Enable
Developer mode - Click
Load unpacked - Select the
dist/folder in this project
If you previously loaded an older Buddy build, remove that unpacked extension first, then load the new dist/ again so Chrome does not keep a stale broken worker around.
- Open any normal web page you control or trust.
- Click the Buddy extension action once on that tab.
- Buddy should open as a separate popup-style extension window bound to that tab.
- Use the
Manual,Chat,Debug, andSettingstabs inside that Buddy window. - In manual mode:
- save your OpenAI API key
- keep the default model
gpt-5.4-mini - click
Get Page Context
- Confirm you see:
- a markdown-like page snapshot
eNNelement IDs- raw tool output in the debug panel
After Get Page Context succeeds:
- Copy an element ID like
e12 - Test
Highlight Element- the manual tab has a real
Highlightbutton that should trigger the spotlight effect on the bound page
- the manual tab has a real
- Test
Click Element - Test
Fill Form Field
Important:
- after
click_elementorfill_form_field, the old snapshot is invalid - run
Get Page Contextagain before the next page action
Once your API key is saved:
- Open Buddy on a page with the extension action
- Ask something like:
Read this page and tell me what the primary action is.
Then try:
Find the email field and fill it with test@example.com
Buddy should:
- call
get_page_context - decide on the target element
- request approval before filling or clicking
- execute the action only after approval
npm test
npm run test:e2eNotes:
npm testruns the current unit/component test suitenpm run test:e2ecurrently runs a scaffolded Playwright extension test file that is intentionally skipped until a persistent Chromium extension harness is added
- Chrome only
- main document only
- no cross-origin iframe support yet
- no account/auth system yet
- no packaged icons yet