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
| Term | Meaning | Anchor |
|---|---|---|
| Devframe | The product: a framework-neutral foundation for building a devtool once and running it everywhere. | — |
devframe | The npm package the foundation ships as. | devframe |
| a devframe | One tool: a definition plus its SPA, mountable anywhere. | defineDevframe(), DevframeDefinition |
| built-in devframe | A 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-* |
| adapter | A deployment entry point under devframe/adapters/*: cli (cac), dev, build, vite, embedded, mcp. | devframe/adapters/* |
| framework kit | Framework conventions over the standard handler, each split into a /single and a /hub scope. | @devframes/vite, @devframes/nuxt, @devframes/next |
| opt-in package | A capability shipped as its own package and added when needed. | @devframes/json-render |
| hub | The composition layer that puts many devframes behind one handler; a hub is one initHub() instance. | @devframes/hub, initHub() |
| hub UI provider | A 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.
| Term | Meaning | Anchor |
|---|---|---|
| node side | The half of a devframe running in the Node process. | setup(ctx) |
| host framework | The 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 server | The standalone HTTP server the dev adapter starts. | createDevServer() |
| side-car server | The separate RPC/WebSocket process used when a host framework's handlers never see upgrade requests. | — |
| hosted / standalone adapters | The two mount contexts: hosted adapters (vite, embedded) default the base path to /__<id>/; standalone adapters (cli, build) default to /. | resolveBasePath() |
| workspace scope | Committable per-repository storage. | DevframeStorageScope |
| project scope | Per-checkout storage, gitignored. | DevframeStorageScope |
| global scope | Per-user storage. | DevframeStorageScope |
Browser side
| Term | Meaning | Anchor |
|---|---|---|
| browser side | The half of a devframe running in a page. | devframe/client |
| user app | The application being developed and inspected. | — |
| host page | The browser document where the client runtime boots — in dev, usually the user app's own page. | — |
| client runtime | The headless runtime booted once per host page: it connects RPC, assembles the client context, and imports client scripts. | createDevframeClientRuntime() |
| client context | The shared object client scripts receive: panel, docks, commands, when-clauses. | DevframeClientContext |
| client script | A dock entry's script, imported into the host page by the client runtime. | clientScript |
| page script | A 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 client | The typed connection a browser surface gets. | connectDevframe() |
| SPA | A devframe's built web interface; clientAssets says where it lives. | clientAssets |
| panel | A devframe's SPA as a rendered surface — in a dock panel or standalone. | — |
| surface | Any rendered browser view: a panel, a dock iframe, a standalone SPA. | — |
| external viewer | A cross-origin surface (a browser extension, a separate devtools page) connecting from its own origin. | registerDevframeViewerOrigin() |
| coding agent | An agent consuming a devframe over MCP — the only agent in these docs. | createMcpServer() |
Hub
| Term | Meaning | Anchor |
|---|---|---|
| mounted devframe | A devframe served inside a hub under <base><id>/. | initHub({ devframes }) |
| dock entry | A registry item: iframe, launcher, custom-render, group, or json-render. | ctx.docks |
| dock rail | The bar listing every mounted tool. | — |
| dock panel | The open drawer rendering the active dock entry. | — |
Communication paths
Three distinct paths connect the pieces; each has its own name.
| Path | Between | Transport |
|---|---|---|
| RPC | browser side ↔ node side | WebSocket or static snapshot, via connectDevframe() |
| client context | client scripts ↔ client runtime | a shared object inside the host page |
| in-page channel | page script ↔ panel | same-origin, entirely in-browser — a handshaken MessageChannel port per panel, via devframe/in-page-channel |
References
Lookup pages the guides link into: the canonical terms, the when-clause contexts, and every event name on the wire.
When Clauses
When clauses gate visibility and executability of docks, commands, and custom UI via VS Code's when-clause contexts. The evaluator whenexpr re-exports at devframe/utils/when.