it0/it0-web-admin/src/app/(admin)
hailin 7d5840c245 feat(openclaw): Phase 1 — server pool + agent instance deployment infrastructure
## inventory-service
- New: pool_servers table (public schema, platform-admin managed)
- New: PoolServer entity, PoolServerRepository, PoolServerController
- CRUD endpoints at /api/v1/inventory/pool-servers
- Internal /deploy-creds endpoint (x-internal-api-key protected) for SSH key retrieval
- increment/decrement endpoints for capacity tracking

## agent-service
- New: agent_instances table (tenant schema)
- New: AgentInstance entity, AgentInstanceRepository, AgentInstanceController
- New: AgentInstanceDeployService — SSH-based docker deployment
  - Queries pool server availability from inventory-service
  - AES-256 encrypts OpenClaw gateway token at rest
  - Allocates host ports in range 20000-29999
  - Fires docker run for it0hub/openclaw-bridge:latest
  - Async deploy with error capture
- Added ssh2 dependency for SSH execution
- Added INVENTORY_SERVICE_URL, INTERNAL_API_KEY, VAULT_MASTER_KEY to docker-compose

## openclaw-bridge (new package)
- packages/openclaw-bridge/ — custom Docker image
- Two processes via supervisord: OpenClaw gateway + IT0 Bridge (Node.js)
- IT0 Bridge exposes REST API on port 3000:
  GET /health, GET /status, POST /task, GET /sessions, GET /metrics
- Connects to OpenClaw gateway at ws://127.0.0.1:18789 via WebSocket RPC
- Sends heartbeat to IT0 agent-service every 60s
- Dockerfile: multi-stage build (openclaw source + bridge TS compilation)

## Web Admin
- New: /server-pool page — list/add/edit/delete pool servers with capacity bars
- New: /openclaw-instances page — cross-tenant instance monitoring with status filter
- Sidebar: added 服务器池 (Database icon) + OpenClaw 实例 (Boxes icon) to platform_admin nav

## Flutter App
- my_agents_page: rewritten to show real AgentInstance data from /api/v1/agent/instances
- Added AgentInstance model with status-driven UI (running/deploying/stopped/error)
- Status badges with color coding + spinner for deploying state
- Summary chips showing running vs stopped counts
- api_endpoints.dart: added agentInstances endpoint

## Design docs
- OPENCLAW_INTEGRATION_PLAN.md: complete architecture document with all confirmed decisions

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-07 11:11:21 -08:00
..
agent-config fix(web-admin): guard all data?? [] against non-array API responses 2026-03-07 08:37:11 -08:00
app-versions feat(web-admin): add App Version Management page for IT0 App 2026-03-06 04:51:19 -08:00
audit fix(web-admin): fix remaining data ?? [] patterns missed by batch fix 2026-03-07 08:40:48 -08:00
billing feat(billing): add CNY overage rate field and auto-detect currency from locale 2026-03-07 02:18:25 -08:00
communication fix(web-admin): guard all data?? [] against non-array API responses 2026-03-07 08:37:11 -08:00
dashboard feat: add multi-language (i18n) support to web admin with Chinese and English 2026-02-22 04:56:04 -08:00
monitoring fix(metrics): guard toFixed() calls against undefined/null values 2026-03-07 09:34:05 -08:00
my-org feat(org): add tenant user management + invite system + fix tenant display 2026-03-07 08:50:39 -08:00
openclaw-instances feat(openclaw): Phase 1 — server pool + agent instance deployment infrastructure 2026-03-07 11:11:21 -08:00
runbooks fix(web-admin): fix remaining data ?? [] patterns missed by batch fix 2026-03-07 08:40:48 -08:00
security fix(web-admin): guard all data?? [] against non-array API responses 2026-03-07 08:37:11 -08:00
server-pool feat(openclaw): Phase 1 — server pool + agent instance deployment infrastructure 2026-03-07 11:11:21 -08:00
servers fix(web-admin): fix remaining data ?? [] patterns missed by batch fix 2026-03-07 08:40:48 -08:00
sessions/[id] fix(web-admin): guard all data?? [] against non-array API responses 2026-03-07 08:37:11 -08:00
settings refactor: remove Speechmatics STT integration entirely, default to OpenAI 2026-03-03 04:58:38 -08:00
standing-orders fix(web-admin): fix remaining data ?? [] patterns missed by batch fix 2026-03-07 08:40:48 -08:00
tenants fix(web-admin): guard all data?? [] against non-array API responses 2026-03-07 08:37:11 -08:00
terminal fix(web-admin): guard all data?? [] against non-array API responses 2026-03-07 08:37:11 -08:00
users fix(web-admin): guard all data?? [] against non-array API responses 2026-03-07 08:37:11 -08:00
layout.tsx fix: store tenant slug (not UUID) in current_tenant; remove plan trial periods 2026-03-07 09:01:21 -08:00