VulpineOS Method Passthrough
foxbridge primarily translates standard CDP methods into Firefox
Juggler. It also forwards a small set of VulpineOS-specific Page.*
methods directly so CDP clients can access them without speaking
Juggler.
Currently forwarded methods
foxbridge currently forwards these methods directly to the Juggler backend:
Page.getOptimizedDOMPage.resolveRefPage.focusByRefPage.setActionLockPage.getShadowDOM
These are not Chrome-native CDP methods. They only work when the target browser is a VulpineOS/Camoufox build that implements the matching Juggler methods.
How to call them
Use a page-scoped CDP session, not the browser-level connection.
Puppeteer
const browser = await puppeteer.connect({
browserWSEndpoint: 'ws://127.0.0.1:9222/devtools/browser/foxbridge',
});
const page = await browser.newPage();
const client = await page.target().createCDPSession();
const dom = await client.send('Page.getOptimizedDOM', {
maxDepth: 10,
maxNodes: 200,
});
await client.send('Page.setActionLock', { enabled: true });
await client.send('Page.focusByRef', { ref: '@3' });chrome-remote-interface
const CDP = require('chrome-remote-interface');
const client = await CDP();
const { Target } = client;
const { targetId } = await Target.createTarget({ url: 'about:blank' });
const { sessionId } = await Target.attachToTarget({ targetId, flatten: true });
await client.send('Page.getOptimizedDOM', {
maxNodes: 150,
}, sessionId);Why these methods exist
These methods expose VulpineOS browser-side features that are useful to agents but do not exist in standard CDP:
Page.getOptimizedDOM: token-reduced semantic DOM exportPage.resolveRef: map a@Nreference back to a concrete targetPage.focusByRef: focus an element from a semantic referencePage.setActionLock: freeze page execution while the agent reasonsPage.getShadowDOM: inspect shadow-root content through the browser
This keeps foxbridge useful for agent tooling while staying explicit about what is VulpineOS-specific behavior.
Limitations
Not every VulpineOS or private Juggler method is exposed through foxbridge.
Methods that are not currently forwarded include:
Page.getAnnotatedScreenshotPage.secureSetInputValueBrowser.startAudioCaptureBrowser.stopAudioCaptureBrowser.getAudioChunk
For those features:
- use VulpineOS MCP tools when available
- or use the direct Juggler path inside VulpineOS
- or extend foxbridge explicitly rather than assuming arbitrary Juggler methods will pass through
If a method is not implemented, foxbridge returns a standard CDP
method not found error.
Compatibility note
These passthrough methods are a foxbridge convenience for VulpineOS users. They are not part of Chrome CDP and should be treated as VulpineOS-specific extensions by client code.