CLI Reference
CLI Reference
Heroku-style command interface for Pvdify.
Status: ⏳ Planned - Not Yet Implemented
The pvdify CLI is currently in development. The commands below represent the planned interface. For now, use the REST API directly or the Admin UI at pvdify.win.
Installation
# Install via scriptcurl -fsSL https://pvdify.win/install.sh | bash
# Or download binarycurl -L https://pvdify.win/releases/latest/pvdify-linux-amd64 -o /usr/local/bin/pvdifychmod +x /usr/local/bin/pvdify
# Verify installationpvdify versionAuthentication
# Interactive login (opens browser)pvdify login
# Login with tokenpvdify login --token $PVDIFY_TOKEN
# Check auth statuspvdify auth:whoami
# Logoutpvdify logoutApps
apps
List all apps.
pvdify appsOutput:
NAME ENVIRONMENT STATUS RELEASEmyapp production running v42myapp-staging staging running v15myapp-pr-123 preview running v1apps:create
Create a new app.
pvdify apps:create myapppvdify apps:create myapp-staging --environment stagingOptions:
| Flag | Description |
|---|---|
--environment | Environment type (production, staging, preview) |
apps:info
Show app details.
pvdify apps:info myappOutput:
=== myappEnvironment: productionStatus: runningImage: ghcr.io/org/app:v1.2.3Bind Port: 3001Created: 2026-01-01T10:00:00Z
Processes: web.1: running web.2: running worker.1: running
Domains: myapp.com www.myapp.comapps:destroy
Delete an app.
pvdify apps:destroy myapppvdify apps:destroy myapp --confirm myappOptions:
| Flag | Description |
|---|---|
--confirm | Skip confirmation prompt |
Deploy
deploy
Deploy an image to an app.
pvdify deploy myapp --image ghcr.io/org/app:v1.2.3pvdify deploy myapp # Uses image from pvdify.yamlOptions:
| Flag | Description |
|---|---|
--image | Container image to deploy |
--wait | Wait for deploy to complete (default: true) |
--timeout | Deploy timeout (default: 5m) |
releases
List releases for an app.
pvdify releases myappOutput:
VERSION IMAGE STATUS CREATEDv42 ghcr.io/org/app:v1.2.3 active 2026-01-05T10:30:00Zv41 ghcr.io/org/app:v1.2.2 superseded 2026-01-04T10:00:00Zv40 ghcr.io/org/app:v1.2.1 superseded 2026-01-03T10:00:00Zrollback
Rollback to a previous release.
pvdify rollback myapp # Previous releasepvdify rollback myapp --version 40 # Specific versionOptions:
| Flag | Description |
|---|---|
--version | Target release version |
Config
config
Show config vars for an app.
pvdify config myappOutput:
=== myapp Config VarsNODE_ENV: productionDATABASE_URL: postgres://...API_KEY: [REDACTED]config:set
Set config vars.
pvdify config:set myapp KEY=valuepvdify config:set myapp KEY1=val1 KEY2=val2pvdify config:set myapp --secret API_KEY=sk_live_...Options:
| Flag | Description |
|---|---|
--secret | Encrypt value with SOPS |
config:unset
Remove config vars.
pvdify config:unset myapp KEYpvdify config:unset myapp KEY1 KEY2config:versions
Show config version history.
pvdify config:versions myappOutput:
VERSION CREATED CHANGESv3 2026-01-05T10:30:00Z API_KEYv2 2026-01-03T10:00:00Z DATABASE_URLv1 2026-01-01T10:00:00Z NODE_ENVDomains
domains
List domains for an app.
pvdify domains myappOutput:
DOMAIN STATUS SSLmyapp.com active truewww.myapp.com active truedomains:add
Add a domain to an app.
pvdify domains:add myapp myapp.compvdify domains:add myapp api.myapp.comdomains:remove
Remove a domain from an app.
pvdify domains:remove myapp old.myapp.comProcesses
ps
List running processes.
pvdify ps myappOutput:
TYPE COUNT STATUS COMMANDweb 2 running npm startworker 1 running npm run workerps:scale
Scale process count.
pvdify ps:scale myapp web=3pvdify ps:scale myapp web=2 worker=2ps:restart
Restart processes.
pvdify ps:restart myapp # All processespvdify ps:restart myapp --type web # Specific typeOptions:
| Flag | Description |
|---|---|
--type | Process type to restart |
Logs
logs
View application logs.
pvdify logs myapppvdify logs myapp -f # Follow/streampvdify logs myapp -n 200 # Last 200 linespvdify logs myapp --process web # Filter by processOptions:
| Flag | Description |
|---|---|
-f, --follow | Stream new logs |
-n, --lines | Number of lines (default: 100) |
--process | Filter by process type |
--since | Start time (e.g., “1h”, “2026-01-05”) |
Run
run
Run a one-off command.
pvdify run myapp -- npm run migratepvdify run myapp -- bashpvdify run myapp --detach -- npm run long-taskOptions:
| Flag | Description |
|---|---|
--detach | Run in background |
--timeout | Command timeout |
Maintenance
maintenance:on
Enable maintenance mode.
pvdify maintenance:on myappmaintenance:off
Disable maintenance mode.
pvdify maintenance:off myappVersion
version
Show CLI version.
pvdify versionOutput:
pvdify/1.0.0 linux-amd64 go1.21Global Options
| Flag | Description |
|---|---|
--app, -a | App name (can be set in pvdify.yaml) |
--format | Output format (table, json, yaml) |
--quiet | Suppress output |
--verbose | Verbose output |
Configuration File
Create pvdify.yaml in your project root:
app: myappimage: ghcr.io/org/app
processes: web: command: npm start count: 2 worker: command: npm run worker count: 1
resources: memory: 512M cpu: 0.5
healthcheck: path: /health interval: 30s
hooks: pre_deploy: - npm run migrate post_deploy: - npm run cache:clearCommands automatically use values from pvdify.yaml:
# In project directory with pvdify.yamlpvdify deploy # Uses app and image from configpvdify logs -f # Uses app from configEnvironment Variables
| Variable | Description |
|---|---|
PVDIFY_TOKEN | Authentication token |
PVDIFY_APP | Default app name |
PVDIFY_API_URL | API endpoint (default: https://pvdify.win) |
Exit Codes
| Code | Description |
|---|---|
| 0 | Success |
| 1 | General error |
| 2 | Invalid arguments |
| 3 | Authentication error |
| 4 | Not found |
| 5 | Deploy failed |