Deploy static sites
to Cubbit S3

A Go CLI to publish static sites on Cubbit with optional AES-256-GCM client-side encryption. Zero backend. Zero server. Zero dependencies.

$ cubbit-pages setup
$ cubbit-pages deploy ./my-site --encrypt

Features

One-command deploy

Point to a folder, specify a bucket. Cubbit Pages uploads everything with the correct MIME types and public ACL.

AES-256-GCM encryption

Every file encrypted client-side. Auto-generated login page. In-browser decryption via Web Crypto API. Password stays in localStorage.

Parallel uploads

Configurable concurrency. Per-file ACL or bucket policy. Dry-run mode to verify before deploying.

Cross-platform

Standalone Go binary. Linux, macOS, Windows. AMD64 and ARM64. Zero runtime dependencies.

Ready-made snippets

Auto-generates bucket policy, CORS, IAM policy and lifecycle commands with a single command.

One-time setup

Run cubbit-pages setup once to save credentials to ~/.cubbit/pages/config.yaml. No flags needed on every deploy.

Open source

Code on GitHub. CI/CD with GitHub Actions. Reusable action for your own workflows. Companion project to Cubbit Seal.

GitHub Action

Cubbit Pages ships as a reusable GitHub Action you can drop into any workflow. Deploy your static site to Cubbit S3 in a single step — no setup, no install, no scripts.

- uses: marcodellemarche/cubbit-pages@main
  with:
    source-dir: ./dist
    bucket: my-bucket
    access-key: ${{ secrets.CUBBIT_ACCESS_KEY }}
    secret-key: ${{ secrets.CUBBIT_SECRET_KEY }}

Supports all CLI flags: encrypt, password, public-bucket, prefix, concurrency, and version pinning. See the README for full reference.

Installation

Automatic script

curl -sSL \
  https://github.com/marcodellemarche/cubbit-pages/releases/latest/download/install.sh \
  | bash

Build from source

git clone https://github.com/marcodellemarche/cubbit-pages.git
cd cubbit-pages
make build

Download binaries

Download the precompiled binary for your platform.

Quick start

1

Save your credentials

One-time interactive setup. Creates the bucket if it doesn't exist. Saves to ~/.cubbit/pages/config.yaml.

cubbit-pages setup
2

Configure your bucket

cubbit-pages snippets --bucket my-bucket
3

Deploy in the clear

cubbit-pages deploy ./my-site
4

Or deploy encrypted

cubbit-pages deploy ./my-site \
  --encrypt --password "my-secret-password"