A modular web framework for building IDE-like applications with a plugin architecture, AI integration, and workspace management.
Live example: https://app.kispace.de — deployed app built on Appspace.
┌─────────────────────────────────────────────────────────────┐
│ Applications (packages/app, or custom apps) │
│ – AppDefinition: id, extensions, contributions, render │
└─────────────────────────────────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────────────┐
│ App Loader (core) │
│ – App registration & lifecycle – Extension enable/disable │
│ – Contribution registration – Render app root │
└─────────────────────────────────────────────────────────────┘
│
┌─────────────────────┼─────────────────────┐
▼ ▼ ▼
┌───────────────┐ ┌─────────────────┐ ┌───────────────┐
│ Extensions │ │ Contributions │ │ Commands │
│ Registry │ │ Registry │ │ Registry │
│ (per-app) │ │ (tabs, toolbars)│ │ (handlers) │
└───────────────┘ └─────────────────┘ └───────────────┘
│ │ │
└─────────────────────┼─────────────────────┘
▼
┌─────────────────────────────────────────────────────────────┐
│ Core services │
│ Workspace · Settings · Editor registry · Tasks · Events · DI│
└─────────────────────────────────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────────────┐
│ UI (core) │
│ k-standard-app · k-tabs · k-toolbar · k-filebrowser · … │
└─────────────────────────────────────────────────────────────┘
| Path | Role |
|---|---|
packages/core (@kispace-io/core) |
Platform: registries, services, parts, widgets, dialogs, default UI contributions. No extension logic; extensions are separate packages. |
packages/extension-* |
One package per extension (e.g. extension-ai-system, extension-settings-tree, extension-monaco-editor). Each depends on core and registers commands/contributions/editors. |
packages/app |
Default app: imports core + extensions, defines AppDefinition and extensions[], registers with app loader. Use as template for your own app. |
| Root | Workspace root. Scripts: dev, build, build:app, test. |
- Apps — Implement
AppDefinition:id,name,version,extensions[], optionalcontributions,render(string tag,{ tag, attributes }, or Lit template),initialize/dispose. - Extensions — Register with
extensionRegistry; provide a loader that runs when the extension is enabled. Register commands, contributions, editors, services. - Contributions — Declarative UI: tabs (sidebars, editor area), toolbar buttons, HTML blocks. Targets include
SIDEBAR_MAIN,SIDEBAR_AUXILIARY,TOOLBAR_MAIN_RIGHT,TOOLBAR_BOTTOM_END, etc. - Commands — Id + handlers (with optional
canExecute). Toolbar/menus reference commands; AI and command palette can execute them.
- Node.js 18+
- npm or pnpm
git clone https://github.com/kispace-io/appspace.git
cd appspace
npm install
npm run devThis builds core, then starts the default app (Vite dev server). Open the URL shown in the terminal (e.g. http://localhost:5173).
npm run build # build core only
npm run build:app # build the default app (depends on core)- Use
packages/appas a template: copy it or add a new workspace package. - In your app entry (e.g.
main.ts):- Call
applyAppHostConfig({ packageInfo, marketplaceCatalogUrls })if you use marketplace. - Import the extensions you need (
@kispace-io/extension-*). - Call
appLoaderService.registerApp(appDefinition, { autoStart: true }).
- Call
- App definition — Minimal example (no Lit in app):
import { appLoaderService, type RenderDescriptor } from '@kispace-io/core';
appLoaderService.registerApp({
id: 'my-app',
name: 'My App',
version: '1.0.0',
extensions: ['system.commandpalette', 'system.settings-tree', 'system.ai-system'],
render: { tag: 'k-standard-app', attributes: { 'show-bottom-panel': 'true' } } satisfies RenderDescriptor,
}, { autoStart: true });- Add the app package to the root
package.jsonworkspaces and runnpm run devfrom the app package or via root scripts.
- Lit — Web components (core and extensions)
- TypeScript — Typed API
- WebAwesome — UI primitives
- Monaco — Code editor (extension)
- Vite — Build and dev server
Other extensions add: Pyodide, WebLLM, RxDB, Xenova transformers, etc.
- Repository: github.com/kispace-io/appspace
- License: EPL-2.0
Publishing of @kispace-io/core is done via GitHub Actions on version tags; see workflow and npm trusted publishing in the repo.