A container orchestration system inspired by AWS ECS
  • Python 44.5%
  • TypeScript 27.2%
  • Svelte 24.5%
  • JavaScript 2.1%
  • Shell 0.9%
  • Other 0.6%
Find a file
adam ff2012876f
All checks were successful
Build and Push Images / build-and-push (push) Successful in 1m30s
CI / test-backend (push) Successful in 56s
CI / test-frontend (push) Successful in 24s
Merge pull request 'aazoulay/multi-image-defs' (#50) from aazoulay/multi-image-defs into main
Reviewed-on: #50
2026-02-22 21:42:17 -05:00
.forgejo/workflows feat: auto-stamp alembic version on fresh DB init 2026-02-11 21:35:32 -05:00
backend feat: distributed deployment mode, VPA/HPA improvements, and workload status 2026-02-22 21:08:38 -05:00
deploy fix: add Doppler reload annotation to backend deployment 2026-02-12 18:24:01 -05:00
docs feat: add doppler for auth 2026-02-08 15:57:06 -05:00
frontend chore: update generated API client and frontend dependencies 2026-02-22 21:09:05 -05:00
migrations feat: distributed deployment mode, VPA/HPA improvements, and workload status 2026-02-22 21:08:38 -05:00
scripts feat: Update to Organizations and Organizations UI 2026-02-12 14:08:45 -08:00
.gitattributes feat: force unix lineendings 2026-02-08 13:12:09 -05:00
.gitignore feat: add ccr to canpute suite 2026-02-01 16:17:53 -05:00
.pre-commit-config.yaml fix: use cache package rather than custom solution 2026-02-01 18:20:30 -05:00
CLAUDE.md test: adding frontend component and view tests 2026-02-05 21:00:26 -08:00
docker-compose.override.yml fix: local running hostname 2026-02-22 21:40:15 -05:00
docker-compose.yml feat: auto-stamp alembic version on fresh DB init 2026-02-11 21:35:32 -05:00
LICENSE refactor: reorganize into backend/frontend structure with Docker support 2026-01-27 20:55:19 -05:00
Makefile chore: remove deploy manifests and build workflow migrated to infra repo 2026-02-10 18:31:18 -05:00
package-lock.json Initial Commit of Login, OAuth, and 3rd Party Auth 2026-01-28 18:10:25 -08:00
README.md chore: remove deploy manifests and build workflow migrated to infra repo 2026-02-10 18:31:18 -05:00

Canpute CCS

CI

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.