# HexaHost GameCloud — Implementation Status Last updated: 2026-06-26 ## Current phase: Phase 6 — Multi-Node and queue ✅ ### Phase 6 completed | Area | Status | Notes | |------|--------|-------| | `@hexahost/scheduler` | Done | Node scoring, RAM/slot capacity, least-loaded placement | | Prisma start queue + node capacity | Done | `ServerStartQueueEntry`, `maxRamMb`, `platformRamMb`, `QUEUED`/`UNKNOWN` | | `@hexahost/contracts` phase 6 | Done | `nodes.ts`, queue schemas, extended server status | | Worker scheduler integration | Done | Provisioning uses `selectNodeForAllocation` | | Start queue | Done | API enqueue + worker tick dispatch | | Node health tick | Done | Heartbeat timeout → `UNREACHABLE`, servers → `UNKNOWN` | | Drain / maintenance | Done | Admin `POST /admin/nodes/:id/drain` and `/maintenance` | | Allocation release | Done | Released on provision failure | | Dev seed | Done | Second node `local-dev-2` for multi-node tests | ### Abnahmekriterium Phase 6 - [x] Scheduler distributes servers across eligible nodes (least loaded RAM) - [x] Resource reservation via `GameServerAllocation` + node RAM budget - [x] Start queue when node lacks capacity - [x] Drain excludes node from new allocations - [x] Maintenance mode blocks scheduling - [x] Node heartbeat loss marks servers `UNKNOWN` - [ ] Manual E2E with two agents on different nodes ### Local test (two nodes) 1. `pnpm db:seed` — note both enrollment tokens 2. Start agent 1 with `NODE_ID=...001` and agent 2 with `NODE_ID=...002` 3. Create several servers and start them — verify different `nodeId` in API responses 4. Saturate one node RAM (`maxRamMb` low) → next server lands on other node 5. `POST /admin/nodes/:id/drain` — new provisions skip drained node ### Known limitations - Offline migration not implemented (manual re-provision only) - No admin UI for nodes yet (API only) - Queue priority uses plan metadata placeholder (`priority=0`) - CPU overcommit not configurable yet --- ## Phase 5 — Software & add-ons ✅ Modrinth catalog, addon install/remove, SHA512 verify. --- ## Phase 4 — Worlds & backups ✅ --- ## Phase 3 — Console, files, settings ✅ --- ## Phase 2 — Single-Node Vertical Slice ✅ --- ## Phase 1 — Authentication ✅ --- ## Phase 0 — Monorepo foundation ✅ ### Next phase: Phase 7 — Idle shutdown and free tier - Player detection, auto-stop, quotas, credits, usage metering