Skip to content

Smurf

Smurf is a unified command-line interface (CLI) for DevOps workflows. Built in Go, it wraps Docker, Helm, and Terraform behind a single, consistent interface so you can build images, deploy charts, and manage infrastructure without switching tools or memorizing different syntaxes.

Current version: v1.1.9

Why Smurf?

Benefit Description
Unified interface One CLI for Docker (sdkr), Helm (selm), and Terraform (stf)
End-to-end workflows provision and deploy commands chain multiple steps into a single run
Config-driven Optional smurf.yaml file for credentials and defaults
CI/CD ready Official GitHub Action with multi-platform binary downloads
Security built in Docker image scanning before push to supported registries

Architecture

Smurf is organized as a single CLI with top-level commands and nested subcommand groups:

smurf
├── deploy
├── init
├── version
├── sdkr
│   ├── build
│   └── tag
├── selm
│   ├── upgrade
│   └── install
└── stf
    ├── plan
    └── init

Each subcommand group wraps a DevOps tool — sdkr for Docker, selm for Helm, and stf for Terraform. Run smurf <group> --help to see all available commands under each group.

Quick start

brew tap clouddrove/homebrew-tap
brew install smurf
smurf version
smurf --help
smurf init

Command overview

Top-level commands

Command Description
smurf init Generate a smurf.yaml configuration file
smurf deploy Build, push image, and optionally deploy via Helm (reads smurf.yaml)
smurf version Print version, commit, build date, and platform info

Subcommand groups

Group Alias Purpose
sdkr Smurf Docker Build, scan, tag, and push container images
selm Smurf Helm Install, upgrade, lint, and manage Helm releases
stf Smurf Terraform Init, plan, apply, and manage Terraform state

Example workflows

Build and push to AWS ECR

smurf sdkr provision-ecr 123456789012.dkr.ecr.us-east-1.amazonaws.com/my-app:v1.0.0

Deploy a Helm chart

smurf selm upgrade my-release ./charts/my-app -n production --install --atomic

Apply Terraform infrastructure

smurf stf provision --dir=./infra --auto-approve

Full build → push → deploy pipeline

# smurf.yaml
sdkr:
  awsECR: true
  imageName: "123456789012.dkr.ecr.us-east-1.amazonaws.com/my-app:v1.0.0"
selm:
  deployHelm: true
  releaseName: "my-app"
  namespace: "production"
  chartName: "./charts/my-app"
smurf deploy

Next steps