Skip to content

The Cantila CLI

cantila is the zero-dependency Node 20 binary that wraps the public API. Same scoping as an API key. Same actions as the Console. Faster for everything once you know the verb.

Install

npm i -g cantila-cli

Verify:

cantila --version

Authenticate

There is no interactive login command. The CLI authenticates with an API key, exactly like the public API.

Create a key in the Console, or mint one from the CLI itself once you have a key with admin scope (or during first-run bootstrap).

Mint a key, then save it to your config:

cantila keys create my-laptop --scope deploy
# → prints the raw key ONCE — copy it now
cantila config set apiKey=ck_live_...

The raw key is shown a single time on creation. After that only its prefix is ever displayed. Scopes are read, deploy (the default), and admin.

Confirm who you are:

cantila whoami

This prints the Account and key the CLI is authenticated as.

Prefer not to write the key to disk? Export CANTILA_API_KEY instead. Every config value has an environment-variable override — see CLI configuration.

Shape

cantila <command> [<subcommand>] [<target>] [--flags]

The first word is a command — a product or platform concept (projects, deploy, env, logs, mail, sms, domain, agents). Many commands take a subcommand (env set, keys create, backups restore); when omitted they default to listing.

Ship your first deploy

1. Create a project

cantila create blog --runtime node --region fsn1

Runtime defaults to node and region to fsn1. Valid runtimes: static, node, python, php, go, ruby, docker. Valid regions: fsn1, hel1, ash. The command prints the new project id and its {slug}.cantila.app subdomain (live after the first deploy).

2. Deploy it

cantila deploy <projectId>

Deploys stream step-by-step by default. The CLI prints each build and provision step as it happens, then the live URL and any auto-wired env. Pass --no-stream for a single-shot wait instead.

Deploy a pre-built image, or build and push one locally:

# image already in a registry
cantila deploy <projectId> --image registry.example.com/blog:latest

# build + push from a local Dockerfile, then deploy
cantila deploy <projectId> --build . --registry registry.example.com/blog --tag v2

--build requires --registry; --tag and --dockerfile are optional. You cannot pass both --image and --build.

3. Watch it

cantila logs <projectId>
cantila status <projectId>
cantila open <projectId>

logs shows build and deploy logs, status reports services, domains and recent deploys, and open launches the project's primary URL in your browser.

Where to next

Output rules

The CLI follows the brand voice:

  • One line per event. No prose.
  • for success, for failure — that is it for emoji.
  • Errors state what happened, then the recovery on the next line.