{"id":52015916,"url":"https://github.com/zj-john/openclaw-desktop","last_synced_at":"2026-07-31T21:30:22.626Z","repository":{"id":371251155,"uuid":"1299207461","full_name":"zj-john/openclaw-desktop","owner":"zj-john","description":null,"archived":false,"fork":false,"pushed_at":"2026-07-14T06:30:32.000Z","size":1718,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-07-14T07:25:09.576Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/zj-john.png","metadata":{"files":{"readme":"README.en.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":"AGENTS.md","dco":null,"cla":null}},"created_at":"2026-07-13T11:23:56.000Z","updated_at":"2026-07-14T06:22:22.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/zj-john/openclaw-desktop","commit_stats":null,"previous_names":["zj-john/openclaw-desktop"],"tags_count":3,"template":false,"template_full_name":null,"purl":"pkg:github/zj-john/openclaw-desktop","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zj-john%2Fopenclaw-desktop","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zj-john%2Fopenclaw-desktop/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zj-john%2Fopenclaw-desktop/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zj-john%2Fopenclaw-desktop/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/zj-john","download_url":"https://codeload.github.com/zj-john/openclaw-desktop/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zj-john%2Fopenclaw-desktop/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":36134848,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-07-20T02:08:10.276Z","status":"online","status_checked_at":"2026-07-31T02:00:06.731Z","response_time":112,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2026-07-31T21:30:21.975Z","updated_at":"2026-07-31T21:30:22.620Z","avatar_url":"https://github.com/zj-john.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"# openclaw-desktop\n\nDefault Chinese docs: [README.md](./README.md)\n\n`openclaw-desktop` is a zero-friction desktop wrapper for OpenClaw.\nThe goal is simple: install once, use immediately.\n\n\u003e **Repository**: [github.com/zj-john/openclaw-desktop](https://github.com/zj-john/openclaw-desktop)  \n\u003e **Download**: [Releases page](https://github.com/zj-john/openclaw-desktop/releases)\n\n## Why this project\n\n- Zero setup feeling: users install one desktop app, no manual dependency chain.\n- Offline-friendly: installer bundles an offline OpenClaw payload for weak/no-internet setups.\n- Faster onboarding: OAuth login is built in, and existing local auth can be reused.\n- China-friendly path: supports both OAuth and API-key routes for local providers/gateways.\n- Official capability preserved: users can open the official local OpenClaw page directly.\n- Cross-platform delivery: macOS, Windows, and Linux packages from one codebase.\n\n## Quick Start\n\n1. Download the package for your OS from [GitHub Releases](https://github.com/zj-john/openclaw-desktop/releases).\n2. Install and launch `openclaw-desktop`.\n3. Choose a login mode in onboarding:\n   - OAuth (Codex / Claude / Gemini / Qwen Portal)\n   - API Key (including OpenAI-compatible domestic endpoints)\n   - Local Ollama\n4. Start chatting and configuring models.\n\n## Windows Offline Installation\n\nGoal: keep first-run as close to one-click as possible for weak-network/offline users.\n\nTwo paths are now available on Windows:\n\n1. Automatic path (recommended)\n   - Install and launch `openclaw-desktop`.\n   - On first bootstrap, the app tries bundled offline payload first.\n   - If bundled payload is missing/incomplete, it auto-downloads and extracts `openclaw-desktop-windows-portable.zip`, then continues install.\n2. Manual path (fallback)\n   - Click `Install from Portable Zip` on the bootstrap page.\n   - Pick your downloaded `openclaw-desktop-windows-portable.zip`.\n   - The app extracts/installs the offline payload and continues bootstrap.\n\nWhy Windows can still fail to include payload inside setup:\n\n- In the Windows packaging pipeline, resource embedding can be unstable (symptom: `openclaw-bundle` missing in installer output).\n- To keep users unblocked, runtime auto-download fallback and manual portable selection are both supported, with no extra CLI setup required.\n\n### Verify Windows portable install (dev/CI)\n\nThis script validates that the Windows portable zip can bootstrap OpenClaw offline:\ndownload/extract payload → offline install → start gateway → verify local page reachable.\n\n```bash\nnpm run test:windows-portable\n\n# verify a local zip you already downloaded\nnpm run test:windows-portable -- C:\\\\path\\\\to\\\\openclaw-desktop-windows-portable.zip\n```\n\n## In-App Updates (auto-detect + one click)\n\nThe app now includes a built-in updater control in the header:\n\n- It silently checks for updates after startup.\n- When a newer version is found, users get an `Update \u0026 Relaunch` button.\n- Clicking it downloads, installs, and relaunches the app without reinstalling a new package manually.\n\n### One-time setup\n\n1. Generate updater signing keys:\n\n```bash\nnpx tauri signer generate -w .tmp/updater/tauri-updater.key\n```\n\n2. Put the generated public key into `src-tauri/tauri.conf.json` at `plugins.updater.pubkey`.\n3. Configure GitHub repository secrets:\n   - `TAURI_SIGNING_PRIVATE_KEY`: private key content\n   - `TAURI_SIGNING_PRIVATE_KEY_PASSWORD`: private key password (if set)\n4. Publish a tag (for example `v0.2.0`). CI will automatically:\n   - build installers\n   - generate `latest.json`\n   - upload all assets to GitHub Release (used by in-app update checks)\n\n## Development\n\n### Run frontend\n\n```bash\nnpm install\nnpm run dev\n```\n\n### Run desktop app in dev mode\n\n```bash\nnpm run tauri:dev\n```\n\n### Build installers (with offline payload)\n\n```bash\nnpm run tauri:build\n```\n\nSkip offline payload preparation for faster local iteration:\n\n```bash\nOPENCLAW_DESKTOP_SKIP_BUNDLE_PREP=1 npm run tauri:build\n```\n\n### Offline smoke test (local Codex + official page)\n\n```bash\nnpm run test:offline-local-codex-ui\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fzj-john%2Fopenclaw-desktop","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fzj-john%2Fopenclaw-desktop","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fzj-john%2Fopenclaw-desktop/lists"}