Using the CLI
Here, we'll describe at a high level the common day-to-day usage of the Garden CLI, with specific examples.
CLI introduction
The garden CLI is how you work with Garden in most scenarios, during development and in CI pipelines. It features a fairly large number of commands, so we'll list the most common ones below. You can run garden --help to list them, and use garden <command> --help to learn more about individual commands, arguments, option flags, usage examples etc. You can also find a full reference here.
If you've not installed the CLI yet, please check out the installation guide.
Most of the examples below assume that you've already defined a Garden project.
It is currently not advisable to run multiple dev, build, deploy or test commands in parallel because they may interfere with each other. It is fine, however, to run one of those and then run other commands to the side, such as garden logs. We plan on improving this in the future.
Common option flags
Every Garden command supports a common set of option flags. The full reference can be found here, but here are the most important ones:
--envsets the environment (and optionally namespace) that the command should act on. Most Garden commands only act on a specific environment, so in most cases you'll specify this, unless you're working on the default environment for the project. See here for more about environments and namespaces.--log-level/-lsets the log level. Use e.g.-l=debugto get debug logs for the command.--output/-osets the output format. Use this to get structured output from the commands.--output=jsonoutputs JSON, and--output=yamloutputs YAML. The structure of the outputs is documented in the reference for most commands.
All option flags can be specified with a space or a = between the flag and the value.
Deploy actions
Deploy actionsDeploying all Deploys in a project
Deploys in a projectThis deploys all Deploy actions to the default environment and namespace.
garden deployDeploying all Deploys in a project to a non-default environment and namespace
Deploys in a project to a non-default environment and namespaceThis deploys all Deploy actions to my-namespace in the dev environment.
garden deploy --env my-namespace.devDeploying a single Deploy
Deploygarden deploy my-deployDeploying more than one specific Deploy
DeployWhen arguments accept one or more actions we space-separate the names.
garden deploy deploy-a deploy-bDeploying a Deploy with sync enabled
Deploy with sync enabledSee the Code synchronization guide for more information on how to configure and use syncing for rapid iteration on Deploys.
garden deploy my-deploy --sync=*Executing a command in a running Deploy container
Deploy containergarden exec my-deploy -- <command>Executing an interactive shell in a running Deploy container
Deploy containerNote: This assumes that sh is available in the container.
garden exec my-deploy -- shGetting the status of your Deploys
Deploysgarden get statusGetting the status of your Deploys in JSON format
Deploys in JSON formatThis is suitable for parsing with e.g. the jq utility.
garden get status --output=json # or `-o json` for shortStopping all running Deployss
DeployssThis removes all running Deploy actions in my-namespace in the dev environment.
garden cleanup env --env=my-namespace.devStopping a single running Deploy
Deploygarden cleanup deploy my-deployTest actions
Test actionsRunning all tests in a project
garden testRunning a specific test and attaching
This is handy for running a single test and streaming the log outputs (garden test, in comparison, is more meant to run multiple ones or watch for changes, and is less suitable for getting log output).
garden test my-test -iRun actions
Run actionsRunning a specific Run action
Run actiongarden run my-run-actionBuild actions
Build actionsBuilding all Builds
Buildsgarden buildBuilding all Builds, forcing a rebuild
Builds, forcing a rebuildgarden build --force # or -f for shortBuilding a specific Build
Buildgarden build my-buildWorkflows
Running a workflow
Runs my-workflow in my-namespace in the dev environment.
garden workflow my-workflow --env=my-namespace.devLogs
Retrieving the latest logs for all Deploys
Deploysgarden logsRetrieving the latest logs for a single Deploy
Deploygarden logs my-deployStream logs for a Deploy action
Deploy actiongarden logs my-deploy --follow # or -f for shortgarden dev
The garden dev command runs the Garden interactive development console.
In that console you can execute Garden commands in interactive mode, like build, deploy, run, test and others.
To see the full list of available commands execute the help command in the development console.
Running interactive development console
garden devSync mode
For rapid iteration on a running Deploy action, you can use a feature called sync mode.
See the Code synchronization guide for details on how to configure and use that feature.
Project outputs
Project outputs are a handy way to extract generated values from your project.
Printing project outputs
garden get outputsGetting project outputs in JSON format
This you can use to parse in scripts, e.g. using jq.
garden get outputs --output=json # or `-o json` for shortYou can also output in YAML with --output=yaml.
Creating new configs
Creating a new project
This bootstraps a boilerplate garden.yml with a project definition in the current directory, and a .gardenignore file.
garden create projectCreating actions
See the Garden basics guide to learn more about actions and how to create them.
Remote sources
Remote sources are a mechanism to connect multiple git repositories in a single Garden project. See the remote sources guide for more information, including how to use the CLI to manage these sources.
Plugin commands
Individual plugins (currently referred to as providers in your project configuration) may include specific commands that help with their usage and operation. The available commands will depend on which providers are configured in your project.
You can run garden plugins without arguments to list the available commands.
Initializing a Kubernetes cluster for in-cluster building
When using a remote Kubernetes cluster and in-cluster building, the cluster needs to be set up with some shared services when you first start using it, when you update the provider configuration, or sometimes when you update to a new Garden version. See the remote kubernetes guide for more information.
Here we initialize the cluster configured for the dev environment:
garden plugins kubernetes cluster-init --env=devPlanning and applying Terraform stacks
The terraform provider includes several commands that facilitate interaction with the Terraform stacks in your project. See the Terraform guide for more information.
Plugin tools
Garden plugins generally define their external tool dependencies, such that Garden can automatically fetch them ahead of use. The garden tools command exposes these tools, so that you can use them without having to install them separately. You can also use these to ensure that you're using the exact same versions as the Garden plugins.
Note that this command currently only works when run within a Garden project root.
If you use this frequently, we recommend defining the following helper function for quick access:
# Note: This is made to work in bash and zsh, other shells may need a different syntax
function gt() {
garden tools $1 -- "${@:2}"
}You can then type e.g. gt docker build . to run docker build . using the Garden-provided version of the docker CLI.
Run garden tools to get a full list of available tools, and garden tools --help for more usage information.
Running a plugin tool
Note that the -- is necessary to distinguish between Garden options, and kubectl arguments. See above for a shorthand function you can put in your shell profile.
garden tools kubectl -- <args>Getting the path of a plugin tool
This prints the absolute path to the kubectl binary defined by the kubernetes provider, downloading it first if necessary.
garden tools kubectl --get-pathNext Steps
Take a look at our Guides section for in-depth guides on specific use cases and setups, or keep exploring other sections under Using Garden to learn more about Garden concepts and configuration.
Last updated
Was this helpful?

