Deploy and Automation CLI
The Zenifra CLI lets you list projects, create resources, and trigger deploys from terminals, scripts, and pipelines.
This page summarizes deploy and automation commands. For the full tool reference, see Zenifra CLI.
Use the CLI when you want to operate Zenifra without opening the console: create a project, inspect plan catalogs, list resources, trigger deploys, and follow builds.
Quick start
npm install -g @zenifra/cli
zenifra auth login
zenifra projects --type http --page 1 --limit 15
zenifra create project
zenifra deploy --project <project-id> --branch main
zenifra deploy watch --project <project-id> --build <build-id>In the GitHub flow, zenifra deploy triggers the build and returns build_id. Then zenifra deploy watch follows status and incremental logs until completion.
To see all available commands:
zenifra --help
zenifra help create projectIncomplete commands such as zenifra deploy, zenifra deploy watch, and zenifra builds open command-specific help.
Authentication
User login
Use user login to navigate between organizations:
zenifra auth login
zenifra orgs
zenifra org setThis mode is intended for interactive terminal use.
API key for automation
For CI/CD and server-side jobs, create an organization API key and use:
export ZENIFRA_API_KEY=znf_your_key
zenifra projects --type http --page 1 --limit 15
zenifra deploy --project <project-id> --branch mainYou can also save the key in the local session:
zenifra auth api-key --key znf_your_keyAPI keys already carry their linked organization. Automation commands therefore do not require org set.
Create a project from the terminal
Run zenifra create project without flags when you want to follow the interactive wizard. It asks for the required fields, shows examples, and makes explicit which values must be provided.
$ zenifra create project
Zenifra create project
? Project name: app-api
? Description: Product main API
? Project type: http
? Plan: free
? Payment mode: hourly
? Deploy source: github
? Repository owner: my-org
? Repository name: app-api
? Branch: main
? Runtime: nodejs
? Runtime version: 24
? Auto-deploy: yes
? Start command: npm start
? Build command: npm run build
? HTTP port: 3000
? Instances: 1
? Persistent storage: no
? Environment variables: yes
? Variable name: NODE_ENV
? Variable value: production
? Add another item? no
Summary
project: app-api | plan: free | payment: hourly
github: my-org/app-api@main | runtime nodejs@24
port: 3000 | instances: 1
Field Value
------- --------------------------------------
Project 507f1f77bcf86cd799439012
Domain https://app-api.client.zenifra.comThe command above is a simulated flow. Real values should match your repository, plan, port, runtime, and variables.
Common examples
List HTTP projects:
zenifra projects --type http --page 1 --limit 15Project listing is paginated by default with 15 items per page. Use --page <n> to navigate; use --limit <n> when automation needs a different page size.
Create a project from a configuration file:
zenifra create project \
--name app-api \
--plan free \
--payment-mode hourly \
--config @http-project.jsonIn HTTP project configuration files, set exposure: "public" to create a public route/domain or exposure: "private" to keep the application without internet exposure.
After creation, change exposure with:
zenifra project exposure set --project <project-id> --exposure public
zenifra project exposure set --project <project-id> --exposure privateUse private for automations, internal jobs, and apps that do not need public traffic.
Trigger a deploy:
zenifra deploy --project <project-id> --branch mainWatch that build:
zenifra deploy watch --project <project-id> --build <build-id>Reopen logs for a specific build:
zenifra builds logs --project <project-id> --build <build-id>
zenifra builds logs --project <project-id> --build <build-id> --followList existing builds:
zenifra builds --project <project-id>Use builds when you need to discover a build_id. Use deploy watch when you already have a specific build to follow.
Inspect plans before creating:
zenifra plans --type httpSecurity
- use
ZENIFRA_API_KEYin CI provider secrets; - configure IP allowlists when the runner has a fixed IP;
- grant only the required permissions;
- rotate and revoke old keys.