Commit Graph

30 Commits

Author SHA1 Message Date
Haitao Pan
2ef144d572 fix(console): serve dashboard/dist via local python http.server (not npm/caddy)
Prebuilt runtime ships only dashboard/dist (no package.json) so npm run
preview ENOENT-crash-loops (254). console is a local-only static backend on
127.0.0.1:17000 (dashboard is a routerless SPA); serve it with python3
-m http.server on both Linux (console.service) and macOS (console.plist) —
no second caddy (avoids clashing with the system caddy on :80; console is
local-only and not proxied by default). Gate the apt caddy install on
caddy_enabled (true on public-IP Linux VPS for the bridge ingress; macOS
installs no caddy).

Verified: debian13 + ubuntu26.04 console.service active serving 17000=200;
macOS python3 serves the same dist locally.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-24 09:44:01 +08:00
Haitao Pan
3505ff1c31 fix(ai-workspace): deploy robustness on Debian13/Ubuntu26.04 (py3.13)
- setup-xworkspace-console.yaml:
  - xworkspace_console_user follows ansible_env.USER (was hardcoded ubuntu;
    mismatched home=/root on root connections -> systemd link 'src does not exist')
  - runtime apt task async/poll (xfce4 desktop install dropped the SSH session)
  - api_dir -> bin/ to match prebuilt runtime manifest (apiBinary: bin/xworkspace-api;
    was api/ -> 203/EXEC crash loop)
- roles/ai_agent_runtime/tasks/{main,docs,fonts,browser}.yml: apt lock_timeout
  (texlive/pandoc raced cloud-init/unattended-upgrades for the dpkg lock)

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-24 03:02:43 +08:00
Haitao Pan
e5fc29fa8a fix(console): download runtime from deterministic latest-runtime tag
The online runtime download used releases/latest/download, which GitHub
resolves to whichever release holds the 'Latest' flag. The console repo also
publishes offline-ai-workspace-* build releases that take that flag and carry
no console runtime asset -> HTTP 404 on the online/Debian path. Point at the
stable latest-runtime release (published by the console-runtime workflow) and
add a bounded download retry. The env-provided archive path still wins via the
existing when-guard, so offline/bundled installs are unaffected.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-23 14:19:03 +08:00
e7c96675ff feat(litellm): update model registrations and gateway configurations with API key gating 2026-06-23 11:04:21 +08:00
Haitao Pan
cdbfb2e92a feat(deploy): refactor XWorkmate and OpenClaw deployments to use offline GitHub Release tarballs 2026-06-19 19:50:06 +08:00
Haitao Pan
7613a848a2 fix: stop systemd user status service and timer before cleaning up repo directory to avoid race conditions 2026-06-19 12:16:13 +08:00
Haitao Pan
5facdd5331 fix: remove restrictive version check from stale xworkspace-console repo cleanup task 2026-06-19 12:01:40 +08:00
Haitao Pan
edc70fb658 fix: remove stale repo + depth=1 for clone; macOS browser/npm/agent_skills/role defaults compatibility 2026-06-19 11:37:33 +08:00
Haitao Pan
044a264256 feat: full macOS (Darwin) compatibility fixes for Ansible playbooks 2026-06-18 16:26:51 +08:00
Haitao Pan
7936f65485 Fix git safe.directory for console prefetch 2026-06-16 09:24:44 +08:00
Haitao Pan
c07d12b5fe feat: consume prebuilt workspace runtimes 2026-06-15 21:58:50 +08:00
Haitao Pan
2f4d3ad930 fix: make offline runtime reprovisioning stable 2026-06-15 15:12:56 +08:00
Haitao Pan
39dbb7b5f9 feat: allow packaged console source 2026-06-15 14:43:24 +08:00
Haitao Pan
3793143466 fix: wait safely for apt locks 2026-06-15 14:32:24 +08:00
Haitao Pan
3084ab7940 feat: deliver versioned AI Workspace Runtime 2026-06-14 13:19:44 +08:00
Haitao Pan
cd2d4b0046 fix: install caddy for workspace routes 2026-06-14 09:46:55 +08:00
Haitao Pan
4c330b7e1c fix: install go for workspace api 2026-06-14 09:27:59 +08:00
Haitao Pan
e2ae564745 feat: unify ai workspace deployment auth 2026-06-14 09:09:40 +08:00
Haitao Pan
4b7c52057d chore: unify xworkspace console service 2026-06-13 07:43:11 +08:00
Haitao Pan
c784b621f6 fix: add force=true to litellm systemd symlink to allow out-of-order creation 2026-06-12 19:33:43 +08:00
Haitao Pan
1f7d85b35d fix: patch tsconfig.json to ES2022 to support Array.at() during dashboard build 2026-06-12 19:27:48 +08:00
Haitao Pan
60269ee222 fix: replace local rsync with git clone for xworkspace-console dashboard to support public bootstrap scripts 2026-06-12 19:25:44 +08:00
Haitao Pan
56b33a3231 docs: update setup-ai-workspace-all-in-one.md TLDR and params 2026-06-12 16:47:46 +08:00
Haitao Pan
f424327cfb feat: add public_access control to xworkspace-console 2026-06-12 15:31:24 +08:00
Haitao Pan
2252d24708 fix: kill legacy http.server, reload systemd and start services after deploy 2026-06-09 20:40:46 +08:00
a421eb2e4f
xworkspace-portal.service: serve dashboard on port 17000 (#7)
* xworkspace-portal.service: use dashboard on port 17000

- Change portal service from python http.server:7000 to npm dev server:17000
- Update chrome app launcher to use port 17000
- Add dashboard source sync and npm install tasks
- Update portal URL and port variables

* production: build dashboard on target with npm run build, serve with npm run preview

- Add xworkspace_console_dashboard_local_src variable for local dashboard path
- Sync dashboard source from controller to target via rsync
- Build dashboard with npm install && npm run build on target
- Serve production build with npm run preview instead of dev
- Copy dist/ and package.json to portal directory for preview server

---------

Co-authored-by: Haitao Pan <manbuzhe2009@qq.com>
2026-06-09 19:54:24 +08:00
Haitao Pan
aee1f2b5d5 Ensure workspace user exists before provisioning 2026-06-08 18:40:26 +08:00
Haitao Pan
466cb29a1b Install ttyd from official release binary 2026-06-08 18:21:26 +08:00
Haitao Pan
b6d18f5944 Install Chrome source before workspace runtime packages 2026-06-08 18:13:53 +08:00
Haitao Pan
8c71b27112 feat(playbook): add xworkspace console runtime setup 2026-06-08 07:14:24 +08:00