Kube Workspaces runs development environments as pods in your cluster — with a web UI, optional OIDC auth, reverse proxy, and no database required.
Four loosely-coupled components, all deployed to your cluster.
Browser → Ingress → Frontend (Next.js) ← workspace UI → API (Go/Goa) ← REST + auth → Proxy (Go) ← /proxy/{ns}/{name}/... ↓ Kubernetes API Server ↓ Controller (kubebuilder) ↓ StatefulSet + Service (per workspace)
Built for teams running development environments on Kubernetes.
Workspaces wrap a full Kubernetes PodSpec — any container, any resource limit, any volume mount.
Auth is off by default. When enabled, supports Dex, Google, Okta, Auth0, or any OIDC provider.
Built-in reverse proxy with full WebSocket support. Works with VS Code Server, noVNC desktops, Jupyter, and more.
Three roles: admin, editor, viewer. Namespace-level access control. No separate auth database.
All state lives in Kubernetes CRDs and Secrets. No external dependencies beyond your cluster.
Helm, Kustomize, or ArgoCD. Images published to ghcr.io/kube-workspaces/*.
Annotation-driven start/stop sets StatefulSet replicas to 0 without deleting the workspace CR.
Auto-created per user with configurable naming templates and RoleBindings via the User controller.
Class-based dark mode with theme persistence. No flash on load. Multiple color themes available.
Get Kube Workspaces running in minutes. Choose your preferred deployment method.
# Create a local cluster kind create cluster # Install CRDs kubectl apply --server-side -k \ https://github.com/kube-workspaces/deploy/kustomize/crds # Deploy all components kubectl apply --server-side -k \ https://github.com/kube-workspaces/deploy/kustomize/base # Port-forward the frontend kubectl port-forward svc/kube-workspaces-frontend 3000:80 \ -n kube-workspaces-system
kubectl apply --server-side -k \ https://github.com/kube-workspaces/deploy/kustomize/crds kubectl apply --server-side -k \ https://github.com/kube-workspaces/deploy/kustomize/base
helm install kube-workspaces \ oci://ghcr.io/kube-workspaces/charts/kube-workspaces \ --namespace kube-workspaces-system \ --create-namespace
kubectl apply -f \
https://raw.githubusercontent.com/kube-workspaces/deploy/main/argocd/application.yaml
Open http://localhost:3000 — auth is disabled by default, no login required.
See the full deployment guide for production setup, OIDC auth, and ingress configuration.
Each component is an independent repository under the kube-workspaces org.
Kubernetes controller (kubebuilder) that reconciles Workspace, Image, User, AuthConfig, and PlatformConfig CRDs.
GoREST API service (Goa v3) — workspace CRUD, volumes, images, OIDC auth, admin endpoints, OpenAPI spec.
GoReverse proxy with WebSocket support, session auth, and per-request namespace access control.
GoNext.js 16 web UI — dashboard, workspace management, volumes, admin panel, dark mode, real-time updates.
TypeScriptHelm chart, Kustomize manifests, ArgoCD Application, and full documentation.
Shell / YAMLAny container image that serves HTTP works. These are tested and ready to use.
| Image | Description | Port |
|---|---|---|
codercom/code-server:latest |
Browser-based VS Code | 8080 |
gitpod/openvscode-server:latest |
Open VS Code Server | 8080 |
flaccid/debian-desktop:latest |
Full Linux desktop (noVNC) | 6901 |
kasmweb/desktop:1.19.0 |
Ubuntu desktop (KasmVNC) | 6901 |
kasmweb/chrome:1.19.0 |
Chrome browser (KasmVNC) | 6901 |
linuxserver/firefox:latest |
Firefox browser (KasmVNC) | 3000 |
jupyter/datascience-notebook:latest |
Jupyter Notebook (Data Science) | 8888 |
filebrowser/filebrowser:latest |
Web-based file manager | 8080 |