@zevcloud/cli
v0.5.0
Published
ZevCloud CLI — Deploy applications from the command line
Downloads
34
Maintainers
Readme
@zevcloud/cli
⚡ Deploy applications, WordPress sites, databases, and static sites to ZevCloud from your terminal.
cd my-app
zevcloud initInstall
npm install -g @zevcloud/cliRequires Node.js 18 or newer.
Quick start
Generate an API key in your dashboard at Settings → API Keys, authenticate the CLI, then run init from your project directory:
# Authenticate the CLI for a team
zevcloud login
# From inside your project directory
cd my-app
zevcloud initzevcloud init walks you through everything interactively:
- Auto-detects your source. A
.git/with a GitHub origin → GitHub-source service. No git or non-GitHub remote → direct terminal upload (no git setup required). - Auto-detects your framework from
package.jsonso the picker defaults to the right one. - Lists existing services in the chosen environment first, so you can redeploy or run other actions against them without memorising service IDs.
- Picks a plan from the live catalog and checks your credits before creating the service.
- Triggers the first deploy and tails until it succeeds or fails. Prints the live URL.
Already deployed? Use deploy for subsequent builds:
# Redeploy — the CLI does the right thing per service (GitHub pull or terminal upload)
zevcloud deploy <serviceId>
# Tail live logs
zevcloud logs <serviceId> -fCommands
| Command | What it does |
|---------|--------------|
| zevcloud login | Authenticate with an API key (adds a team to the CLI) |
| zevcloud logout | Remove the active team (--all to wipe every configured team) |
| zevcloud whoami | Show the active team and any others configured |
| zevcloud team list | List configured teams |
| zevcloud team switch [name] | Switch active team (interactive picker if no name given) |
| zevcloud team remove <name> | Drop a configured team |
| zevcloud init | Create a new service from the current directory (interactive wizard) |
| zevcloud projects | List projects in the active team |
| zevcloud services [projectId] | List services |
| zevcloud deploy <id> | Trigger a deployment (source-mode + type aware) |
| zevcloud restart <id> | Recycle a service container |
| zevcloud stop <id> | Stop a service (storage and config preserved) |
| zevcloud logs <id> [-f] | View runtime logs, with optional follow mode |
| zevcloud env list <id> | List environment variables on a service |
| zevcloud env set <id> <key> <value> | Set an environment variable |
| zevcloud env remove <id> <varId> | Remove an environment variable |
| zevcloud config --api-url <url> | Override the API endpoint |
| zevcloud version | Show CLI version, latest on npm, and runtime info |
| zevcloud help [command] | Show help text for the CLI or a specific command |
For per-command help and option details:
zevcloud help deploy
zevcloud deploy --helpMulti-team support
If you belong to multiple teams as member or admin, configure each one separately. ZevCloud API keys are team-scoped, so you generate one key per team and add them all to the CLI:
# Add Team A
zevcloud login
# Later, add Team B without losing Team A
zevcloud login
# See everything that's configured
zevcloud team list
# Switch the default team
zevcloud team switch acme-corp
# Or run a single command against a non-active team without switching
zevcloud --team acme-corp deploy 9c4f1e2b-...The --team flag works on any command. It does not change your default team, only the team for that one invocation.
Source modes
zevcloud init picks a source mode automatically based on what's in your project directory:
- GitHub source — when
.git/exists with a GitHub origin URL. Coolify clones your repo on every deploy. Subsequentzevcloud deploy <id>runs trigger a fresh pull + build. Auto-deploy ongit pushworks too (configure via the GitHub App). - Direct upload — when there's no git remote (or it isn't GitHub). The CLI tars your current directory (respecting
.gitignore+.zevcloudignore), uploads via a pre-signed URL, and the build runs against that tarball. Subsequentzevcloud deploy <id>re-tars and re-uploads from your current directory.
Upload mode supports Next.js, Astro, Nuxt, Remix, SvelteKit, Vite, and Node.js. Frameworks outside this set need a GitHub repo so nixpacks can handle the build.
Service-type awareness
ZevCloud has four service types and the CLI commands route correctly per type:
- Web app / worker —
deploytriggers a fresh build (GitHub pull or terminal upload, depending on how the service was created). - WordPress —
deployprovisions the site on first run;restartrecycles the PHP container after that. - Static site — files are pushed via the dashboard or SFTP; use
restartto recycle. - Database —
restartandstopfor lifecycle;deployis not applicable.
Run zevcloud deploy <id> against any service type and the CLI will do the right thing or guide you to the correct command.
API key scopes
When you generate an API key, you choose a scope. The CLI is bound to that scope on every request and cannot escalate.
| Scope | Permissions |
|-------|-------------|
| read | List and inspect projects, services, deployments, env-var keys, logs, billing. No mutations. |
| deploy | Everything read can do, plus trigger deployments, restart/stop services, set or delete env vars, verify a custom domain. The right choice for CI and AI agents. |
| full | Equivalent to a human admin. Adds project/service/environment create + delete, custom-domain management, terminal commands, SFTP password rotation, public DB toggling, and DNS-record management on purchased domains. |
Some actions always require interactive authentication and are not reachable from any API key, even full. These include creating/revoking API keys themselves, deleting a team, inviting members, billing changes, and connecting GitHub. Use the dashboard for those.
Environment variables
The CLI honors a few environment variables, useful in CI pipelines and AI agent workflows:
| Variable | Purpose |
|----------|---------|
| ZEVCLOUD_API_KEY | Authenticate without storing a key on disk. Takes precedence over the configured active team when set. |
| ZEVCLOUD_TEAM_ID | Pair with ZEVCLOUD_API_KEY to set the team-id header explicitly. |
| ZEVCLOUD_DISABLE_UPDATE_CHECK | Set to true to skip the daily "is there a newer version?" check. |
| ZEVCLOUD_DISABLE_POSTINSTALL | Set to true to silence the postinstall welcome message. |
| CI | Auto-detected. The CLI suppresses the postinstall message and update-check banner when set. |
Update behavior
The CLI checks the npm registry once every 24 hours for a newer version. If one is available, you'll see a small notice after your command completes:
✨ Update available: 0.2.1 → 0.3.0
Run "npm install -g @zevcloud/cli@latest" to update.The check runs in the background, never blocks your command, and is silent on any network failure. To disable it, set ZEVCLOUD_DISABLE_UPDATE_CHECK=true.
Diagnostics
For bug reports, paste the output of:
zevcloud versionThis shows the installed version, the latest known version on npm, the last update-check time, and your Node and platform info.
Documentation
Full guides and API reference at docs.zevcloud.net.
License
MIT © ZevOP Technologies
