Command Line Interface
Manage Easypanel servers, projects, and services from your terminal.
The Easypanel CLI lets you manage one or more Easypanel servers from a terminal.
It is available as both easypanel and the shorter ep command.
The available commands come from the connected server, so the CLI stays aligned
with that server's Easypanel version. Use --help at any level to see the
commands, arguments, and flags currently available to you.
Install the CLI
curl -fsSL https://get.easypanel.io/cli | shConfirm the installation:
easypanel versionThe installers select the correct AMD64 or ARM64 binary and verify its SHA-256
checksum. Set EASYPANEL_CLI_VERSION before running an installer when you need
a specific release.
Connect an Easypanel server
The CLI authenticates with a user API key.
- In Easypanel, open Settings → Server → Users.
- Select Generate API Key for the user that will run CLI commands.
- Select Connect → CLI to see a connection command for the current server.
- Run the command and paste the API key when prompted:
easypanel server add production https://panel.example.comproduction is a local profile name. You can choose another name containing
letters, numbers, dashes, or underscores. The new profile becomes the current
server and the API key is read without echoing it.
Persistent API keys are stored in macOS Keychain, Linux Secret Service, or Windows Credential Manager. The CLI configuration and cached command manifest do not contain the key.
An API key acts as its Easypanel user and can modify or delete resources that user is allowed to manage. Keep it private and revoke it from Settings → Server → Users if it is exposed.
Run commands
Start by listing projects:
easypanel projects listInspect the available command tree or a specific command:
easypanel --help
easypanel projects --help
easypanel app inspect --helpCommands that operate on a project accept its name as a positional argument.
Service commands use <project>/<service>:
easypanel projects inspect my-project
easypanel app inspect my-project/webIn an interactive terminal, you can omit that argument and choose a project or service from a list:
easypanel app inspectCommand and flag names are shown in dash-case. Camel-case aliases also work for compatibility, but dash-case is preferred in scripts and documentation.
Provide input
Simple input fields are exposed as flags. Run the command with --help to see
which flags are required and their accepted values.
For larger inputs, pass JSON directly, read it from a file with @, or read it
from standard input:
easypanel projects update-env my-project --input '{"env":"NODE_ENV=production"}'
easypanel projects update-env my-project --input @project.json
easypanel projects update-env my-project --input - < project.jsonRequired string secrets are requested without echoing when possible. Sensitive
fields returned by Easypanel are redacted by default; use --show-secrets only
when you intentionally need their values.
Destructive commands
Commands that can delete, overwrite, restore, revoke, or otherwise disrupt a
resource ask for confirmation in an interactive terminal. In scripts and CI,
you must explicitly pass --yes or -y:
easypanel projects destroy old-project --yesReview the selected server and exact resource before bypassing confirmation.
Work with multiple servers
Each server is stored as a local profile:
| Command | Purpose |
|---|---|
easypanel server list | List configured server profiles |
easypanel server current | Print the default profile |
easypanel server use <name> | Change the default profile |
easypanel server check [name] | Verify the server, API key, and command manifest |
easypanel server refresh [name] | Reload commands from the server |
easypanel server set-key <name> | Replace a profile's API key |
easypanel server remove <name> | Remove the local profile and stored key |
Use --server or -s to run a single command against a profile without
changing the default:
easypanel --server staging projects listYou can also set EASYPANEL_SERVER for the current process.
Use the CLI in scripts
Pass --format json for machine-readable output and --yes for an intentionally
approved destructive operation:
easypanel projects list --format json
easypanel --server production app deploy my-project/web --format jsonFor CI, supply the API key through EASYPANEL_API_KEY instead of saving it in a
credential manager:
EASYPANEL_SERVER=production \
EASYPANEL_API_KEY="$CI_EASYPANEL_API_KEY" \
easypanel projects list --format jsonAlternatively, pipe a secret into server add without displaying it:
printf '%s' "$EASYPANEL_API_KEY" | \
easypanel server add production https://panel.example.com --api-key-stdinThe default request timeout is 30 seconds. Change it with --timeout or
EASYPANEL_TIMEOUT, using a Go duration such as 2m.
Enable shell completion
Install dynamic completion for Bash, Zsh, Fish, or PowerShell:
easypanel completion installCompletion uses the current server's command manifest and suggests available commands, flags, enum values, projects, and services. Start a new shell after installing it.
Update the CLI
Update the CLI executable and verify the downloaded release checksum:
easypanel self-updateCheck for an update without installing it:
easypanel self-update --checkLinux installations made from a .deb, .rpm, or .apk package should be
updated through the same package format. Set EASYPANEL_NO_UPDATE_CHECK=1 to
disable the automatic daily update check.