Repository navigation
Packages
ZenKit is a pnpm monorepo of five packages and four ComfyUI plugins. This page says what each one is for, who imports it, and which one you need.
| You are building… | Install |
|---|---|
| A ZenKit plugin: panels, apps, taskbar widgets, themes, capabilities |
@nynxz/zenkit-client (+ @nynxz/zenkit-ui for widgets) |
| A node pack with Vue widgets in node bodies, working with or without ZenKit |
@nynxz/zenkit-nodekit (dev) + @nynxz/zenkit-ui
|
| Only want the themed Vue components | @nynxz/zenkit-ui |
Only want the window.ZenKit types |
@nynxz/zenkit-client (it owns the contract; import type) |
A ZenKit plugin and a node pack differ in what happens without ZenKit installed:
| ZenKit plugin | Node pack | |
|---|---|---|
Talks to window.ZenKit through |
@nynxz/zenkit-client |
nodekit, which bundles the client code it needs (no client dependency) |
| Without ComfyUI-ZenKit |
registerZenPlugin runs its fallback, or does nothing |
Widgets render in the node; panels, slot links and the viewer degrade |
| Vue and zenkit-ui | Usually shared from the runtime (sharedRuntime: true) |
Bundled into the pack's main.js
|
| Start here | Your first plugin | Nodekit pack pattern |
See Working without ZenKit for the degradation rules.
| Package | Folder | On npm | What it is | Who imports it |
|---|---|---|---|---|
@nynxz/zenkit-client |
packages/client |
0.3.0 | The window.ZenKit contract (types) plus what adds value over it: fallbacks when ZenKit is absent, registerZenPlugin, Vue helpers, drag-and-drop helpers. |
ZenKit plugins; core and theme for types (import type); nodekit bundles part of it |
@nynxz/zenkit-ui |
packages/ui |
0.3.0 | 48 Vue components styled from --zen-* tokens. No window.ZenKit dependency. |
Plugins, node packs, core
|
@nynxz/zenkit-nodekit |
packages/nodekit |
0.3.0 | A node pack's frontend: pack identity, widget mounting, node registration, the Vite preset, ambient @comfy/* types, and the vendored Python helpers (zenkit-nodekit sync). |
Node packs (dev dependency); every in-repo plugin's vite.config.mts
|
@nynxz/zenkit-theme |
packages/theme |
no (private) | Token engine and theme-pack registry. |
core only |
@nynxz/zenkit-core |
packages/core |
no (private) | The runtime that installs window.ZenKit: panels, docks, workspaces, taskbar, theme bridge, bus, jobs, channels, apps, storage, backgrounds, viewer, capabilities, media, mask editor. |
plugins/ComfyUI-ZenKit only |
@nynxz/zenkit-client, @nynxz/zenkit-ui and @nynxz/zenkit-nodekit are at 0.3.0 on npm.
theme and core are private and ship only inside ComfyUI-ZenKit.
Peer dependencies:
| Package | Peers |
|---|---|
client |
vue ^3.5.0 |
ui |
vue ^3.5.0 |
nodekit |
vue ^3.5.0, plus optional vite ^6 || ^7 || ^8 and @vitejs/plugin-vue >=5 (for ./vite) |
core |
vue ^3.5.0 |
| Import | Gives you |
|---|---|
@nynxz/zenkit-ui |
Components, composables, types |
@nynxz/zenkit-ui/style.css |
The components' CSS |
@nynxz/zenkit-ui/comfy-bridge.css |
Maps ComfyUI's CSS variables onto --zen-*, for use without the runtime |
@nynxz/zenkit-nodekit |
Browser runtime (see Nodekit pack pattern) |
@nynxz/zenkit-nodekit/vite |
zenPluginConfig, zenRuntimeConfig, ZENKIT_RUNTIME (Node-only) |
@nynxz/zenkit-nodekit/comfy.d.ts |
Ambient @comfy/app and @comfy/api declarations (a build copy of packages/client/comfy.d.ts) |
@nynxz/zenkit-nodekit/tsconfig.pack.json |
A baseline tsconfig (see the tsconfig note in Nodekit pack pattern) |
graph LR
client -. types .-> theme
client -. types .-> core
client -. bundled .-> nodekit
theme --> core
ui --> core
core --> ZenKit[ComfyUI-ZenKit]
client --> plugins[Other in-repo plugins]
ui --> plugins
nodekit -. dev: vite preset .-> plugins
nodekit -. dev: vite preset .-> ZenKit
nodekit -. dev .-> packs[External node packs]
ui --> packs
Arrows point from a package to the things that import it.
-
coreandthemeimport only types fromclient(import type), so there is no runtime edge. -
uiis standalone at runtime: no imports from other ZenKit packages. -
nodekitbundles the client code it shares (whenZen,openViewer,mediaKind, the drag MIME types) into its own build, and ships the matching.d.tsfiles. External node packs therefore don't depend onclient.
| Plugin | Role | Details |
|---|---|---|
plugins/ComfyUI-ZenKit |
The host. Installs window.ZenKit, serves the shared runtime and has the built-in panels. |
Plugins |
plugins/ComfyUI-ZenInspector |
Install-wide debug panel | Plugins |
None of the plugins are npm packages. Every plugin except ComfyUI-ZenKit is built with
sharedRuntime: true, so it requires ComfyUI-ZenKit to be installed.
| Pack | Uses |
|---|---|
| ComfyUI-NynxzNodes | nodekit + ui: ~12 widgets, frontend-only nodes, LoRA picker, popout editor |
| ComfyUI-ZenCut | nodekit + ui: one widget (a video editor), media picker, popout editor |
Both are the reference for Nodekit pack pattern.
Getting started
Guides
- Panels and workspaces
- Apps and routing
- Themes
- Backgrounds
- Channels and media
- Jobs
- Capabilities
- Storage and bus
Node packs
UI components
Reference