# HexaHost GameCloud — Implementation Status Last updated: 2026-06-26 ## Current phase: Phase 3 — Console, files, settings ✅ ### Phase 3 completed | Area | Status | Notes | |------|--------|-------| | Go agent v0.3 | Done | Log stream, RCON commands, safe file I/O | | `@hexahost/contracts` phase 3 | Done | console, files, properties, players | | API NodeBridge | Done | Sync request/response over Redis | | API Console | Done | Token + WS `/api/v1/servers/:id/console/ws` | | API Files | Done | List, read, write with path validation | | API Properties | Done | GET/PATCH `server.properties` | | API Players | Done | Online list + whitelist | | API Restart | Done | `POST /servers/:id/restart?skip=true` | | Audit events | Done | console.command, file.write, properties.update | | Web server tabs | Done | Console, files, properties, players | | Unit tests | Done | Properties parser, path validation, route contracts | ### Abnahmekriterium Phase 3 - [x] Live console WebSocket (logs + commands when RUNNING) - [x] File manager (list/read/write, path sandbox) - [x] `server.properties` editor with restart option - [x] Player list + whitelist view - [x] Server management fully via web panel (no direct host access required) - [ ] Manual E2E validation (requires Docker + agent running locally) ### Local vertical slice ```bash pnpm dev:infra pnpm db:migrate # or db:push pnpm db:seed pnpm dev # Terminal 2 — Node Agent (requires Go + Docker) cd apps/node-agent set NODE_ID=00000000-0000-4000-8000-000000000001 set NODE_TOKEN=local-dev-enrollment-token-change-me-32chars set NODE_AGENT_PUBLIC_URL=ws://localhost:3001/api/v1/nodes/ws make run ``` 1. Create and start a server under `/servers/new` 2. Open **Console** tab — live logs, send commands via RCON 3. Open **Files** — browse server directory, edit files 4. Open **Properties** — change `server.properties`, optional restart 5. Open **Players** — online players and whitelist ### Known limitations - Console only when server status is `RUNNING`; files readable when `RUNNING` or `STOPPED`. - RCON via `rcon-cli` inside Minecraft container (itzg image). - File writes limited to server data directory; no upload/download archives yet (Phase 4). - Player management read-only (whitelist view); add/remove deferred. - Single-node only; no scheduler fairness yet. --- ## Phase 2 — Single-Node Vertical Slice ✅ | Area | Status | Notes | |------|--------|-------| | Prisma lifecycle models | Done | Allocations, server fields, node enrollment | | `@hexahost/contracts` servers | Done | Zod schemas for create/list/action | | API ServersModule | Done | CRUD, start/stop, BullMQ jobs | | API NodesModule | Done | WebSocket `/api/v1/nodes/ws`, Redis command bridge | | Worker provisioning | Done | Port allocation, Redis commands, response wait | | Go node-agent v0.2 | Done | WebSocket, Docker (`itzg/minecraft-server:java21`) | | Web server UI | Done | Create, list, detail, start/stop | | Migration | Done | `20260626140000_phase2_game_servers` | --- ## Phase 1 — Authentication ✅ Session cookies, register/login/logout, email verify, password reset, TOTP 2FA, recovery codes, audit baseline. See `docs/adr/0002-session-authentication.md`. --- ## Phase 0 — Monorepo foundation ✅ pnpm + Turborepo monorepo, PostgreSQL/Redis/MinIO/Mailpit compose, CI, ADRs. ### Next phase: Phase 4 — Worlds & backups - S3-compatible storage (MinIO) - World upload/download - Backup jobs and restore