個人 GitHub 帳號下公開儲存庫的擁有者可以登入並驗證所有權,自行管理介紹,無需管理員核准。
登入並產生驗證檔案,在 30 分鐘內將其提交至此儲存庫的預設分支。其他分支或分叉儲存庫中的檔案無效。然後在下方檢查檔案,即可無需管理員核准直接管理專案。請保留檔案以維持管理權限。
如需登入,將前往登入頁面。登入後請回到此處,再次點擊所選的驗證按鈕。
在專案資料夾中執行 /nomorevibe verify,即可驗證所有權並自行管理介紹。
一分鐘完成驗證Openclaw Manager
翻譯準備中
取自儲存庫 README
正在載入完整 README。
檢視完整 README ↗A desktop control UI for OpenClaw — a self-hosted AI agent gateway. Chat with your agents, build multi-agent teams, manage channels and models, schedule jobs, and configure plugins — for a local or remote gateway. Built with Electron, React, and TypeScript.
| Connect — local or remote gateway | Dashboard — quick-send, recent chats, live metrics |
| Agents — visual agent hierarchy | Talk — voice conversations |
TeamBlueprint (.team.json) is the durable source of truth, not the compiled graph.joaxclaw-fs plugin (on npm as
openclaw-joaxclaw-fs),
installable from the app in one click.See ROADMAP.md for where things are headed and CHANGELOG.md for release history.
Grab the latest build from the Releases page.
Linux (.deb):
sudo dpkg -i joaxclaw_*.deb
sudo apt-get install -f # pull in any missing dependencies
Launch JoaxClaw from your app menu or run joaxclaw.
macOS (.dmg) — the build is currently unsigned, so macOS blocks it on first
launch. Open System Settings → Privacy & Security → Open Anyway, or run:
sudo xattr -rd com.apple.quarantine /Applications/JoaxClaw.app
On first launch, enter your gateway URL and token:
ws://localhost:18789 for a local gateway (or your remote ws://…).openclaw doctor --generate-gateway-token.On a local install, Auto-fill from config reads credentials straight from
~/.openclaw/openclaw.json. Saved connections are backed up to a local file so a
browser-storage reset can't lose them.
For a remote gateway, install the joaxclaw-fs plugin on the host so Teams,
Processes, and engine health work over the connection — the app offers a one-click
Install via agent flow, or run it manually:
openclaw plugins install --force openclaw-joaxclaw-fs && openclaw plugins enable joaxclaw-fs && openclaw gateway restart
The renderer also builds as a plain web app you can install on a phone — same features, same gateway connection, no app store.
npm run build:web # static bundle → out/web
Serve out/web from anywhere your phone can reach, then open it and Add to Home
Screen. Two things to get right:
localhost) — a plain http://192.168.… origin won't do.
Tailscale Serve or any TLS-terminating reverse proxy in front of the bundle works..local, and .ts.net origins are
auto-accepted by the gateway; anything else has to be listed in
gateway.controlUi.allowedOrigins, or the connection is refused before scopes are
even considered.The phone pairs as its own device — it generates a non-extractable Ed25519 key and signs the connect challenge, so it never needs the desktop's token. On first connect the app shows the device id and waits; approve it on the host and it connects on its own:
openclaw devices approve --latest
Turn on Settings → Notifications to get an OS notification when a reply, reminder, or team/process run finishes while the app is backgrounded. Design notes and the scope research behind all of this: docs/mobile-companion.md.
npm install
npm run dev # hot-reload dev build (Electron)
npm run dev:web # the same renderer in a browser, for the PWA / mobile layout
npm run build # production build
npm run build:web # static web bundle → out/web (npm run preview:web to serve it)
npm run build:site # joaxclaw.ai landing page → out/site
npm run package:linux # build the .deb (npm run package:mac for the .dmg)
npm test, npm run lint, and npm run type-check run in the pre-commit hook (along
with a secret scanner). Stack: Electron 33 · React 18 · TypeScript · Vite ·
Tailwind CSS · Zustand.
Architecture notes live next to the code, e.g. src/lib/TEAMS.md
(team blueprint/compiled boundary) and
src/lib/LOCAL_ENGINES.md.
Bump version in package.json, update CHANGELOG.md, and push to main. GitHub
Actions creates the release and builds the Linux .deb + macOS .dmg. The
joaxclaw-fs plugin publishes to npm separately when its own version changes.
The joaxclaw.ai site is deployed by Vercel from this repo —
vercel.json runs npm run build:site and serves out/site. main is the production
branch; every other branch gets a preview deployment, so a site change can be reviewed on
a real URL before it's merged. Publishing a release also pings a deploy hook (if the
VERCEL_DEPLOY_HOOK secret is set) so the landing page's version label and file sizes
catch up.
This repository is private, so a release asset's GitHub URL needs credentials and answers 404 to everyone else. The site publishes the installers instead:
| URL | What it does |
|---|---|
joaxclaw.ai/download/mac | 302 → a short-lived signed URL for the latest .dmg |
joaxclaw.ai/download/linux | the same for the latest .deb |
joaxclaw.ai/api/release | version, release notes, and each installer's name and size |
api/download.mjs asks GitHub for the asset as application/octet-stream, which answers
302 with a signed release-assets.githubusercontent.com URL that needs no credentials,
and hands the visitor that redirect. The bytes come from GitHub's CDN and never pass
through Vercel, so there is nothing to mirror and no egress to pay for. Both paths always
mean the latest release, so publishing one is enough — no redeploy, no new links.
The app's own updater reads /api/release for the same reason; see
electron/main/updater.ts.
The Vercel project needs a RELEASES_TOKEN — a token with contents:read on this
repo, and nothing more. Without it /download/* answers 503 and /api/release reports
configured: false, which the release workflow checks for and fails on. GITHUB_TOKEN
is accepted as a fallback name, and RELEASES_REPO overrides which repo is read.
Issues and pull requests are welcome. Before opening a PR, please run
npm run lint && npm run type-check && npm test. For larger changes, open an issue first
to discuss the approach — the roadmap is intentionally lightweight and
shaped by real use.
MIT © Joaquin Ayuso.