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]
paths = [
"~/.earthly/config.yml",
"~/.earthly-dev/config.yml",
]
secret = []
[[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...] <target-ref> [build-args...]
"""
[[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"]