Command line interface (CLI)
On this page
Is this page helpful?
See how to use and manage your Platform.sh projects directly from your terminal. Anything you can do within the Console can be done with the CLI.
$ brew install platformsh/tap/platformsh-cli
$ scoop bucket add platformsh https://github.com/platformsh/homebrew-tap.git $ scoop install platform
For manual installation, you can also download the latest binaries.
If you have issues with missing libraries on a Mac, see how to troubleshoot CLI installation on M1 Macs.
To list and manage your projects, authenticate by running the following command:
This process opens a browser tab for you to log in. It also creates certificates on your computer for SSH.
Once you are logged in, a list of your projects appears, along with some tips for getting started.
If you experience authentication issues or want to force a login, run the command
Now you can run actions on your projects such as branching and merging. You can also simulate a local build of your codebase as if you were pushing a change to Platform.sh, including your services and data.
Get a list of all available commands with:
To get more information on a specific command, preface it with
$ platform help get Command: project:get Aliases: get Description: Clone a project locally Usage: platform get [-e|--environment ENVIRONMENT] [--depth DEPTH] [--build] [-p|--project PROJECT] [--host HOST] [-i|--identity-file IDENTITY-FILE] [--] [<project>] [<directory>] Arguments: project The project ID directory The directory to clone to. Defaults to the project title Options: -e, --environment=ENVIRONMENT The environment ID to clone. Defaults to the project default, or the first available environment --depth=DEPTH Create a shallow clone: limit the number of commits in the history --build Build the project after cloning -p, --project=PROJECT The project ID or URL --host=HOST The project's API hostname -i, --identity-file=IDENTITY-FILE An SSH identity (private key) to use -h, --help Display this help message -q, --quiet Do not output any message -V, --version Display this application version -y, --yes Answer "yes" to any yes/no questions; disable interaction -n, --no Answer "no" to any yes/no questions; disable interaction -v|vv|vvv, --verbose Increase the verbosity of messages Examples: Clone the project "abc123" into the directory "my-project": platform get abc123 my-project
When you are in an empty directory or a directory not associated with a specific Platform.sh project, if you run a command that requires a specific project and environment, you are prompted to select them.
$ platform environment:info Enter a number to choose a project:  My project (xb3pfo734qxbeg)  A great project (3p5fmol45kxp6)  An even better project (rjify4y564xaa) >
If your working directory is inside a local checkout of your project repository, your project and environment are detected automatically.
You can always specify the project and environment in two ways:
As arguments for the command:
$ platform environment:info --project=my-project --environment=staging
With environment variables:
export PLATFORM_PROJECT=my-project; export PLATFORM_BRANCH=staging; platform environment:info
In multi-app projects, this applies also to selecting the right app
(the environment variable would be
If you check out a project via Git directly and not using the
platform get command,
the CLI may be unable to determine what project it’s in.
You might run a CLI command from within a project directory you’ve checked out and get an error like this:
[RootNotFoundException] Project root not found. This can only be run from inside a project directory.
Then the CLI hasn’t been able to determine the project to use. To fix this, run:
platform project:set-remote --project PROJECT_ID
<PROJECT_ID> with the ID of your project.
You can find that in the Console or by running
platform projects to list all accessible projects.
Some CLI commands (especially many within the
environment namespace) have some overlap with Git commands.
Generally, they offer more options than the Git commands alone.
platform push offers options such as
--activate (to activate an environment before pushing)
--no-wait (so you can continue working without waiting for the push to complete).
For all of them, you don’t need to configure a Git remote. It’s enough to have a project ID.
An example of how this affects commands is that when you run
it doesn’t affect your local codebase.
You don’t even need the code locally.
The code is only merged between environments remotely.
You can customize how the CLI operates and what it returns with a configuration file (
or environment variables.
For details, see the customization instructions on GitHub.
You might want to use the CLI in a script to automate repetitive tasks such as synchronizing your files locally.
In such cases, you want to customize the CLI to bypass any confirmation questions.
You can set the answer to every question as
yes using the
PLATFORMSH_CLI_NO_INTERACTION environment variable.
For instance, to locally sync every mount point for your app named
app, you could use this command:
export PLATFORM_PROJECT=my-project; export PLATFORM_BRANCH=main; export PLATFORMSH_CLI_NO_INTERACTION=1; platform mount:download --all --app app --target local-backup
The CLI provides tab autocompletion for commands, options, and some values (your projects, valid regions). To enable autocompletion, follow this step:
Add the following to your shell’s startup (
.zshrc, or the equivalent):
eval $(platform completion)
The syntax looks like the following:
platform ssh -- <COMMAND> <ARGUMENTS>
For example, to run a specific Python script named
my-script.py on your current environment,
run the following command:
platform ssh -- python my-script.py
Or to use Drush to rebuild the cache on the
run this command:
platform ssh -e feature -- drush -y cache-rebuild
To update to the latest version, use the same tool as for installation:
To upgrade from the legacy CLI, follow the installation instructions. Once you’ve installed the latest version, the CLI guides you through removing the installed legacy CLI.