A container orchestration system inspired by AWS ECS
- Python 48%
- Svelte 27.3%
- TypeScript 19.7%
- JavaScript 2.7%
- Shell 1.2%
- Other 1%
| .forgejo/workflows | ||
| backend | ||
| deploy | ||
| docs | ||
| frontend | ||
| migrations | ||
| scripts | ||
| .gitattributes | ||
| .gitignore | ||
| .pre-commit-config.yaml | ||
| CLAUDE.md | ||
| docker-compose.override.yml | ||
| docker-compose.yml | ||
| LICENSE | ||
| Makefile | ||
| package-lock.json | ||
| README.md | ||
Canpute CCS
A Kubernetes-native container orchestration system inspired by AWS ECS. Manage workloads using familiar ECS concepts (clusters, task definitions) while leveraging Kubernetes for scheduling, scaling, and networking.
Features
- Cluster Management: Create clusters backed by Kubernetes namespaces
- Task Definitions: Define container specs with CPU, memory, ports, and environment variables
- Workloads: Deploy and manage Kubernetes Deployments with a simplified API
- Auto-scaling: Built-in HPA support with configurable min/max replicas and CPU thresholds
- Ingress: Automatic Service and Ingress creation when hostname is specified
- OAuth Authentication: GitHub and Google OAuth login, plus email/password
- RESTful API: FastAPI-based API with automatic OpenAPI documentation
- Web UI: Svelte-based dashboard for managing resources
- PostgreSQL Persistence: Production-ready database with SQLAlchemy ORM
Architecture
canpute/
├── backend/ # Python FastAPI backend
│ ├── src/
│ └── tests/
├── frontend/ # Svelte web UI (nginx in production)
│ ├── src/
│ │ ├── lib/ # Components & API client
│ │ │ ├── __tests__/ # Component tests (vitest)
│ │ │ ├── api-client/ # Auto-generated OpenAPI SDK
│ │ │ └── state/ # Auth state management
│ │ └── routes/ # SvelteKit pages
│ ├── vitest-setup.js # Test setup & SvelteKit mocks
│ └── vite.config.js # Vite + vitest config
├── scripts/ # Development scripts
├── Makefile
└── docker-compose.yml
| Canpute Concept | Kubernetes Resource |
|---|---|
| Cluster | Namespace |
| Task Definition | Pod template (stored in DB) |
| Workload | Deployment + HPA + Service + Ingress |
Quick Start
# 1. Start a local k3d cluster (one-time setup)
./scripts/dev-cluster.sh
# 2. Configure Doppler (one-time)
doppler login
doppler setup
# 3. Start backend and frontend with hot reload
make up
# 4. Open http://localhost:5173
Makefile
make up # Build and start docker compose
make down # Stop docker compose
make wipe-db-local # Wipe local database
License
Proprietary. All rights reserved. See LICENSE for details.