Files
HexaHost-GameCloud/docs/IMPLEMENTATION_STATUS.md
smueller 49a98ee31d
Some checks failed
CI / Node — lint, typecheck, test, build (push) Failing after 9s
CI / Go — node-agent tests (push) Failing after 8s
CI / Go — edge-gateway build (push) Successful in 13s
Phase6
2026-06-26 13:11:28 +02:00

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)

  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