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
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
Deploy a Helm chart
Apply Terraform infrastructure
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"
Next steps
- Installation Guide — install Smurf on macOS, Linux, or in CI
- Configuration —
smurf.yamlreference - GitHub Actions — use Smurf in your pipelines