Capabilities
Embedded browsers
An embedded browser is a real web view inside Atlas. The CivitAI browser is built this way: it loads a site, and a bridge lets your plugin react to what the user is looking at and save results back.
Declare a browser
Set host.launch to embedded-browser and host.url to the site. List the domains you will talk to under capabilities.websiteDomains and request websites.connect; Atlas uses the user's own logged-in session for those domains.
"host": { "launch": "embedded-browser", "url": "https://example.com" },
"capabilities": { "websiteDomains": ["example.com"] },
"permissions": ["websites.connect", "network.http", "downloads.write"]The overlay bridge
Point entryPoints.browserOverlay at a script and it runs alongside the web view. Host DOM can never float above the browser view, so any in-page UI has to be injected by that script. It talks to your plugin through atlas.browser, which needs browser.bridge.
postMessage(type, payload)Send a message across the bridge.onMessage(handler)Receive them. Resolves to an unsubscribe function.getState()Current url, title, isLoading, canGoBack, canGoForward.onNavigationState(handler)Fires whenever that state changes.reload() / goBack() / goForward()Drive the view. Each resolves with the new state.atlas.websites.* uses the user's logged-in session for your declared domains and does not need network.http — that permission is only for atlas.network and plain downloads.