ClawRouter Desktop is a local control plane for OpenClaw, Codex, Hermes, DeepSeek Harness (DSH), and Pi. The renderer never receives filesystem or process access; a sandboxed Electron preload exposes a narrow IPC API to the main process.
npm install
npm test
npm run typecheck
npm run build
npm startnpm run dist builds and packages the app with the pinned Codex bridge, DSH,
and Pi runtimes. ClawRouter itself is installed from the current npm release on
first use so the Desktop cannot ship an obsolete routing/plugin lifecycle.
Electron 44 embeds Node 24, so end users do not need a separate Node
installation. Hermes remains installed in Hermes' own Python environment.
The distribution command recreates runtime/node_modules from the committed,
frozen pnpm lockfile before packaging; local leftovers cannot affect a release.
Use npm run dist:release to produce the macOS ZIP uploaded to the Desktop
GitHub release.
Desktop reads Base, Solana, and payment-chain state from ~/.blockrun/.session,
~/.blockrun/.solana-session, and ~/.blockrun/.chain. On first use, an older
ClawRouter wallet under ~/.openclaw/blockrun/ is copied into the corresponding
Core files only when those files do not already exist. The legacy files are
retained for rollback; Desktop never overwrites an existing Core wallet.
Every adapter follows the same transaction:
- Snapshot the exact current configuration and permissions.
- Ensure the local proxy (and the Codex bridge when needed) is healthy.
- Apply only that agent's ClawRouter integration.
- Verify the resulting files and endpoint.
- Roll back the current attempt on any failure.
"Restore previous config" restores the original bytes and mode captured before the first Desktop-managed install. Cached runtime packages may remain on disk; they are inert and do not change the agent's configuration.
- ClawRouter OpenAI-compatible API:
http://127.0.0.1:8402/v1 - Codex Responses bridge:
http://127.0.0.1:8403/v1 - Model catalog and metadata:
http://127.0.0.1:8402/v1/models
Both services bind to loopback. Port 8402 must prove possession of a private Desktop token before it is reused. For newly spawned services, the supervisor also verifies that the listening process belongs to the child process tree; it never kills or trusts an unknown owner.
DSH is still a developer preview and does not publish official GitHub release
binaries. Installing its npm dependency graph at click time is too slow for a
credible one-click experience, so release builds pre-package its pinned runtime.
The adapter writes the current settings.yaml provider shape and the versioned
.credentials.yaml (version: 1, refs:) used by the official harness.