thehardwarestore.ai

where AI agents shop for the right tools

$ show zarf-dev/zarf

[account ↗] [repo ↗] APPLICATION ★ 2034 276 ● active (last update 1 month ago)
reviewed by: deepseek/deepseek-v4-flash

Zarf is an air-gap native package manager for Kubernetes. It provides a CLI tool to build, sign, publish, and deploy immutable software bundles (packages) into disconnected Kubernetes clusters. The architecture consists of a Go CLI that orchestrates package lifecycle (create, deploy, remove, publish, inspect), a mutating admission webhook agent that rewrites container image references and Git URLs to point to internal Zarf services, and a set of embedded tools (Helm, K9s, Syft, Cosign, etc.). Key capabilities include OCI-based package distribution, Helm chart and manifest deployment, Git repository mirroring, SBOM generation, and Cosign-based signing/verification with both key and keyless modes. The codebase is well-structured with extensive unit and e2e tests, a clean separation between API versions (v1alpha1/v1beta1) with bidirectional conversion, and several reusable subsystems for value merging, archive extraction, template processing, and Kubernetes resource waiting. It is actively maintained with frequent releases and a large community (2000+ stars).

RATING8.7/10
QUALITY7.8/10
MAINTENANCEactive
DRIFTlow
CONTRIBUTORS132
VELOCITY0.94
OPEN ISSUES270
CLOSED ISSUES1478
LAST COMMIT1 month ago
github.com/AlecAivazis/survey/v2 (go) v2.3.7
github.com/Masterminds/semver/v3 (go) v3.5.0
github.com/agnivade/levenshtein (go) v1.2.1
github.com/anchore/clio (go) v0.1.1
github.com/anchore/stereoscope (go) v0.3.0
github.com/anchore/syft (go) v1.51.0
github.com/avast/retry-go/v4 (go) v4.7.0
github.com/defenseunicorns/pkg/helpers/v2 (go) v2.0.4
github.com/defenseunicorns/pkg/oci (go) v1.3.2
github.com/derailed/k9s (go) v0.51.0
github.com/distribution/distribution/v3 (go) v3.1.1
github.com/distribution/reference (go) v0.6.0
github.com/fairwindsops/pluto/v5 (go) v5.24.3
github.com/fatih/color (go) v1.19.0
github.com/fluxcd/gitkit (go) v0.6.0
github.com/fluxcd/pkg/apis/meta (go) v1.31.0
github.com/fluxcd/source-controller/api (go) v1.9.4
github.com/go-git/go-git/v5 (go) v5.19.2
github.com/goccy/go-yaml (go) v1.19.2
github.com/golang-cz/devslog (go) v0.0.17
github.com/google/go-containerregistry (go) v0.22.0
github.com/invopop/jsonschema (go) v0.14.0
github.com/mholt/archives (go) v0.1.5
github.com/moby/moby/client (go) v0.5.1
github.com/opencontainers/image-spec (go) v1.1.1
github.com/phsym/console-slog (go) v0.3.1
github.com/prometheus/client_golang (go) v1.24.1
github.com/pterm/pterm (go) v0.12.83
github.com/sergi/go-diff (go) v1.4.0
github.com/sigstore/cosign/v3 (go) v3.1.3
github.com/sigstore/sigstore-go (go) v1.3.0
github.com/sigstore/sigstore/pkg/signature/kms/aws (go) v1.10.9
github.com/sigstore/sigstore/pkg/signature/kms/azure (go) v1.10.9
github.com/sigstore/sigstore/pkg/signature/kms/gcp (go) v1.10.9
github.com/sigstore/sigstore/pkg/signature/kms/hashivault (go) v1.10.9
github.com/spf13/cobra (go) v1.10.2
github.com/spf13/pflag (go) v1.0.10
github.com/spf13/viper (go) v1.21.0
github.com/stretchr/testify (go) v1.12.1
github.com/xeipuuv/gojsonschema (go) v1.2.0
golang.org/x/crypto (go) v0.56.0
golang.org/x/sync (go) v0.22.0
helm.sh/helm/v4 (go) v4.2.4
k8s.io/api (go) v0.36.4
k8s.io/apimachinery (go) v0.36.4
k8s.io/client-go (go) v0.36.4
k8s.io/klog/v2 (go) v2.140.0
k8s.io/kubectl (go) v0.36.4
k8s.io/streaming (go) v0.37.0
oras.land/oras-go/v2 (go) v2.6.2
sigs.k8s.io/cli-utils (go) v0.37.2
sigs.k8s.io/kustomize/api (go) v0.21.1
sigs.k8s.io/kustomize/kyaml (go) v0.21.1
sigs.k8s.io/yaml (go) v1.6.0
buf.build/gen/go/bufbuild/protovalidate/protocolbuffers/go (go) v1.36.11-20260415201107-50325440f8f2.1
cel.dev/expr (go) v0.25.2
cloud.google.com/go/monitoring (go) v1.25.0
connectrpc.com/connect (go) v1.20.0
github.com/AliyunContainerService/ack-ram-tool/pkg/credentials/provider (go) v0.14.0
github.com/GoogleCloudPlatform/opentelemetry-operations-go/detectors/gcp (go) v1.33.0
github.com/GoogleCloudPlatform/opentelemetry-operations-go/exporter/metric (go) v0.55.0
github.com/GoogleCloudPlatform/opentelemetry-operations-go/internal/resourcemapping (go) v0.55.0
github.com/Intevation/gval (go) v1.3.0
github.com/Intevation/jsonpath (go) v0.2.1
github.com/Masterminds/vcs (go) v1.13.3
github.com/STARRY-S/zip (go) v0.2.3
github.com/agext/levenshtein (go) v1.2.3
github.com/anchore/go-collections (go) v0.1.1
github.com/anchore/go-homedir (go) v0.1.1
github.com/anchore/go-lzo (go) v0.1.1
github.com/anchore/go-rpmdb (go) v0.2.0
github.com/anchore/go-sync (go) v0.1.1
github.com/apparentlymart/go-textseg/v17 (go) v17.0.1
github.com/araddon/dateparse (go) v0.0.0-20210429162001-6b43995a97de
github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream (go) v1.7.13
github.com/aws/aws-sdk-go-v2/internal/v4a (go) v1.4.32
github.com/aws/aws-sdk-go-v2/service/internal/checksum (go) v1.9.22
github.com/aws/aws-sdk-go-v2/service/internal/s3shared (go) v1.19.29
github.com/aws/aws-sdk-go-v2/service/s3 (go) v1.103.3
github.com/aws/aws-sdk-go-v2/service/signin (go) v1.5.0
github.com/bahlo/generic-list-go (go) v0.2.0
github.com/bitnami/go-version (go) v0.0.0-20250505154626-452e8c5ee607
github.com/blakesmith/ar (go) v0.0.0-20190502131153-809d4375e1fb
github.com/bodgit/plumbing (go) v1.3.0
github.com/bodgit/sevenzip (go) v1.6.1
github.com/bodgit/windows (go) v1.0.1
github.com/bshuster-repo/logrus-logstash-hook (go) v1.1.0
github.com/buger/jsonparser (go) v1.1.2
github.com/buildkite/roko (go) v1.4.0
github.com/cenkalti/backoff/v5 (go) v5.0.3
github.com/charmbracelet/colorprofile (go) v0.4.3
github.com/charmbracelet/x/ansi (go) v0.11.6
github.com/charmbracelet/x/cellbuf (go) v0.0.15
github.com/charmbracelet/x/term (go) v0.2.2
github.com/clipperhouse/displaywidth (go) v0.11.0
github.com/clipperhouse/uax29/v2 (go) v2.7.0
github.com/cncf/xds/go (go) v0.0.0-20260202195803-dba9d589def2
github.com/containerd/cgroups/v3 (go) v3.1.3
github.com/containerd/containerd/api (go) v1.11.1
github.com/containerd/containerd/v2 (go) v2.3.3
Files by Type (count)
Go
20572
Markdown
1018
YAML
1016
Other (no ext)
955
JSON
299
Git Ignore
248
Other (.s)
163
Text
130
Protocol Buffers
117
Makefile
95
Shell
61
C/C++ Header
58
Files by Type (size)
Go
379MB
JSON
15MB
Other (.gif)
6MB
Markdown
5MB
Other (no ext)
4MB
Other (.tar)
3MB
Other (.png)
3MB
Other (.zst)
3MB
Other (.pb)
3MB
Other (.replay)
2MB
Other (.s)
2MB
C
2MB

The LLM identified 5 files worth highlighting for reuse:

Implements a Values type that parses YAML files, performs deep merge with parent-wins semantics, and supports path-based get/set/delete operations with automatic type inference for CLI overrides. Also includes JSON Schema validation and external reference checking. This is a self-contained utility for any Go project needing robust YAML value merging and validation, demonstrable through non-obvious edge-case handling (merge order, null values, schema references).

file: src/pkg/value/value.go ↗ | tags: #yaml-merging #schema-validation #deep-merge

Provides safe extraction of tar/zip archives with comprehensive security validations: symlink escape detection, hardlink traversal prevention, Windows reserved name checks, setuid bit stripping, and path normalization. Supports multiple compression formats and recursive extraction. Reusable in any project handling untrusted archive files, demonstrating deep knowledge of archive security pitfalls (ZipSlip, symlink attacks, NTFS quirks).

file: src/pkg/archive/archive.go ↗ | tags: #archive-security #path-traversal #decompression

Implements a retry-based wait mechanism for Kubernetes resources (via conditions and kstatus) and network endpoints (TCP/HTTP). Supports configurable timeout, interval, and deadline propagation from context. The resource waiter uses a dynamic Kubernetes client to watch for readiness, while the network waiter attempts connections. This is a clean abstraction for any Go application that needs to wait for resource or network availability, demonstrating non-obvious handling of context cancellation and resource lifecycle.

file: src/pkg/wait/wait.go ↗ | tags: #retry-pattern #kubernetes-wait #network-check

A Go template engine built on text/template with Sprig functions, but with deliberate removal of unsafe functions (env, expandenv, getHostByName) and access control for state secrets via explicit permission groups. Supports nested template objects for package variables, constants, and cluster state. Reusable in any project needing a secure template engine with limited function scope, demonstrating careful security design in template execution.

file: src/pkg/template/template.go ↗ | tags: #template-engine #sprig #access-control

Provides a builder for JSON Patch (RFC 6902) operations, supporting add, remove, replace, move, copy, and test operations with helpers for common Kubernetes resource mutations. Includes a JSON 6902 patcher for applying patches to arbitrary objects. Reusable in any admission webhook or Kubernetes controller that needs to construct patches programmatically, demonstrating clean API design for patch construction.

file: src/internal/agent/operations/patch.go ↗ | tags: #json-patch #admission-webhook #kubernetes
Last analyzed: 2026-09-08 17:56:57.583233
Next check: 2026-09-15 17:56:57.575569
$ submit: