Getting Started From zero to a running app on your own AWS account

Cumulus is a deployment platform for Rust, Python, and static sites. You connect your own AWS account; Cumulus handles the complexity. Everything runs in your account: EC2 instances, Lambda functions, S3 buckets. You pay AWS directly; Cumulus charges a flat monthly fee.

🦀 Rust apps
Axum, Actix, Tower. No host toolchain needed. EC2 or Lambda.
🐍 Python apps
Django, FastAPI, Flask, bare handlers. A uv-managed interpreter with pip/poetry/pipenv support. EC2 or Lambda.
🌐 Static sites
Next.js, Vite, Hugo, or any npm build. Synced to S3 with correct cache headers, optional CloudFront CDN.
🔒 Zero-trust deploys
Health-gated deploys with automatic rollback. Secrets live in SSM, never in build artifacts.

Prerequisites

  • A Cumulus account. Sign in with GitHub at cumulus.collectif.dev.
  • An AWS account. Your apps run in your own account. Connect it to Cumulus once after signing up:
    cumulus aws connect
    This walks you through creating a cross-account IAM role so Cumulus can deploy on your behalf. No long-lived credentials needed.
  • A KMS key in your AWS account. Cumulus uses it to encrypt your secrets and artifacts at rest. Create one once and note the ARN:
    aws kms create-key \
      --description "cumulus" \
      --query KeyMetadata.Arn --output text
    # → arn:aws:kms:us-east-1:123456789012:key/<uuid>
    
    aws kms create-alias \
      --alias-name alias/cumulus \
      --target-key-id <key-id>
    These use the AWS CLI. Install and configure it first if you haven't. It's the only step that needs the AWS CLI; everything after runs through cumulus.

Install the CLI

Install the CLI with the one-line script:

# macOS / Linux
curl -fsSL https://cumulus.collectif.dev/install.sh | sh

# Verify
cumulus --version
cumulus --help
Deploy Rust, Python, and static sites to your own AWS account

Usage: cumulus [OPTIONS] <COMMAND>

Commands:
  init      Scaffold a cumulus.toml interactively
  login     Connect to the Cumulus control plane
  link      Register this project and its apps
  app       Deploy and manage apps
  server    Provision and manage servers
  aws       Connect your AWS account
  ...

Quick start

  • Log in. This opens your browser to sign in with GitHub:
    cumulus login
  • Scaffold a config in your project directory. Cumulus detects your runtime from project files and asks a few questions:
    cumulus init
    Scaffolding cumulus.toml. Press Enter to accept the default.

      Project name [my-api]: my-api
      AWS region [us-east-1]:
      Detected runtime: rust (from Cargo.toml)
      Runtime (rust / python / static) [rust]:
      Target (ec2 / s3 / lambda) [ec2]:
      ...

    wrote cumulus.toml
  • Register the project with Cumulus. This reads your cumulus.toml and creates the project and apps on the control plane:
    cumulus link
  • Deploy. See the guides below for each runtime and target.
Tip: A health check is optional but recommended. When you add an [app.health_check] block, Cumulus probes that endpoint after starting the new version and automatically rolls back if it doesn't return a 2xx, so a bad release never takes traffic. Without one, Cumulus waits briefly for the process to settle, then cuts over.