Gubernator Roadmap
This document tracks the development journey of Gubernator, divided into "Campaigns" (Phases).
Completed Phases
-
[x] Phase 1 — The Foundation ("Veni" Sprint) Go project setup, Gin REST API, Cobra CLI, Swagger integration, Dockerfile.
-
[x] Phase 1.5 — The Granaries SQLite state persistence via GORM. Full DB schema: Nodes, Stacks, Services, Tasks.
-
[x] Phase 2 — The Legion (Clustering)
legion init,legion join, Join Tokens (JWT), Node registration, Heartbeat system. -
[x] Phase 3 — The Command (Compose & Labels)
gbnt stack deploy— fulldocker-compose.ymlparser, placement constraints engine, scheduler MVP. -
[x] Phase 4 — The Watchtowers (Observability) OpenTelemetry metrics, Prometheus export,
/healthendpoint — all isolated on port 4002. -
[x] Phase 5.1 — The Executor (Docker Bridge) Worker-side container execution:
docker pull+docker runwith automatic task-ID labeling. -
[x] Phase 5.2 — The Aqueducts (Ingress & DNS) CoreDNS hosts file generation. Caddy
Caddyfileauto-generation fromingress.hostlabels. -
[x] Phase 6 — The Senate Mandate (Full CLI Parity) Complete CRUD for Nodes, Stacks, Services, and Tasks via CLI (
gbnt node ls/inspect/promote/demote/update,gbnt stack ls/rm,gbnt service ls/ps/scale/rm,gbnt task ls/rm). -
[x] Phase 7 — Security & Isolation Asymmetric port security: Bearer Token auth on
:4000, Basic Auth Web UI on:4001, public telemetry on:4002. CLI context management via~/.gbntctl/config. -
[x] Phase 8 — Universal Provisioning & Contexts CLI remote context management (
gbnt config use-context), cross-platform binaries (GitHub Actions CI/CD), Docker Hub image publishing. -
[x] Phase 9 — Full Compose Support (Single-Node Executor) Built-in local executor in the Manager: containers now run automatically on the Manager node without a separate Worker. Full
ports,environment,volumes, andcommandsupport passed through from Compose YAML todocker run. Properdocker stop + docker rmonstack rm. Task model extended withcontainer_namefor lifecycle management. -
[x] Phase 10 — Web UI Compose Editor Web Dashboard upgraded with: compose YAML editor, Save Changes, Save & Redeploy, Reset, Stack Redeploy button, real container stop (not just DB delete),
container_namecolumn in tasks table, status badges, toast notifications. -
[x] Phase 10.5 — Flutter Web UI & Security Hardening Complete Web Dashboard rewrite from plain HTML/JS to Flutter Web with Material Design 3. Added ⚙️ Settings gear icon with user profile, password change, and dark/light theme toggle. Native
gbnt healthCLI subcommand for Docker HEALTHCHECK (eliminating curl/wget/busybox dependencies). Container image hardened: base upgraded toalpine:edge,curlremoved,busyboxpatched (CVE-2025-60876),golang.org/x/netupgraded to v0.54.0. -
[x] Phase 11 — SRE Monitor (
gbnt monitor init) Built-in SRE observability stack with a single command.gbnt monitor initdeploys cAdvisor (container metrics), Prometheus (metrics collection), Grafana (dashboards with pre-configured datasources), Loki (log aggregation), and Promtail (log shipping) — all on a dedicated Docker network (gbnt-monitor-net).gbnt monitor statusandgbnt monitor stopfor lifecycle management. Config files auto-generated in~/.gbnt/monitor/.
Upcoming Development
-
[ ] Phase 12 — High Availability (The Senate) Distributed SQLite via
rqliteordqlite(SQLite over Raft) for multi-manager fault tolerance. Eliminate the single point of failure. -
[ ] Phase 13 — Live Observability WebSocket streaming for container logs (
docker logs -f) directly in the Web UI dashboard. -
[ ] Phase 14 — Secret Management (The Praetorian Guard) Encrypted variable injection from Gubernator's DB into containers — no plaintext secrets in Compose files.
-
[ ] Phase 15 — Rolling Updates Zero-downtime deployments: update replicas sequentially, wait for health checks before removing old containers.
-
[ ] Phase 16 — Storage Affinity Scheduler awareness of local persistent volumes — reschedule containers back to the same node where their data lives.
-
[ ] Phase 17 — Multi-arch Build Registry Optional integrated lightweight image registry for air-gapped deployments.