CLI commands
Every `skiffly` command with its flags. Global target flags `-p/--project`, `-e/--environment`, `-s/--service` accept an id or a name.
Install with npm i -g skiffly (Node.js 20+). The CLI guide walks through the workflow; this page is the complete list.
Auth#
| Command | Description |
|---|---|
login [--token <t>] | Save a token (prompts when omitted) to ~/.config/skiffly/config.json |
logout | Forget the token |
whoami | Current user and workspaces |
Projects and linking#
| Command | Description |
|---|---|
list | Projects across your workspaces |
init [--name <n>] [--workspace <id>] | Create a project and link the current directory |
link [project] [-p] [-e] [-s] | Link the directory to a project / environment / service |
unlink | Remove the link |
status | Linked target plus every service's deployment status and domains |
open [--print] | Open the linked project or service in the dashboard |
environment [name] | Switch the linked environment |
environment list | List environments |
environment new <name> [--duplicate <env>] | Create an environment, optionally copying variables and settings |
service [name] | Link a service |
service list | List services |
service delete | Delete the linked service |
Deploying#
| Command | Description |
|---|---|
up [path] [-d] [-c] [-y] [--commit <sha>] | Deploy the pushed HEAD of the current branch; -d detach, -y create the service without asking |
redeploy | Re-run the latest build |
restart | Restart containers in place |
deploy --image <image> [--name <n>] [--port <p>] [-v K=V …] | Create an image service, or change the linked service's image |
deploy --template <code> [-v K=V] [-v Service.K=V] | Deploy a template |
deploy-template <code> … | Alias of the above |
deployment list | Recent deployments |
Logs and shell#
| Command | Description |
|---|---|
logs [deploymentId] [-b|--build] [-d|--deploy] [--system] [-f] [-n <N>] [--filter <text>] | Logs; -f polls every 2 s |
ssh [-s] [-e] [--deployment <id>] [-T] [-- cmd…] | Shell or one-off command in a running container; -T no pseudo-terminal |
shell | Alias of ssh |
run [-s] [-e] -- <cmd> | Run a local command with the service's variables in the environment |
Variables#
| Command | Description |
|---|---|
variables [list] [--kv] [--shared] | List (aliases variable, vars, var) |
variables set K=V … [--stdin K] [--shared] [--skip-deploys] | Set; redeploys unless --skip-deploys |
variables delete K … | Delete |
Networking#
| Command | Description |
|---|---|
domain | Generate a *.skiffly.cloud domain (or print the existing one) |
domain <custom.domain> | Add a custom domain; prints CNAME and TXT records |
domain list | Domains of the service |
domain status <domain> | Re-check DNS and verification |
domain delete <domain> | Remove a domain |
proxy list | TCP proxies |
proxy add --port <p> | Expose a container port on edge.skiffly.cloud:2xxxx |
proxy delete <id|port> | Remove a proxy |
connect [service] [-y] [--print] | Open psql / mysql / redis-cli / mongosh through a proxy |
Volumes, templates, billing#
| Command | Description |
|---|---|
volume list | Volumes of the environment |
volume add --mount-path <path> [--size <GB>] | Create a volume on the linked service |
templates [search] [--category <c>] [--featured] | Browse the catalog |
billing (alias usage) | Balance, plan, current usage |
Config as code#
| Command | Description |
|---|---|
config init | Write .skiffly/skiffly.ts from the linked environment |
config validate | Evaluate the file without API calls |
config plan [--prune] [--json] [--show-secrets] [-f <file>] | Preview the diff |
config apply [--yes] [--prune] [--no-deploy] [-f <file>] | Apply the diff and deploy changed services |
MCP, docs, raw API#
| Command | Description |
|---|---|
mcp | Run the MCP server over stdio |
mcp tools | Print the tool list |
mcp install claude|cursor|codex | Register the server with the client |
docs [query] | Open the docs, or search the bundled docs |
api '<query>' [-v '<json>'] | Raw GraphQL request with the saved token |
Environment variables#
| Variable | Meaning |
|---|---|
SKIFFLY_TOKEN | Token; overrides the saved login |
SKIFFLY_PROJECT_ID, SKIFFLY_ENVIRONMENT_ID, SKIFFLY_SERVICE_ID | Override the directory link |
SKIFFLY_API_URL | GraphQL endpoint (default https://api.skiffly.dev/graphql) |
SKIFFLY_CONFIG_DIR, XDG_CONFIG_HOME | Where the config file lives |
SKIFFLY_DEBUG=1 | Stack traces on errors |
Exit codes#
0 ok · 1 error · 2 usage or not linked · 3 not authenticated · 4 not found · 5 forbidden or plan limit · 6 network. Every list command supports --json.