Skip to content

Packages ​

Extension-use is split so you install only what you use. Most extensions need two packages: host inside the extension, and client wherever the controller runs.

Not sure?

The package picker tells you which packages your setup needs, and where each one goes.

PackageInstall inWhat it doesSize (min+gzip)
@extension-use/hostYour extensiondefineHost() (router, grants, policy), the content runtime, the frame bridge, the control panel, manifest helpers, the extension-use CLI and no-build bundlescontent runtime ≈ 9.3 KB
@extension-use/clientYour web app, site or scriptconnect() with the frame, page, remote and memory transports, and typed callscore ≈ 2.1 KB + frame ≈ 0.8 KB
@extension-use/protocolInstalled for youMessage types, error codes and zod schemas for every built-in actiontypes only in clients
@extension-use/wxtYour WXT extension (dev)Adds the permissions for your groups and externally_connectable to the generated manifestbuild time only
@extension-use/relayRun with npx, or in your serverThe relay that scripts and agents call and the browser dials out toserver
@extension-use/mcpRun by your MCP clientA paired browser's actions as MCP tools for AI agentsserver
@extension-use/testingYour app (dev)createMockHost() for unit tests, and Playwright fixtures that load your real extensiondev only
create-extension-useRun oncenpm create extension-use: the wxt, plain and vanilla templatesn/a

Which ones do I need? ​

You want to…Packages
Drive the extension from a web app in its side panelhost + client
Drive it from your website in a normal tabhost + client
Drive it from scripts, servers or CIhost (with remote on) + relay + client (or plain HTTP)
Let an AI agent use the browserhost (with remote on) + relay + mcp
Build the extension with WXTadd wxt
Test your controller codeadd testing
Start from scratchcreate-extension-use

All packages share one version and are released together. They are MIT-licensed.

The SDK packages are released under the MIT license.