FAQ
Zarf was built by the developers at Defense Unicorns and an amazing community of contributors.
Defense Unicorns’ mission is to advance freedom and independence globally through Free and Open Source software.
Zarf is under the Apache License 2.0. This is one of the most commonly used licenses for open-source software.
Yes! Zarf is Free and Open-Source Software (FOSS). And will remain free forever. We believe Free and Open Source software changes the world and promotes freedom and security. Anyone who sees the value in our tool should be free to use it without fear of vendor locking or licensing fees.
No, the Zarf binary and init package can be downloaded from the Releases Page. Zarf does not need to be installed or available to all users on the system, but it does need to be executable for the current user (i.e. chmod +x zarf
for Linux/Mac).
Zarf is statically compiled and written in Go and Rust, so it has no external dependencies. For Linux, Zarf can bring a Kubernetes cluster using K3s. For Mac and Windows, Zarf can leverage any available local or remote cluster the user has access to. Currently, the K3s installation Zarf performs does require a Systemd based system and root
(not just sudo
) access.
Due to some limitations with how Docker provides access to local image layers, zarf package create
has to rely on docker save
under the hood which is very slow overall and also takes a long time to report progress. We experimented with many ways to improve this, but for now recommend leveraging a local docker registry to speed up the process.
This can be done by running a local registry and pushing the images to it before running zarf package create
. This will allow zarf package create
to pull the images from the local registry instead of Docker. This can also be combined with component actions and --registry-override
to make the process automatic. Given an example image of registry.enterprise.corp/my-giant-image:v2
you could do something like this:
Under the hood, Zarf uses go-git
to perform git
operations, but it can fallback to git
located on the host and thus supports any of the git protocols available. All you need to use a different protocol is to specify the full URL for that particular repo:
In the airgap, Zarf with rewrite these URLs to match the scheme and host of the provided airgap git
server.
YOLO Mode is a special package metadata designation that be added to a package prior to zarf package create
to allow the package to be installed without the need for a zarf init
operation. In most cases this will not be used, but it can be useful for testing or for environments that manage their own registries and Git servers completely outside of Zarf. This can also be used as a way to transition slowly to using Zarf without having to do a full migration.
A skeleton
package is a bare-bones Zarf package definition alongside its associated local files and manifests that has been published to an OCI registry. These packages are intended for use with component composability to provide versioned imports for components that you wish to mix and match or modify with merge-overrides across multiple separate packages.
Skeleton packages have not been run through the zarf package create
process yet, and thus do not have any remote resources included (no images, repos, or remote manifests and files) thereby retaining any create-time package configuration templates as they were defined in the original zarf.yaml
(i.e. untemplated).