Skip to main content

Guardian of the container cascade — event-driven image lifecycle management

Project description

CascadeGuard

Guardian of the container cascade. Event-driven image & tooling lifecycle management that integrates with your build & deployment tooling to eliminate vulnerability to supply chain attacks.

Quick Start

# Install (macOS / Linux)
curl -sSL https://raw.githubusercontent.com/cascadeguard/cascadeguard/main/install.sh | sh

# Windows (PowerShell)
irm https://raw.githubusercontent.com/cascadeguard/cascadeguard/main/install.ps1 | iex

Then in your state repository:

cg images init                   # Scaffold from seed repo (includes workflows)
cg images validate               # Validate images.yaml
cg images check                  # Discover base images, check drift and upstream tags

Requires Python 3.11+. Both cg and cascadeguard are installed as aliases.

How It Works

  1. Image Enrollment: Images are defined in images.yaml in a state repository
  2. State Files: Detailed configuration for each image in base-images/ and images/ directories
  3. Kubernetes Manifest Generation: Uses CDK8s under the hood to generate manifests for popular kubernetes based tools like Kargo, ArgoCD, etc

Using CascadeGuard

1. Install

# macOS / Linux
curl -sSL https://raw.githubusercontent.com/cascadeguard/cascadeguard/main/install.sh | sh

2. Set up your state repository

Scaffold a new state repository from the seed repo:

mkdir my-images && cd my-images && git init
cg images init

Or create an images.yaml and .cascadeguard.yaml manually:

# .cascadeguard.yaml
defaults:
  registry: ghcr.io/myorg
  local:
    dir: images        # folder containing per-image Dockerfiles

ci:
  platform: github
# images.yaml — managed images inherit registry from .cascadeguard.yaml
- name: nginx
  dockerfile: images/nginx/Dockerfile
  image: nginx
  tag: stable-alpine-slim

# Upstream-tracked images (CVE monitoring only, no build)
- name: memcached
  enabled: false
  namespace: library

3. Validate, generate, and build

# Validate images.yaml (applies config defaults before checking)
cg images validate

# Enrol a new image
cg images enrol --name myapp --registry ghcr.io --repository org/myapp

# Check for base image drift and new upstream tags
cg images check
cg images check --format json    # JSON output for CI consumption
cg images check --image myapp    # Scope to a single image

# Generate CI/CD pipeline files (GitHub Actions)
cg build generate

# Generate CI with explicit platform or dry-run
cg build generate --platform github --dry-run

See cascadeguard-exemplar for a complete working example.

Config Inheritance

Common fields can be set once in .cascadeguard.yaml under defaults instead of repeating them on every image:

Key Description
defaults.registry Default container registry (e.g. ghcr.io/cascadeguard)
defaults.repository Default repository prefix
defaults.local.dir Default folder containing per-image Dockerfiles

Per-image values in images.yaml always override the defaults.

Generating CI/CD Pipelines

cg build generate reads images.yaml and emits four GitHub Actions workflow files under .github/workflows/:

File Trigger Purpose
build-image.yaml workflow_call Reusable single-image build, scan (Grype + Trivy), SBOM, and Cosign signing
ci.yaml push to main, pull_request Matrix build of all images; pushes and signs on merge to main
scheduled-scan.yaml Nightly cron + workflow_dispatch Re-scans all published images; opens a GitHub Issue on new CVEs
release.yaml Tag push (v*) Builds, signs, and pushes all images; creates a GitHub Release with changelog
cg build generate
cg build generate --dry-run    # preview without writing

Commit the generated files. Adding a new image to images.yaml and re-running cg build generate will automatically include it in every pipeline.

Overview

CascadeGuard automates the process of monitoring base images and shared build steps (github action workflows & steps, Gitlab pipelines, etc), discovering Dockerfile dependencies, package vulnerabilities and orchestrating intelligent pinning & container image rebuilds.

Licensing

CascadeGuard is licensed under the Business Source License 1.1 (BUSL-1.1).

You are free to use, copy, modify, and distribute CascadeGuard for non-production purposes. Production use is permitted provided you are not offering CascadeGuard to third parties as a commercial container image lifecycle management service or a managed image rebuild service.

Each version of CascadeGuard automatically converts to the Apache License 2.0 four years after its first public release.

For commercial licensing enquiries, contact licensing@cascadeguard.com.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

cascadeguard-0.1.0.tar.gz (68.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

cascadeguard-0.1.0-py3-none-any.whl (47.5 kB view details)

Uploaded Python 3

File details

Details for the file cascadeguard-0.1.0.tar.gz.

File metadata

  • Download URL: cascadeguard-0.1.0.tar.gz
  • Upload date:
  • Size: 68.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.13

File hashes

Hashes for cascadeguard-0.1.0.tar.gz
Algorithm Hash digest
SHA256 eae695fb3dd708d46fa45eefcb077330f4b59f2cb1aadf74532f52eb9843dd6f
MD5 13007a5761207c5efef5fd7fef337d2f
BLAKE2b-256 317afce7f36aa33e1850ce650c37d73337041f1ff3c947c249b343cb920d4c0f

See more details on using hashes here.

Provenance

The following attestation bundles were made for cascadeguard-0.1.0.tar.gz:

Publisher: pypi-publish.yaml on cascadeguard/cascadeguard

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file cascadeguard-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: cascadeguard-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 47.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.13

File hashes

Hashes for cascadeguard-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 748e3495efedd439881ceb79e4281bc53f72839426c7a58308856b6816f0e482
MD5 9f4cf1de292c6006fb9ae33f80a5747a
BLAKE2b-256 279b6f5a123ba803ff460a1813c2c59dcb4b5dc08558c7c962ad1a8ab73d4ab1

See more details on using hashes here.

Provenance

The following attestation bundles were made for cascadeguard-0.1.0-py3-none-any.whl:

Publisher: pypi-publish.yaml on cascadeguard/cascadeguard

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page