CasOS

June 14, 2026 · View on GitHub

CasOS

A cloud operating system built on Kubernetes

Build Release Go Report License Platform Discord

Live Demo: https://casos.casnode.com


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

LayerTechnology
BackendGo 1.26+, Beego, MySQL (ORM)
FrontendReact 18, Ant Design 6, recharts, i18next
AuthCasdoor (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

License

Apache 2.0