2.4 KiB
2.4 KiB
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
- Scheduler distributes servers across eligible nodes (least loaded RAM)
- Resource reservation via
GameServerAllocation+ node RAM budget - Start queue when node lacks capacity
- Drain excludes node from new allocations
- Maintenance mode blocks scheduling
- Node heartbeat loss marks servers
UNKNOWN - Manual E2E with two agents on different nodes
Local test (two nodes)
pnpm db:seed— note both enrollment tokens- Start agent 1 with
NODE_ID=...001and agent 2 withNODE_ID=...002 - Create several servers and start them — verify different
nodeIdin API responses - Saturate one node RAM (
maxRamMblow) → next server lands on other node 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