CasOS
June 14, 2026 · View on GitHub
What is CasOS?
CasOS is a cloud operating system built on Kubernetes. It embeds the Kubernetes API server, controller manager, and scheduler, so you do not need an existing Kubernetes cluster or a separate control plane — CasOS is the platform itself. Run a single binary and get a fully functional cloud OS with a built-in web UI.
Features
- Embedded Kubernetes stack (API server, controller manager, scheduler) — no external cluster needed
- Cluster resource management: Nodes, Namespaces, Pods, Services, ConfigMaps, ServiceAccounts, ClusterRoleBindings
- Dashboard with cluster overview
- DockerHub image browser
- Multi-language support (i18n)
- Authentication via Casdoor
Tech Stack
| Layer | Technology |
|---|---|
| Backend | Go 1.26+, Beego, MySQL (ORM) |
| Frontend | React 18, Ant Design 6, recharts, i18next |
| Auth | Casdoor (OAuth2 / OIDC) |
Project Structure
casos/
├── main.go # Entry point
├── conf/app.conf # Backend configuration
├── controllers/ # HTTP controllers (Beego routing)
├── object/ # Business logic and data models
├── routers/ # Route configuration and filters
├── proxy/ # kube-proxy related logic
└── web/ # React frontend
└── src/
├── App.js
├── DashboardPage.js
├── ManagementPage.js
├── PodListPage.js
├── NodeListPage.js
├── NamespaceListPage.js
├── ServiceListPage.js
├── ConfigMapListPage.js
├── ServiceAccountListPage.js
├── ClusterRoleBindingListPage.js
└── backend/ # API client helpers
Prerequisites
- Backend: Go 1.26+
- Frontend: Node.js 20+ and Yarn 1.x
- MySQL database
- A Casdoor instance (for authentication)
Supported platforms: Linux, macOS, Windows
Configuration
Edit conf/app.conf with your values:
appname = casos
httpport = 9000
runmode = dev
; Database
driverName = mysql
dataSourceName= user:pass@tcp(host:3306)/
dbName = casos
; Casdoor
casdoorEndpoint = https://your-casdoor-instance
clientId = <your-client-id>
clientSecret = <your-client-secret>
casdoorOrganization = <your-org>
casdoorApplication = <your-app>
; Kubernetes control plane
apiserverPort = 6443
apiserverBind = 127.0.0.1
dataDir = /var/lib/casos
Development
Backend
go run main.go
Frontend
cd web
# Install dependencies (first time only)
yarn install
# Start dev server — port 8001, proxies API to localhost:9000
yarn start
Deployment
Backend
# Build binary
go build -o casos .
# Run
./casos
Frontend
cd web
# Production build (outputs to web/build/)
yarn build
Serve the web/build/ directory with any static file server, or let the Go backend serve it directly.
Lint
cd web
yarn lint:js # ESLint
yarn lint:css # Stylelint
yarn lint # both