id = "earthly" name = "Earthly" homepage = "https://earthly.dev/" description = "Super simple build framework with fast, repeatable builds and an instantly familiar syntax – like Dockerfile and Makefile had a baby." executables = ["earthly"] [dotfiles] # https://docs.earthly.dev/docs/earthly-config — stable Earthly reads # ~/.earthly/config.yml. The upstream contributing guide documents the # prerelease default ~/.earthly-dev/config.yml; retain both shipped spellings. paths = [ "~/.earthly/config.yml", "~/.earthly-dev/config.yml", ] secret = [] # The same official reference documents git..password for HTTPS pulls. [[dotfiles.secret_paths]] file = ["~/.earthly/config.yml", "~/.earthly-dev/config.yml"] match = { key_path = ["git.*.password"] } [commands] format = 1 label = "Run an Earthly target" description = "Execute a build target from an Earthfile (target form). The artifact and image forms, account, org, secrets, satellite and other subcommands are not covered." quality = "ai-draft" parser = { end_of_options = "--", interleave = "permute", long_equals = true, short_attached = false, short_bundles = false } [[commands.source]] id = "reference" kind = "manual" url = "https://docs.earthly.dev/docs/earthly-command" revision = "2026-10-27" evidence = """ earthly [options...] [build-args...] ##### `--secret|-s [=]` ##### `--secret-file =` ##### `--push` ##### `--no-output` ##### `--no-cache` ##### `--allow-privileged|-P` ##### `--ci` ##### `--platform ` ##### `--interactive|-i` ##### `--strict` ##### `--verbose` ##### `--config ` """ [[commands.field]] id = "target" label = "Target" description = "Target reference such as +build, ./dir+build or github.com/org/repo+build." type = "string" position = 0 min = 1 sources = ["reference"] [[commands.field]] id = "build_args" label = "Build args" description = "Passed after the target, for example --VERSION=1.2.3." type = "string" position = 1 multiple = true sources = ["reference"] [[commands.field]] id = "push" label = "Push images and run RUN --push" type = "boolean" option = ["--push"] effect = "exec" sources = ["reference"] [[commands.field]] id = "no_output" label = "No output" description = "Do not output any images or artifacts." type = "boolean" option = ["--no-output"] sources = ["reference"] [[commands.field]] id = "no_cache" label = "Ignore cache" type = "boolean" option = ["--no-cache"] sources = ["reference"] [[commands.field]] id = "ci" label = "CI mode" description = "Alias for --no-output --strict." type = "boolean" option = ["--ci"] sources = ["reference"] [[commands.field]] id = "strict" label = "Strict" description = "Disallow features that may create unrepeatable builds." type = "boolean" option = ["--strict"] sources = ["reference"] [[commands.field]] id = "platform" label = "Platform" type = "string" option = ["--platform"] suggestions = [{ value = "linux/amd64", label = "linux/amd64" }, { value = "linux/arm64", label = "linux/arm64" }, { value = "linux/arm/v7", label = "linux/arm/v7" }] sources = ["reference"] [[commands.field]] id = "secret" label = "Secret" description = "Form secret-id=value, or just secret-id to read it from the environment." type = "string" option = ["--secret", "-s"] multiple = true sources = ["reference"] [[commands.field]] id = "secret_file" label = "Secret from file" description = "Form secret-id=path." type = "string" option = ["--secret-file"] multiple = true sources = ["reference"] [[commands.field]] id = "allow_privileged" label = "Allow privileged RUN" type = "boolean" option = ["--allow-privileged", "-P"] effect = "exec" sources = ["reference"] [[commands.field]] id = "interactive" label = "Interactive debugging" description = "Drop into a shell when a RUN command fails." type = "boolean" option = ["--interactive", "-i"] sources = ["reference"] [[commands.field]] id = "verbose" label = "Verbose logging" type = "boolean" option = ["--verbose"] sources = ["reference"] [[commands.task]] id = "build" label = "Build a target" fields = ["target", "build_args"] required = ["target"] [[commands.task]] id = "ci" label = "Build in CI mode" fields = ["target", "ci", "build_args"] required = ["target", "ci"] set = { ci = [true] } [[commands.task]] id = "debug" label = "Build with interactive debugging" fields = ["target", "interactive", "build_args"] required = ["target", "interactive"] set = { interactive = [true] } [[commands.group]] id = "basic" label = "Basic" fields = ["target", "build_args", "push", "no_output", "no_cache", "platform"] [[commands.group]] id = "advanced" label = "Advanced" fields = ["ci", "strict", "secret", "secret_file", "allow_privileged", "interactive", "verbose"]