deskos
v1.0.0
Published
Run trusted Deno Desktop apps directly from public GitHub repositories
Maintainers
Readme
Deskos
Deskos runs trusted Deno Desktop applications directly from public GitHub source repositories.
npx deskos lukejacksonn/snakeOn first run, Deskos resolves the repository's default branch to an exact commit, validates its manifest, shows every requested Deno permission, asks for approval, clones that immutable revision, compiles it locally with a pinned Deno/CEF runtime, and launches it. Later runs offer updates when the default branch moves.
[!IMPORTANT] Deskos is for source code you trust. Deno permissions reduce accidental access, but
runandffican escape the Deno sandbox. Deskos gives both permissions an especially prominent warning.
Repository contract (policy v1)
V1 accepts public GitHub repositories whose root contains:
deno.jsonordeno.jsonc- An explicit string
exportsentrypoint - An explicit
desktopblock - A committed
deno.lock - An optional named
permissions.deskospermission set
{
"name": "snake",
"version": "1.0.0",
"exports": "./main.ts",
"desktop": {
"app": { "name": "Snake" }
},
"permissions": {
"deskos": {
"net": ["example.com"]
}
}
}Every app can read and write its own persistent data directory. Additional permissions use the standard Deno named-permission syntax. Relative filesystem paths are resolved from that app-data directory.
See examples/hello for a minimal compatible application. Deskos denies runtime remote imports unless the app explicitly declares an import permission.
Static, lockfile-verified dependencies are resolved while the app is compiled. Deskos preflights Deno's module graph and rejects host-local imports outside the reviewed repository snapshot. As with Deno itself, scoped filesystem permissions are not an operating-system sandbox (notably around links), which is another reason to run only trusted source.
Deskos policy v1 intentionally rejects framework auto-detection, custom build tasks, private repositories, Git submodules, Git LFS, symlinks, deep links, and app-controlled update or signing configuration.
Pinned runtime
Policy v1 uses Deno 2.9.4, CEF 149.0.5, and Chromium 149.0.7827.197. The complete runtime tuple is shown at every install/update approval. Deskos verifies the official Deno archive checksum; pinned Deno verifies its matching desktop backend downloads.
Commands
deskos <owner/repo> [--offline] Install, update, or run an app
deskos list List installed apps
deskos remove <owner/repo> Remove an installed app
deskos doctor Check the local environment
deskos --version Print the Deskos version
deskos --help Show helpGit must already be installed. Supported hosts are macOS x64/arm64, Windows x64, and Linux x64/arm64.
The first build also downloads Deno's pinned CEF backend. Depending on the platform, that download can be several hundred megabytes and the extracted build cache can be considerably larger.
Browser permissions
The embedded CEF renderer currently uses Chromium's normal browser and operating-system permission prompts. Deno Desktop does not yet expose the CEF permission handler needed for Deskos to enforce or pre-approve a permissions.browser policy, so v1 rejects that field rather than presenting it as enforced.
Storage
- macOS:
~/Library/Application Support/Deskos - Windows:
%LOCALAPPDATA%\\Deskos - Linux:
${XDG_DATA_HOME:-~/.local/share}/deskos
Source revisions, app data, runtimes, artifacts, approvals, and locks are stored separately. deskos remove preserves app data unless you explicitly approve deleting it.
Development
npm install
npm test
npm run build
# Optional real Deno/CEF compile (large first download)
npm run smoke:desktopDeskos is early software built on the experimental Deno Desktop feature. Review its output and the target repository before approving an app. Deskos validates the repository contract and enforces the approved runtime flags; it does not audit trusted source code, and local compilation is not a security boundary.
