Casos
CasOS: a cloud operating system built on Kubernetes, Live Demo: https://casos.casnode.com
**Live Demo: [https://casos.casnode.com](https://casos.casnode.com)** The project is written primarily in JavaScript, distributed under the Apache License 2.0 license, first published in 2017. It has gained significant community traction with 1,196 stars and 81 forks on GitHub. Key topics include: auth, authorization, casbin, casdoor, container.
CasOS
A cloud operating system built on Kubernetes
Live Demo: https://casos.casnode.com
</div>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:
iniappname = 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
bashgo run main.go
Frontend
bashcd web # Install dependencies (first time only) yarn install # Start dev server — port 8001, proxies API to localhost:9000 yarn start
Deployment
Backend
bash# Build binary go build -o casos . # Run ./casos
Frontend
bashcd 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
bashcd web yarn lint:js # ESLint yarn lint:css # Stylelint yarn lint # both
License
Contributors
Showing top 1 contributor by commit count.
