3.7 KiB
3.7 KiB
Open Threads – zlh-grind
This file tracks active but unfinished work.
Keep it short.
Agent (zlh-agent)
Dev Runtime System
Completed:
- catalog validation implemented
- runtime installs artifact-backed
- install guard implemented
Outstanding:
- runtime install verification improvements
- catalog hash validation
- runtime removal / upgrade handling
Dev Environment
Completed:
- dev user creation
- workspace root
/home/dev/workspace - console runs as dev user
Outstanding:
- PATH normalization
- shell profile consistency
- runtime PATH injection
Code Server Addon
Status: ✅ Installed and running inside dev containers
Confirmed:
- compiled release artifact fixed on
zlh-artifacts - install confirmed working
- process confirmed running inside container
- binds to
0.0.0.0:6000 - launched from
/opt/zlh/services/code-server
Port: 6000
Next session — agent change required:
code-server must be relaunched with:
--auth none
--base-path /api/dev/<vmid>/ide
Reason: API token is now the sole auth mechanism. Password prompt must be removed. Base path required for correct asset loading through proxy.
Dev IDE Access
Browser IDE (Implemented ✅)
Browser
↓
Portal
↓
API (/api/dev/:id/ide)
↓
container:6000
Implemented in API:
src/routes/devProxy.js— proxy route mounted insrc/app.jsGET /api/dev/:id/ideandGET /api/dev/:id/ide/*- ownership verification before proxying
ctype === "dev"required- WebSocket support via
http-proxy-middleware(ws: true) server.on('upgrade')handler wired
IDE token system implemented:
POST /api/dev/:id/ide-token— returns signed short-lived token- token payload:
sub,vmid,type: "dev-ide" - default TTL: 300 seconds
- env overrides:
API_AUTH_IDE_TTL_SECONDS,API_AUTH_IDE_SECRET - proxy accepts
Authorization: Beareror?token=<ide-token> - WebSocket upgrades validate same token
Local Dev Access (Headscale/Tailscale — Future)
Outstanding:
- confirm
zlh-ctlHeadscale server status - implement Tailscale addon install in agent
- API auth key generation
- portal setup instructions
Constraints:
magic_dns: false- no exit nodes
- no DNS takeover
Agent Future Work (priority order)
- Update code-server launch args (
--auth none,--base-path /api/dev/<vmid>/ide) - Structured logging (slog) for Loki
- Dev container provisioningComplete state
- Crash recovery backoff
- Graceful shutdown verification
- Process reattachment on agent restart
API (zpack-api)
Completed:
- dev provisioning payload
- runtime/version fields
- enable_code_server flag
GET /api/servers/:id/status— server status endpointPOST /api/dev/:id/ide-token— IDE token generationGET /api/dev/:id/ide— IDE proxy route with WebSocket support- dev routing experiment removed (
devRouting.js,devDePublisher.jsdeleted)
Outstanding:
- dev runtime catalog endpoint for portal
- Headscale auth key generation
Portal (zpack-portal)
Completed:
- dev runtime dropdown
- dotnet runtime support
- enable code-server checkbox
- dev file browser support
Outstanding:
- "Open IDE" button — calls
POST /api/dev/:id/ide-token, opens returned URL in new tab - Headscale setup instructions
Platform
Future work:
- Tailscale dev access
- artifact version promotion
- runtime rollback support
Closed Threads
- ✅ PTY console (dev + game)
- ✅ Mod lifecycle
- ✅ Upload pipeline
- ✅ Runtime artifact installs
- ✅ Dev container filesystem model
- ✅ Code-server artifact fix
- ✅ API status endpoint for frontend agent-state consumption
- ✅ Dev IDE proxy implementation (API proxy + token system)
- ✅ Dev DNS/Traefik routing experiment — removed