Open Web Desktop (OWD) is a framework designed to provide a simple environment for building web-based desktop experiences. It's built with Vue.js & TypeScript, and it leverages the extensible Nuxt.js architecture.
Demo Β· Community Β· Documentation
- Fully extendable through apps, modules and themes
- Bundled with popular libraries like Pinia and VueUse
- Designed to make the most of the Nuxt.js ecosystem
- Can support any UI kit as PrimeVue, Vuetify and Quasar
- Fully localizable with nuxt-i18n support
desktop/β dev desktop (workspace apps, modules, themes). Usepnpm run devfrom the repo root.template/β scaffold copied bynpm create owd/pnpm desktop init.
Do not edit by hand; regenerate withpnpm desktop template(orpnpm template:sync) after changing the starter desktop or publishing@owdproject/*packages. Blueprint sources live inpackages/core/template-blueprint/.
We recommend cloning the monorepo workspace to develop and build with Open Web Desktop.
Tip
Feeling adventurous? You can bootstrap a standalone client project from the latest template using our installer:
npm create owdNote: This installation method is currently a Work in Progress (WIP). Once the framework reaches a fully stable release, bootstrapping will become the recommended standard.
Clone the monorepo to your machine:
git clone https://github.com/owdproject/client.git
cd clientInstall the project dependencies using pnpm:
pnpm installRun the dev server directly:
pnpm run devOr start the control panel (TUI) to manage packages and logs:
pnpm run desktop(Press d in the control panel to toggle the dev server).
Open Web Desktop is designed to scale via modular extension packages. You can customize your workspace using three dedicated package types:
| Type | Description | Directory | Discovery Tag |
|---|---|---|---|
| Apps | User-facing desktop application programs | apps/ |
owd-apps |
| Modules | Nuxt/Vue plugins and backend integrations | packages/ |
owd-modules |
| Themes | Window manager styles and workspace skins | themes/ |
owd-themes |
The OWD CLI makes it easy to install, import, and configure packages automatically.
To add a new application (e.g., a Todo app):
pnpm desktop add app-todoThis command clones or copies the package into apps/app-todo and automatically registers it in the local desktop/desktop.config.ts config.
To add a module (e.g., Pinia state persistence):
pnpm desktop add module-persistenceTo add a theme (e.g., a GNOME look-and-feel package):
pnpm desktop add theme-gnomeInstall packages directly from npm or from custom repository forks:
# Install directly from the npm registry
pnpm desktop add app-todo --npm
# Clone from a specific GitHub user fork
pnpm desktop add module-persistence --from github-usernameFor developers building reusable packages (e.g., publishable apps or themes in isolation), OWD supports playground builds using nuxt-module-build.
- Learn more about the playground setup in docs/agents/OWD_APP_MODULE_PLAYGROUND.md.
- Reference examples: app-about and app-wasmboy.
To view all available commands and options for the OWD CLI, run:
pnpm desktop --helpView complete CLI Help Menu
desktop β add apps, modules, and themes to your Open Web Desktop
USAGE
desktop Open the control panel (interactive TUI)
desktop dev [--playground] Start dev server (auto-detects module playground)
CONTROL PANEL (TUI)
m Open command menu (all actions)
s Start the Nuxt dev server
x Stop the Nuxt dev server
R Reboot the Nuxt dev server (stop + start)
w Save catalog/theme changes to desktop.config.ts
1 / 2 / 3 Apps / Modules / Themes catalog tabs
o / O Cycle sort (o) or open sort picker (O)
i Open in-app docs (when module-docs is installed)
g Settings (GitHub user, SSH, trusted orgs)
r Refresh package list from GitHub (detects new modules)
b Run pnpm run generate
q / Esc Quit
desktop init [dir] Create a new OWD project (then opens the control panel)
desktop add <package> [options]
desktop add <kind> <name> [options]
desktop validate [path...] Check Nuxt module + playground layout
desktop template [--dry-run] [--check] Regenerate client/template/ (maintainers)
TEMPLATE (monorepo maintainers)
desktop template Write template/ from blueprint + desktop/ + latest npm versions
desktop template --dry-run Show planned @owdproject/* and starter versions
desktop template --check Fail if committed template/ differs (CI)
VALIDATE
desktop validate Validate cwd package, or all apps/themes/modules at repo root
desktop validate . Validate explicit package directory
desktop validate apps Validate every @owdproject/* module under apps/
--json Machine-readable output
--strict Treat warnings as failures
--smoke Run dev:prepare + nuxt build playground (slow, CI)
INSTALL SOURCES (control panel or CLI)
npm registry (default for desktop add)
--dev clone github.com/owdproject/<package>
--from <user> clone from GitHub user or full git URL (SSH supported)
EXAMPLES
pnpm desktop # control panel
pnpm desktop dev # monorepo desktop (from repo root)
cd apps/app-about && pnpm desktop dev # app-about playground
pnpm desktop dev --playground # force playground when cwd is in a module
desktop init my-desktop # scaffold + pnpm install + control panel
desktop add app-todo --npm
desktop add app-todo --dev
desktop add module-persistence --from dxlliv
KINDS (optional β inferred from the package name)
app app-* β apps/
module module-* β packages/ (kit-* and *-template are not listed in the control panel)
theme theme-* β themes/
OPTIONS
--playground Start the module playground dev server (when cwd is inside an @owdproject/* package with playground/)
--from <source> Git source (user, user/repo, or URL)
--branch <name> Git branch to clone
--npm Install from npm (default when --from is omitted)
--dev, --workspace Clone from github.com/owdproject/<package>
--protocol https|ssh With --from <user>, use HTTPS (default) or SSH clone URL
--dry-run Print the plan without changing anything
-h, --help Show this help
--from <source>
(omit) npm registry (default)
npm npm registry
owdproject Clone official repo (monorepo only)
<github-user> Clone github.com/<user>/<package> (your fork)
<user>/<repo> Explicit GitHub repo
<git-url> Full clone URL
LEGACY (still supported)
desktop install-app @owdproject/app-todo
β prefer: desktop add app-todo
Open Web Desktop is released under the MIT License.