Terms

The canonical vocabulary of these docs: one name per concept, the API or package that anchors it, and how the pieces talk to each other.

Every concept in these docs has exactly one name. This page fixes that vocabulary — when a term below appears anywhere in the documentation, it carries the meaning defined here.

Core

TermMeaningAnchor
DevframeThe product: a framework-neutral foundation for building a devtool once and running it everywhere.
devframeThe npm package the foundation ships as.devframe
a devframeOne tool: a definition plus its SPA, mountable anywhere.defineDevframe(), DevframeDefinition
built-in devframeA ready-to-run devframe shipped from this repo (data inspector, inspect, OG, a11y, git, terminals, code-server, assets). The plugin- npm prefix only sets these packages apart from core packages — Devframe has no plugin concept.@devframes/plugin-*
adapterA deployment entry point under devframe/adapters/*: cli (cac), dev, build, vite, embedded, mcp.devframe/adapters/*
framework kitFramework conventions over the standard handler, each split into a /single and a /hub scope.@devframes/vite, @devframes/nuxt, @devframes/next
opt-in packageA capability shipped as its own package and added when needed.@devframes/json-render
hubThe composition layer that puts many devframes behind one handler; a hub is one initHub() instance.@devframes/hub, initHub()
hub UI providerA hub UI implementation: the node-side ui slot plus the browser-side context contract. @devframes/hub-ui is the reference hub UI provider.initHub({ ui })

Node side

A devframe has two halves: the node side registers RPC functions and owns state; the browser side renders and calls them.

TermMeaningAnchor
node sideThe half of a devframe running in the Node process.setup(ctx)
host frameworkThe environment a devframe or hub mounts into: a Vite dev server, a Next.js app, a Hono server. Named forms — the Vite host, a Next.js host — refer to a specific one.DevframeHost
dev serverThe standalone HTTP server the dev adapter starts.createDevServer()
side-car serverThe separate RPC/WebSocket process used when a host framework's handlers never see upgrade requests.
hosted / standalone adaptersThe two mount contexts: hosted adapters (vite, embedded) default the base path to /__<id>/; standalone adapters (cli, build) default to /.resolveBasePath()
workspace scopeCommittable per-repository storage.DevframeStorageScope
project scopePer-checkout storage, gitignored.DevframeStorageScope
global scopePer-user storage.DevframeStorageScope

Browser side

TermMeaningAnchor
browser sideThe half of a devframe running in a page.devframe/client
user appThe application being developed and inspected.
host pageThe browser document where the client runtime boots — in dev, usually the user app's own page.
client runtimeThe headless runtime booted once per host page: it connects RPC, assembles the client context, and imports client scripts.createDevframeClientRuntime()
client contextThe shared object client scripts receive: panel, docks, commands, when-clauses.DevframeClientContext
client scriptA dock entry's script, imported into the host page by the client runtime.clientScript
page scriptA devframe's script running in the user app's page — loaded as a client script or standalone. The a11y page script runs axe-core.
RPC clientThe typed connection a browser surface gets.connectDevframe()
SPAA devframe's built web interface; clientAssets says where it lives.clientAssets
panelA devframe's SPA as a rendered surface — in a dock panel or standalone.
surfaceAny rendered browser view: a panel, a dock iframe, a standalone SPA.
external viewerA cross-origin surface (a browser extension, a separate devtools page) connecting from its own origin.registerDevframeViewerOrigin()
coding agentAn agent consuming a devframe over MCP — the only agent in these docs.createMcpServer()

Hub

TermMeaningAnchor
mounted devframeA devframe served inside a hub under <base><id>/.initHub({ devframes })
dock entryA registry item: iframe, launcher, custom-render, group, or json-render.ctx.docks
dock railThe bar listing every mounted tool.
dock panelThe open drawer rendering the active dock entry.

Communication paths

Three distinct paths connect the pieces; each has its own name.

PathBetweenTransport
RPCbrowser side ↔ node sideWebSocket or static snapshot, via connectDevframe()
client contextclient scripts ↔ client runtimea shared object inside the host page
in-page channelpage script ↔ panelsame-origin, entirely in-browser — a handshaken MessageChannel port per panel, via devframe/in-page-channel