简体中文 | English | 한국어 | Français | Deutsch | 日本語 | Русский | Español | Português | Italiano | Tiếng Việt | العربية
Ein Pixel-Büro-Dashboard für Multi-Agent-Kollaboration: Es zeigt live, was eure KI-Assistenten (OpenClaw, Lobster usw.) tun — wer aktiv ist, was „gestern“ passiert ist und wer online ist.
Dieses Repo ist eine Node.js / Express-Umsetzung von Star-Office-UI: gleiches Look-and-Feel und HTTP-Vertrag, damit bestehende Agenten wenig ändern müssen; das Backend ist für dauerhaften Betrieb gedacht.
Vier UI-Stile: Pixel, Soft, Mitternacht, Papier — Standard Pixel.

src/ statt einer Monolith-Datei.engines, only-allow, engine-strict, Prüfung in src/bootstrap/env-check.js).SIGTERM / SIGINT. GET /health, GET /ready nach Persistenz-Init.memory/ (GET /yesterday-memo).Node ≥ 20, pnpm ≥ 9 (pnpm installieren).
git clone https://github.com/wangmiaozero/Star-Office-UI-Node.git
cd Star-Office-UI-Node
pnpm install
pnpm start
Standard-URL: http://127.0.0.1:18791
Entwicklung mit Watch:
pnpm dev
Port belegt:
PORT=18792 pnpm start
Optional:
cp .env.example .env
SKIP_PNPM_CHECK=1 nur für Sonderfälle ohne pnpm — nicht für Produktion empfohlen.
docker compose up -d
Dann: http://127.0.0.1:18791
Haupt-Agent-Status:
pnpm set-state writing "Dokumentation"
Health:
curl -s http://127.0.0.1:18791/health curl -s http://127.0.0.1:18791/ready
GET /health — LivenessGET /ready — ReadinessGET /status — HauptstatusPOST /set_state — Status setzenGET /agents — AgentenlistePOST /join-agent — Gast beitretenPOST /agent-push — Gast-StatusPOST /leave-agent — Gast verlassenPOST /agent-approve / POST /agent-reject — Genehmigen/AblehnenGET /yesterday-memo — Memo aus memory/YYYY-MM-DD.mdGET /, /join, /invite — Seiten; statische Dateien unter /staticidle, writing, researching, executing, syncing, errorMapping:
working / busy / write → writingrun / running / execute / exec → executingsync → syncingresearch / search → researchingcurl -s -X POST http://127.0.0.1:18791/join-agent \
-H "Content-Type: application/json" \
-d '{
"name": "openclaw-agent-01",
"joinKey": "ocj_starteam02",
"state": "idle",
"detail": "just joined"
}'
curl -s -X POST http://127.0.0.1:18791/agent-push \
-H "Content-Type: application/json" \
-d '{
"agentId": "agent_xxx",
"joinKey": "ocj_starteam02",
"name": "openclaw-agent-01",
"state": "writing",
"detail": "working on current task context"
}'
curl -s -X POST http://127.0.0.1:18791/leave-agent \
-H "Content-Type: application/json" \
-d '{"agentId":"agent_xxx"}'
Empfohlen: beim Start join-agent → agentId speichern → Intervall-Push → beim Shutdown leave-agent → bei 403/404 Push stoppen und neu joinen oder alarmieren.
Wenn das Projekt hilft, freuen wir uns über einen Stern.
Made with ❤️ by wangmiaozero