Warning
This package is currently unstable. Breaking changes will occur.
A deterministic application shell for plugin-driven desktop and mobile interfaces: a core Workbench that orchestrates plugin lifecycle, commands, modals, screens, and tools, plus a React shell that renders them into an icon bar, sidebars, screen host, and modal host.
It aims at the 80% case: register contributions from plugins and get a working shell, then reach for the core class directly when you need to integrate with another runtime.
npm i @artisansdk/workbench
pnpm add @artisansdk/workbench
yarn add @artisansdk/workbench
bun add @artisansdk/workbenchimport { Workbench, Plugin } from "@artisansdk/workbench"
import { Shell, CommandPalettePlugin } from "@artisansdk/workbench/react"
function HomeScreen() {
return <div>Home</div>
}
class HomePlugin extends Plugin {
readonly id = "home"
register(workbench: Workbench) {
workbench.screen({ id: "home", component: HomeScreen })
workbench.activity({ id: "home", label: "Home", icon: <span>H</span>, activates: { screen: "home" } })
}
boot(workbench: Workbench) {
workbench.activate("home")
}
}
const workbench = new Workbench()
.use(new HomePlugin())
.use(new CommandPalettePlugin())
.boot()
export default function App() {
return <Shell workbench={workbench} />
}Full guides and API reference: artisansdk.github.io/workbench
- Getting Started
- Core Concepts — Plugin Lifecycle, Workbench API, React Shell
- Built-In Plugins — CommandPalette, CloseModalHotkey
- Events — Naming, Dispatching, Listening, Bus
- Common Patterns
- Config
bun install
mdbook serve docsCopyright (c) 2026 Artisan Made, Co and Joseph Raub
This package is released under the MIT license. Please see the LICENSE file distributed with every copy of the code for commercial licensing terms.