On-demand pools of teaching virtual machines — in the browser, with zero install.
A teacher creates a pool for a course; the platform provisions a fleet of identical VMs on OpenStack; each student opens JupyterLab, VS Code or a terminal straight from their browser.
From a teacher's one click to a whole class working in the browser — in minutes, not hours.
One action provisions N identical machines from a golden image. Asynchronous job queue and a desired-vs-real reconciliation loop — self-healing, with pool pre-warming.
Per-student JupyterLab, VS Code (code-server) and a Guacamole terminal, reverse-proxied over HTTPS. The VMs are never exposed directly.
OIDC (Dex/GLAuth), GitHub OAuth, SSH keys, and Moodle / “cours de l'X” course import — the student roster is pulled automatically.
Distribute, collect and auto-grade assignments, then push marks back to Moodle.
Live co-editing of a shared session (JupyterLab RTC) brokered on a dedicated VM, plus password-based VS Code sharing between students.
Prometheus, Loki, Grafana and OpenTelemetry. Every API route authenticated with role checks, server-side identity and input validation.
Three tiers, gRPC throughout; a Caddy reverse proxy fronts HTTPS, gRPC-Web and the app proxies.
SvelteKit frontend ──gRPC-Web──▶ Control Center (Go) ──gRPC──▶ OpenStack microservice (Go)
│ │
PostgreSQL (state, OpenStack API
LISTEN/NOTIFY → live UI) (gophercloud)
Real-time pool & VM state streamed to the UI via PostgreSQL LISTEN/NOTIFY — no refresh.