Client & CLI

desktop CLI

pnpm desktop — control panel, dev, add, validate, init, template.

The desktop command is your primary interface for managing an OWD project from the terminal. It handles everything from environment setup and development to package installation and validation.

It ships in @owdproject/core (packages/core/bin/desktop.js). In the official client monorepo:

pnpm desktop          # same as: node ./packages/core/bin/desktop.js
owd is a deprecated alias for desktop. Use pnpm desktop in scripts and docs.

Control panel (default)

Running pnpm desktop with no subcommand opens the interactive TUI (control panel).

KeyAction
mCommand menu
sStart Nuxt dev server
xStop dev server
RRestart dev server
wSave catalog/theme changes to desktop.config.ts
dToggle User (npm) / Dev (git clone) install mode
gSettings (GitHub user for fork clones)
rRefresh package list from GitHub
bRun pnpm run generate
q / EscQuit

desktop dev

Start the dev server. Resolution depends on current working directory:

# From client monorepo root → reference desktop/
pnpm desktop dev

# From an app or theme package → that package’s playground/
cd apps/app-about
pnpm desktop dev

# Force playground even when cwd might resolve elsewhere
pnpm desktop dev --playground

Requires a Nuxt project with modules: ['@owdproject/core'] and desktop.config.ts.

desktop init

Scaffold a new OWD desktop project (uses the template blueprint), install dependencies, then open the control panel:

desktop init my-desktop
desktop init .          # current directory

Equivalent to npm create owd for new projects outside the monorepo.

desktop add

Install an app, theme, or extension module and register it in desktop.config.ts (and desktop/package.json when using the reference desktop).

desktop add app-todo
desktop add theme-nova
desktop add module-fs
desktop add module-persistence --npm

Optional kind prefix

desktop add app todo      # → @owdproject/app-todo
desktop add theme paper
desktop add module fs

Kinds are inferred from the name when omitted (app-*, theme-*, module-*).

Install sources (--from)

--fromBehaviour
(omit)npm registry (default)
npmnpm registry
owdprojectClone github.com/owdproject/<package> (monorepo dev)
<github-user>Clone github.com/<user>/<package>
<user>/<repo>Explicit GitHub repo
<git-url>Full clone URL

Other flags

FlagEffect
--npmForce npm (skip git)
--dev, --workspaceClone into apps/, themes/, or packages/ in the monorepo
--branch <name>Git branch to clone
--dry-runPrint plan only
-h, --helpUsage

Examples:

desktop add app-todo --npm
desktop add theme-paper --dev
desktop add module-persistence --from dxlliv

Legacy commands

Still supported; prefer desktop add:

desktop install-app @owdproject/app-todo   # → desktop add app-todo
desktop install-theme theme-nova
desktop install-module module-fs

desktop validate

Check that a package matches the OWD 3.4 module layout (exports, playground, peers, CI patterns).

desktop validate              # cwd package, or all apps/themes/modules at repo root
desktop validate .
desktop validate apps
desktop validate themes/theme-paper
FlagEffect
--jsonMachine-readable output
--strictWarnings fail the run
--smokeRun dev:prepare + nuxt build playground (slow, CI)

From the monorepo root:

pnpm validate:modules

Common checks

AreaExamples
Structuresrc/module.ts, src/runtime/, no duplicate root runtime/
Exportsexports["."].import, optional development./src/module.ts
Scriptsdev:prepare, prepack, validate, no prepare script
Register plugindefineDesktopApp, desktop-*-register, server guard
Playgrounddeps on your package + @owdproject/core, ssr: false, <Desktop />
Launch (optional)autoStartPlaygroundApps, no import.meta.dev guard
CI (standalone repos)client checkout overlay; avoid standalone nypm with workspace:*

Fix errors before npm publish. Warnings are recommended fixes (launch plugin, CI, centering). Full code list: core PLAYGROUND.md.

desktop template (maintainers)

Regenerate template/ (output of npm create owd) from the blueprint and reference desktop:

pnpm template:sync
# or
desktop template
desktop template --dry-run
desktop template --check    # CI: fail if template/ drifted

Monorepo pnpm scripts

These wrap the same tooling from the client root:

ScriptEffect
pnpm devnx run desktop:serve — reference desktop
pnpm generateProduction build of reference desktop
pnpm desktopControl panel / CLI
pnpm prepare:stubsStub-build kits, apps, themes
pnpm prepare:modulesStubs + dev:prepare on packages/apps/themes
pnpm prepare:appsdev:prepare for apps/*
pnpm prepare:themesdev:prepare for themes/*
pnpm template:syncdesktop template
pnpm validate:modulesdesktop validate

Prerequisites

  • pnpm at the version in the repo packageManager field
  • Desktop project with nuxt.config.tsmodules: ['@owdproject/core']
  • desktop.config.ts beside the Nuxt root

Manual install (no CLI): add the package with pnpm/npm, then edit desktop.config.ts — see Package linking.