--- title: Vue SDK description: Build OpenPencil-powered editors with headless Vue composables and primitives. --- # Vue SDK `@open-pencil/vue` exists so OpenPencil can be more than a standalone design app. The goal is to make OpenPencil a toolkit you can embed into other products, internal tools, and workflow-specific editors — not just a single default UI. The OpenPencil app is one composition of that toolkit. The SDK is how you build a different one. It gives you: - injected editor context - CanvasKit-backed canvas rendering - selection, commands, menu, property-panel, and variables composables - headless structural primitives like `PageListRoot`, `PropertyListRoot`, and `ToolbarRoot` - built-in i18n primitives for menus, panels, dialogs, and custom locale pickers ## Start here ## Why the SDK exists Different products and teams need different editing surfaces. Sometimes you want a full design editor. Sometimes you want a focused canvas inside another app. Sometimes you want an internal workflow tool, a template editor, or an AI-assisted editing surface built around a narrow use case. The SDK is the layer that makes those possible. ## Design principles - **Headless first**: logic and structure, not app styling - **Composable over wrapper**: use composables when there is no meaningful structural coordination - **Intentional public API**: stable exports from `packages/vue/src/index.ts` - **Framework-aware**: Vue integration over `@open-pencil/core` ## How to think about the package The SDK has two main layers: 1. **Composables** for editor state and actions 2. **Primitives** for meaningful UI structure If you only need editor state and actions, start with composables. If you are building reusable editor UI building blocks, start with primitives. ## API sections - [Components](/programmable/sdk/api/components/) - [Composables](/programmable/sdk/api/composables/) - [Advanced](/programmable/sdk/api/advanced/)