AI Decision System
Replayable, offline-verifiable records for AI-assisted go/no-go decisions: experiment promotions, typed model answers and human-approved actions.
Easily build and sign lightweight desktop applications using web stacks, with Desktopr GitHub actions and a straightforward Node API.
Developer toolsRust · TypeScriptGitHub @suffroOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
Owners of public repositories under a personal GitHub account can sign in to verify ownership and manage the introduction themselves. No administrator approval is needed.
Sign in, generate a verification file, and commit it to this repository’s default branch within 30 minutes. Files on other branches or forks do not count. Then check the file below to manage the project without administrator approval. Keep the file to retain your access.
If needed, you will go to sign-in. After signing in, return here and press your chosen verification button again.
Run /nomorevibe verify in your project folder to verify ownership and manage the introduction yourself.
Verify in one minuteAsk about other verification options
Loading the full README. The saved excerpt is shown below.
Easily build and sign lightweight desktop applications using web stacks, with
Desktopr GitHub actions and a straightforward Node API.
Desktopr turns a web application into a native desktop app for Linux, Windows
and macOS. It is built on Tauri 2 and gives your web
code a typed JavaScript bridge to native features: files and dialogs, windows,
menus and context menus, tray, clipboard, notifications, global shortcuts,
deep links, autostart, diagnostics, networking and sandboxed WebAssembly
plugins.Read the full README ↗Easily build and sign lightweight desktop applications using web stacks, with Desktopr GitHub actions and a straightforward Node API.
Desktopr turns a web application into a native desktop app for Linux, Windows and macOS. It is built on Tauri 2 and gives your web code a typed JavaScript bridge to native features: files and dialogs, windows, menus and context menus, tray, clipboard, notifications, global shortcuts, deep links, autostart, diagnostics, networking and sandboxed WebAssembly plugins.
Desktopr is self-contained. It needs no account, backend or hosted service: you build it from this repository, on your machine or with GitHub Actions, and you ship the result yourself.
| Path | Contents |
|---|---|
src-tauri/ | Rust/Tauri runtime and native commands |
src-ts/ | TypeScript bridge injected into the app, and the SDK source |
sdk/ | The desktopr npm package for your web application (README) |
wasm/ | WASI plugin template and example modules (README) |
conf-templates/, scripts/ | Configuration generation for dev and production builds |
.github/workflows/build.yml | Cross-platform build, optional signing and releases |
.github/workflows/companion-release.yml | Signed Desktopr Companion release |
apps/companion/ | Desktopr Companion, a desktop app for trying the runtime and the bridge API |
docs/ | Documentation site (VitePress) published at desktopr.dev |
rustup), plus rustup target add wasm32-wasip1 for WASM pluginscargo install tauri-cli --version 2.11.1 --lockedjqlibwebkit2gtk-4.1-dev libgtk-3-dev libayatana-appindicator3-dev librsvg2-dev libssl-dev libxdo-dev build-essentialnpm ci
npm run dev
npm run dev bundles the bridge, generates the dev configuration and starts
cargo tauri dev. By default the window shows the bundled page in
src-tauri/standalone/. To wrap your own web app, set its URL:
APP_URL=http://localhost:5173 npm run dev
Only the origin of APP_URL is granted access to the native bridge.
APP_URL=https://app.example.com \
APP_VERSION=1.0.0 \
APP_IDENTIFIER=com.example.app \
MAIN_WINDOW_TITLE="Example" \
npm run build
Bundles are written to src-tauri/target/release/bundle/. Other options
(window size, deep link scheme, updater) are read from environment variables in
scripts/prod-conf.sh.
Run the build workflow from the Actions tab, or call it from another
workflow with uses: <owner>/<repo>/.github/workflows/build.yml@<ref>. It
builds the selected platforms, launches each app briefly as a smoke test, and
uploads the installers as workflow artifacts:
| Platform | Outputs |
|---|---|
| Linux | AppImage, .deb, .rpm |
| Windows | NSIS installer, optional MSIX |
| macOS | DMG |
Set release: true (with app_version) to also create a draft GitHub Release.
Nothing is uploaded anywhere else.
Signing is optional and uses only your repository secrets. Without them the build is unsigned; if a set is incomplete, the workflow fails before building.
| Purpose | Secrets |
|---|---|
| Windows code signing | WINDOWS_CERTIFICATE (base64 .pfx), WINDOWS_CERTIFICATE_PASSWORD |
| macOS code signing | APPLE_CERTIFICATE (base64 .p12), APPLE_CERTIFICATE_PASSWORD, APPLE_SIGNING_IDENTITY |
| macOS notarization | APPLE_ID, APPLE_PASSWORD (app-specific password), APPLE_TEAM_ID |
| Updater signatures | TAURI_SIGNING_PRIVATE_KEY, TAURI_SIGNING_PRIVATE_KEY_PASSWORD |
For the Microsoft Store or sideloading, provide the four msix_* identity
inputs from Partner Center to add an MSIX package to the Windows build.
Without Apple certificates the app is ad-hoc signed and not notarized, so Gatekeeper blocks it on first launch. Users can open System Settings → Privacy & Security and choose Open Anyway, or run:
xattr -dr com.apple.quarantine "/Applications/Your App.app"
The updater is off by default and is not compiled in. To enable it, host your own update manifest and provide both an HTTPS update endpoint and the updater public key; the configuration step then adds the updater config, artifacts and permissions.
update_endpoint and updater_public_key inputs
and the TAURI_SIGNING_PRIVATE_KEY secret. The workflow builds with the
updater Cargo feature.UPDATE_ENDPOINT and ED25519_PUBKEY for npm run prodconf,
then build with cargo tauri build --features updater from src-tauri/, with
TAURI_SIGNING_PRIVATE_KEY in the environment.See Tauri's updater guide for generating keys and the manifest format.
The full documentation lives in docs/ and is published at
desktopr.dev. Run it locally with npm run docs:dev,
or build the static site with npm run docs:build.
apps/companion/ is a SvelteKit app bundled into a Desktopr build with
frontend=companion (APP_FRONTEND=companion for npm run prodconf). It loads
any web app URL in the main window with the full bridge, and includes a bridge
playground. Releases are published by companion-release.yml with the notes in
apps/companion/RELEASE_NOTES.md, which
include the first-launch steps for each platform.
.github/workflows/ci.yml runs these on every push to main and every pull
request (Rust on Linux, Windows and macOS):
npm run typecheck # runtime and SDK TypeScript
npm run check:standalone # no hosted services, safe defaults, launchable entitlements
npm run check:private-deps # no private packages or credentials in manifests
npm run check:menu-contract # SDK menu schema matches the runtime
npm run check:bridge-permissions # bridge commands are registered and allowed; companion subset is intact
npm run test:bridge # bridge initialization, IPC argument names and SDK fallback
npm run test:config # generated configuration and capabilities for each scenario
npm run companion:check # companion svelte-check
npm run lint:rust # rustfmt and clippy with warnings as errors
npm run test:rust # Rust tests, including WASM modules run in the runtime host
See CONTRIBUTING.md. Please report vulnerabilities privately as described in SECURITY.md.
Licensed under the Apache License, Version 2.0.