База знања

Zinnector® command reference

Every Zinnector® command exactly as zinnector --help lists it — arguments, flags and defaults, a runnable example and what it prints — generated from the CLI itself so it cannot drift from the version you have installed.

<!-- generated by cli/scripts/command-reference.mjs from the CLI's own command definitions — do not edit by hand -->

Every command Zinnector® 0.1.6 understands — 43 in all, exactly as zinnector --help lists them — with its options, a runnable example, and what you should see. This page is generated from the CLI itself, so it cannot disagree with the tool you have installed; if a command here is missing on your machine, run npm install -g zinnector@latest.

Before you start

Install it with npm install -g zinnector on Node 24 or newer, then check the install with zinnector --version and zinnector --help. The getting-started guide walks through the first five minutes; this page is the reference you come back to.

Every command takes -h, --help. These global options go before the command name:

| option | what it does | |---|---| | -V, --version | print the version | | --profile <name> | use a named credential profile |

The commands

zinnector new

Scaffold a WordPress project you can run immediately.

zinnector new [options] [name]

| argument | required | what it is | |---|---|---| | name | no | directory to create the project in, and the project's name — required unless --here |

| option | what it does | default | |---|---|---| | -t, --template <kind> | one of: site, plugin, theme | "site" | | --php <version> | PHP version to develop against | "8.3" | | --wp <version> | WordPress version for the local runtime | "latest" | | --runtime <name> | playground or docker | "playground" | | --here | scaffold into the current directory instead of a new one | |

Example

zinnector new my-site

What you see — captured — 0.1.2 on Linux

Created my-site  ·  site
──────────────────────────

  + .gitignore
  + README.md
  + wp-content/mu-plugins/000-zinnector-dev.php
  + wp-content/plugins/.gitkeep
  + wp-content/themes/.gitkeep
  + zinnector.json

  php        8.3
  wordpress  latest
  runtime    playground

→ run it:
    cd my-site
    zinnector dev

→ then, when you have a hosting slot:
    zinnector link     # point it at a site
    zinnector check    # pre-flight before you push
    zinnector push

zinnector dev

Run this project locally — no Docker required.

zinnector dev [options]

| option | what it does | default | |---|---|---| | --php <version> | PHP version to run (5.2–8.5 on playground, 7.4–8.5 on docker) | | | --wp <version> | WordPress version | | | -p, --port <port> | port to serve on | | | --runtime <name> | playground (default) or docker | | | --login | log in as admin automatically | true | | --no-login | do not log in automatically | | | --once | boot, report what is running, then stop | | | --yes | install the local runtime without asking | | | --reset-runtime | delete the installed runtime and install it again | | | -v, --verbose | show the runtime's own output | |

Example

cd my-site
zinnector dev

What you see — captured — 0.1.2. The first run asks once to download the WordPress runtime (~570 MB); pass --yes to skip the question

my-site  ·  WordPress Playground (WASM, no Docker)
───────────────────────────────────────────────────

  serving    a WordPress project
  from       /home/you/my-site
  php        8.3
  wordpress  latest

✔ running at http://127.0.0.1:9400
  admin: http://127.0.0.1:9400/wp-admin  (already signed in)

  Ctrl-C to stop

zinnector login

Sign in — with your own account in the browser, or with an API key.

zinnector login [options]

| option | what it does | default | |---|---|---| | --profile <name> | store under a named profile (default: default) | | | --api <url> | API base URL | "https://api.zinndigital.com" | | --api-key | paste a per-organisation API key instead of signing in as yourself | | | --issuer <url> | the sign-in service | "https://auth.zinndigital.com/realms/zinn" | | --no-browser | print the sign-in link without trying to open a browser | |

Example

zinnector login

What you see — the key is typed at the prompt, never on the command line. In CI, pipe it: echo "$ZINN_API_KEY" | zinnector login --profile ci

Sign in to Zinn Digital®  ·  https://api.zinndigital.com
────────────────────────────────────────────────────

  API key: ••••••••••••••••••••••••••••

✔ signed in as you@example.com (Acme Ltd) — profile “default”
→ next: zinnector sites

zinnector logout

Forget a stored sign-in.

zinnector logout [options]

| option | what it does | default | |---|---|---| | --profile <name> | which profile to forget (default: default) | |

Example

zinnector logout

What you see

✔ signed out of profile “default”

zinnector whoami

Show who this CLI is signed in as, and what it can reach.

zinnector whoami [options]

| option | what it does | default | |---|---|---| | --profile <name> | use a named profile | | | --scopes | list the permissions an API key carries | | | --json | machine-readable output | |

Example

zinnector whoami --scopes

What you see — captured from a real run of 0.1.5 against production on 2026-09-14; domains, ids and single-use links substituted


Signed in  ·  https://api.zinndigital.com
──────────────────────────────────────────
account        you@example.com
as             a person, signed in through the browser
organisations  8 — listed below
mode           live
credential     profile “default”

  · Example Org  owner · 01a00000-0000-7000-8000-000000000000
  · Example Org· 01a00001-0000-7000-8000-000000000001
  · Example Org· 01a00002-0000-7000-8000-000000000002
  · Example Org· 01a00003-0000-7000-8000-000000000003
  · Example Org· 01a00004-0000-7000-8000-000000000004
  · Example Org· 01a00005-0000-7000-8000-000000000005
  · Example Org· 01a00006-0000-7000-8000-000000000006
  · Example Org· 01a00007-0000-7000-8000-000000000007

  scopes belong to API keys — a signed-in person acts with their ROLE in each organisation (shown above).

zinnector sites

List the sites this key can see.

zinnector sites [options]

| option | what it does | default | |---|---|---| | --json | machine-readable output | | | --status <status> | only sites in this status | |

Example

zinnector sites

What you see — captured from a real run of 0.1.5 against production on 2026-09-14; domains, ids and single-use links substituted


Sites  ·  12
─────────────
domain          status  php      target  id
example-2.com   active  php —    fleet   01a00000-0000-7000-8000-000000000000
example-3.com   active  php —    fleet   01a00001-0000-7000-8000-000000000001
example-4.com   active  php —    fleet   01a00002-0000-7000-8000-000000000002
example-5.com   active  php 8.5  fleet   01a00003-0000-7000-8000-000000000003
example-6.com   active  php —    fleet   01a00004-0000-7000-8000-000000000004
example.com     active  php 8.4  fleet   01a00005-0000-7000-8000-000000000005
example-7.com   active  php —    fleet   01a00006-0000-7000-8000-000000000006
example-8.com   active  php 8.5  fleet   01a00007-0000-7000-8000-000000000007
example-9.com   active  php 8.5  fleet   01a00008-0000-7000-8000-000000000008
example-10.com  active  php 8.5  fleet   01a00009-0000-7000-8000-000000000009
example-11.com  active  php 8.5  fleet   01a00010-0000-7000-8000-000000000010
example-12.com  active  php 8.5  fleet   01a00011-0000-7000-8000-000000000011

zinnector status

Everything the platform knows about one site.

zinnector status [options] [site]

| argument | required | what it is | |---|---|---| | site | no | a site id, primary domain or name — defaults to the site linked in zinnector.json |

| option | what it does | default | |---|---|---| | --json | machine-readable output | |

Example

zinnector status example.com

What you see — captured from a real run of 0.1.5 against production on 2026-09-14; domains, ids and single-use links substituted


example.com  ·  01a00000-0000-7000-8000-000000000000
────────────────────────────────────────────────────────────────────────
status         active
product line   footprint_free
stack          wordpress
region         fsn1
deploy target  fleet
plan           PBN 10

● PHP
version        8.4
can switch to  8.5, 8.4, 8.3, 8.2, 8.1, 8.0, 7.4

● Quota
disk      188 MB used of 500.0 GB
files     6,313 of 2,000,000
database  1 MB

● Deploy
status         building
target         fleet
repository     —
commit         —
live url       —
last deployed  2026-09-14T01:29:26.991511Z

● WordPress
version     7.1
up to date  yes
multisite   no

zinnector share

Give one person access to ONE site — a developer, a designer, a client.

zinnector share [options] <site> <email>

| argument | required | what it is | |---|---|---| | site | yes | the site to share — an id, primary domain or name | | email | yes | who to give access to — they are emailed an invitation if they have no account yet |

| option | what it does | default | |---|---|---| | --role <role> | what they may do: viewer, editor, manager | | | --reason <text> | why they need it — kept with the grant for the audit trail | | | --until <date> | when access ends on its own (YYYY-MM-DD); omit for until-revoked | | | --json | machine-readable output | |

Example

zinnector share example.com dev@agency.test --role editor --reason "rebuild the checkout"

What you see — the exact shape the command prints, from the source (W40-DEVTOOL added these after this file was last captured); your domains, ids and dates will differ

Shared example.com  ·  01a03f39-730a-7dc4-84b0-5d4f7582dd04
────────────────────────────────────────────────────────────

✔ invited dev@agency.test as editor
  They have no account yet, so an invitation has been emailed. Until they
  sign in and accept it they can see nothing; the moment they do, the site is theirs.

→ what they do next, on their own machine:
    npm i -g zinnector && zinnector login   # sign in as themselves
    zinnector clone example.com   # pull the files down

zinnector collaborators

Who has been given access to a site, and whether they have accepted.

zinnector collaborators [options] [site]

| argument | required | what it is | |---|---|---| | site | no | a site id, primary domain or name — defaults to the site linked in zinnector.json |

| option | what it does | default | |---|---|---| | --json | machine-readable output | |

Example

zinnector collaborators example.com

What you see — captured from a real run of 0.1.5 against production on 2026-09-14; domains, ids and single-use links substituted. the exact shape the command prints, from the source (W40-DEVTOOL added these after this file was last captured); your domains, ids and dates will differ


Access to example.com  ·  3
───────────────────────────────────────────────────────────
who              role    status   ends  why                                          grant
dev@agency.test  viewer  revoked  —     Example Org— revoked immediately after       01a00000-0000-7000-8000-000000000000
dev@agency.test  viewer  revoked  —     Example Org— revoked at the end of the walk  01a00001-0000-7000-8000-000000000001
dev@agency.test  editor  revoked  —     Example Org— revoked at the end of the walk  01a00002-0000-7000-8000-000000000002

zinnector unshare

Take a person's access to a site back — by email or grant id.

zinnector unshare [options] <site> <who>

| argument | required | what it is | |---|---|---| | site | yes | the site to take access back on — an id, primary domain or name | | who | yes | the person to remove — their email address, or the grant id from zinnector collaborators |

| option | what it does | default | |---|---|---| | --yes | do not ask | |

Example

zinnector unshare example.com dev@agency.test --yes

What you see — the exact shape the command prints, from the source (W40-DEVTOOL added these after this file was last captured); your domains, ids and dates will differ

✔ withdrew the invitation to dev@agency.test

zinnector invitations

The invitations waiting for you, and accept one.

zinnector invitations [options] [command]

Example

zinnector invitations

What you see — captured from a real run of 0.1.5 against production on 2026-09-14; domains, ids and single-use links substituted. the exact shape the command prints, from the source (W40-DEVTOOL added these after this file was last captured); your domains, ids and dates will differ; with no subcommand it runs list


Invitations  ·  0
──────────────────

● nothing waiting for you

zinnector invitations list

Invitations addressed to the account you are signed in as.

zinnector invitations list [options]

| option | what it does | default | |---|---|---| | --json | machine-readable output | |

Example

zinnector invitations list

What you see — captured from a real run of 0.1.5 against production on 2026-09-14; domains, ids and single-use links substituted. the exact shape the command prints, from the source (W40-DEVTOOL added these after this file was last captured); your domains, ids and dates will differ


Invitations  ·  0
──────────────────

● nothing waiting for you

zinnector invitations accept

Accept an invitation — the site is yours the moment this returns.

zinnector invitations accept [options] <id>

| argument | required | what it is | |---|---|---| | id | yes | the invitation id from zinnector invitations — a unique prefix of it is enough |

Example

zinnector invitations accept 01a03f39-9c11-7b02-a7e0-2e4d0c5f1b77

What you see — the exact shape the command prints, from the source (W40-DEVTOOL added these after this file was last captured); your domains, ids and dates will differ

✔ you now have access to example.com

zinnector link

Point this project at a hosting slot (and connect its repository).

zinnector link [options] [site]

| argument | required | what it is | |---|---|---| | site | no | a site id, primary domain or name — defaults to the site linked in zinnector.json |

| option | what it does | default | |---|---|---| | --repo <owner/name> | connect this repository to the site on the platform | | | --provider <name> | the connected account to deploy through: github_app, github or gitlab (default: the one your organisation has connected) | | | --branch <name> | branch a push deploys from | | | --no-repo | only write zinnector.json; do not touch the platform | |

Example

zinnector link example.com --repo acme/example-site --branch main

What you see

✔ this project deploys to example.com (01a03f39-730a-7dc4-84b0-5d4f7582dd04)
  written to zinnector.json — commit it so everyone deploys to the same slot
✔ the platform will deploy acme/example-site (main)
→ next: zinnector check

zinnector pull

Pull a hosted site's files into this project for local dev — and re-run to re-sync.

zinnector pull [options] [site]

| argument | required | what it is | |---|---|---| | site | no | a site id, primary domain or name — defaults to the site linked in zinnector.json |

| option | what it does | default | |---|---|---| | --via <seam> | auto (default), git, or backup | "auto" | | --fresh | take a new backup rather than using the latest one (spends an on-demand slot) | | | --max-age <hours> | accept the latest backup if it is younger than this | "24" | | --full | the whole document root, WordPress core included (default: wp-content only) | | | --no-uploads | leave wp-content/uploads (media) behind | | | --no-database | leave the site's database behind — take the files only | | | --live-config | also write wp-config.php — it holds the LIVE database credentials | | | --clean | empty wp-content before extracting, so deletions on the site are mirrored | | | --dry-run | say what would happen and stop | | | --yes | do not ask | |

Example

zinnector pull

What you see

Pull example.com  ·  01a03f39-730a-7dc4-84b0-5d4f7582dd04
─────────────────────────────────────────────────────────────

● via git — the site syncs to its own repository and this is a clone of it
✔ fast-forwarded 3 commits 4f1c2a9b → 9d2e7c14

● not synced, and why
  ✖ database                     the local playground has its own; the site's is not copied
  ✖ offloaded media              objects in storage are not in the site's files
  ✖ anything outside the repository  only wp-content syncs

→ next: zinnector dev

zinnector clone

Make a local project from a hosted site: clone its repository or pull its files.

zinnector clone [options] <site> [dir]

| argument | required | what it is | |---|---|---| | site | yes | the hosted site to copy — an id, primary domain or name | | dir | no | directory to create — defaults to the site's primary domain |

| option | what it does | default | |---|---|---| | --via <seam> | auto (default), git, or backup | "auto" | | --fresh | take a new backup rather than using the latest one | | | --full | the whole document root, WordPress core included | | | --no-uploads | leave wp-content/uploads (media) behind | | | --no-database | leave the site's database behind — take the files only | | | --live-config | also write wp-config.php — it holds the LIVE database credentials | | | --yes | do not ask | |

Example

zinnector clone client.example.com

What you see

Clone client.example.com  ·  client.example.com
──────────────────────────────────────────────────────

✔ wrote client.example.com/zinnector.json (php 8.3, wordpress 6.7.1)
● via backup — the site does not sync to a repository
✔ downloaded 214 MB and extracted wp-content

● not synced, and why
  ✖ database                     the local playground has its own; the site's is not copied
  ✖ offloaded media              objects in storage are not in the site's files
  ✖ wp-config.php                holds the live database credentials (--live-config to write it)
  ✖ WordPress core               the runtime supplies the version the slot runs (--full to take it)

→ next: zinnector dev

→ run it:
    cd client.example.com
    zinnector dev

zinnector sync

Two-way sync between a site's live files and its repository.

zinnector sync [options] [command]

Example

zinnector sync --help

What you see — with no subcommand, zinnector sync <site> is sync status

Usage: zinnector sync [options] [command]

two-way sync between a site's live files and its repository

  site → repository   zinnector sync run   commits the live files and pushes the branch
  repository → site   zinnector push       builds the branch and publishes it

zinnector sync status

Where two-way sync stands, and its last runs.

zinnector sync status [options] [site]

| argument | required | what it is | |---|---|---| | site | no | a site id, primary domain or name — defaults to the site linked in zinnector.json |

| option | what it does | default | |---|---|---| | --json | machine-readable output | |

Example

zinnector sync status example.com

What you see — captured from a real run of 0.1.4 against a test site on 2026-09-12; the domain and ids are replaced with example values

Two-way sync — example.com
──────────────────────────

repository   acme/example-site (main)
available    yes
sync         on
state        synced
last sync    2026-09-12T22:51:41.539832Z
note         Started from acme/example-site@main.

run        files       commit         when
synced     2 changed   da85d73cef5f   2026-09-12T22:52:10.117301Z

zinnector sync on

Turn two-way sync on (pushes nothing by itself).

zinnector sync on [options] [site]

| argument | required | what it is | |---|---|---| | site | no | a site id, primary domain or name — defaults to the site linked in zinnector.json |

| option | what it does | default | |---|---|---| | --subdir <path> | only sync this subdirectory of the site | | | --json | machine-readable output | |

Example

zinnector sync on example.com

What you see — needs a repository connected on your own GitHub account; it pushes nothing by itself

✔ two-way sync is on

Two-way sync — example.com
…
→ next: zinnector sync run

zinnector sync off

Turn two-way sync off.

zinnector sync off [options] [site]

| argument | required | what it is | |---|---|---| | site | no | a site id, primary domain or name — defaults to the site linked in zinnector.json |

| option | what it does | default | |---|---|---| | --subdir <path> | only sync this subdirectory of the site | | | --json | machine-readable output | |

Example

zinnector sync off example.com

What you see

✔ two-way sync is off

zinnector sync run

Commit the site's live files to its repository now.

zinnector sync run [options] [site]

| argument | required | what it is | |---|---|---| | site | no | a site id, primary domain or name — defaults to the site linked in zinnector.json |

| option | what it does | default | |---|---|---| | --json | machine-readable output | |

Example

zinnector sync run example.com

What you see — captured from a real run of 0.1.4 against a test site on 2026-09-12; the domain and ids are replaced with example values. A run the repository has moved past is HELD instead: nothing is pushed or overwritten, the command exits 1 and names the next step

✔ committed 2 changed files da85d73cef5f

Two-way sync — example.com
…
→ next: git pull in your clone

zinnector sync resolve

Clear a held sync by choosing which side wins.

zinnector sync resolve [options] [site]

| argument | required | what it is | |---|---|---| | site | no | a site id, primary domain or name — defaults to the site linked in zinnector.json |

| option | what it does | default | |---|---|---| | --keep <side> | site (commit the site on top) or repository (discard the site's unsynced changes) | | | --yes | do not ask | | | --json | machine-readable output | |

Example

zinnector sync resolve example.com --keep repository --yes

What you see — captured from a real run of 0.1.4 against a test site on 2026-09-12; the domain and ids are replaced with example values. Without --yes it asks first, and refuses outright when there is no terminal to ask in

✔ kept the repository

Two-way sync — example.com
…
state        synced

zinnector check

Compare this project against the slot you are about to deploy to.

zinnector check [options] [site]

| argument | required | what it is | |---|---|---| | site | no | a site id, primary domain or name — defaults to the site linked in zinnector.json |

| option | what it does | default | |---|---|---| | --probe | boot the local runtime and MEASURE its php, rather than trusting zinnector.json | | | --all | show passing checks too | | | --strict | also fail when something could not be checked | | | --json | machine-readable output | |

Example

zinnector check

What you see — captured from a real run of 0.1.5 against production on 2026-09-14; domains, ids and single-use links substituted — the run found a real mismatch (PHP 8.3 in the project against 8.4 on the slot), which is the whole point of the command

→ reading the slot
  size excludes: .git

Pre-flight — example.com  ·  01a00000-0000-7000-8000-000000000000
────────────────────────────────────────────────────────────────────────

  local  php 8.4  3 files, 0.0 MB
  slot   php 8.4  target fleet
  local php is the version DECLARED in zinnector.json — run with --probe to measure it

  ? unknown   local php extensions could not be enumerated
      try zinnector dev --once

  ? unknown   wordpress versions could not be compared
      No WordPress version found in the working copy.
      try zinnector status

  7 passed  ·  2 could not be checked

zinnector push

Pre-flight, push your commits, and deploy.

zinnector push [options] [site]

| argument | required | what it is | |---|---|---| | site | no | a site id, primary domain or name — defaults to the site linked in zinnector.json |

| option | what it does | default | |---|---|---| | -f, --force | deploy even when pre-flight has findings | | | --skip-checks | do not run pre-flight at all | | | --probe | measure the local runtime during pre-flight instead of trusting zinnector.json | | | --no-wait | trigger the deploy and exit without watching it | | | --no-git | do not run git push; deploy whatever the platform already has | | | --dry-run | do everything except the deploy | |

Example

zinnector push

What you see

Deploy to example.com  ·  01a03f39-730a-7dc4-84b0-5d4f7582dd04
───────────────────────────────────────────────────────────────

✔ pre-flight: 8 passed  ·  0 to look at  ·  2 could not be checked
→ pushing main (4f1c2a9b add the contact form)
✔ pushed
● deploy 7c0e… started — watching
✔ deployed 4f1c2a9b in 48s

  status    success
  commit    4f1c2a9b
  url       https://example.com

zinnector deploy

Redeploy what the platform already has, without pushing.

zinnector deploy [options] [site]

| argument | required | what it is | |---|---|---| | site | no | a site id, primary domain or name — defaults to the site linked in zinnector.json |

| option | what it does | default | |---|---|---| | --no-wait | trigger and exit | |

Example

zinnector deploy example.com

What you see — captured from a real run of 0.1.5 against production on 2026-09-14; domains, ids and single-use links substituted


Redeploy example.com  ·  01a00000-0000-7000-8000-000000000000
────────────────────────────────────────────────────────────────────────
→ starting the deploy
✔ deploy started

zinnector deploys

A site's deploy history.

zinnector deploys [options] [site]

| argument | required | what it is | |---|---|---| | site | no | a site id, primary domain or name — defaults to the site linked in zinnector.json |

| option | what it does | default | |---|---|---| | --json | machine-readable output | | | -n, --limit <n> | how many to show | "10" |

Example

zinnector deploys example.com

What you see — captured from a real run of 0.1.5 against production on 2026-09-14; domains, ids and single-use links substituted


Deploys — example.com  ·  2
───────────────────────────────────────────────────────────
status  commit  branch  trigger  started                      message
live    —       —       manual   2026-09-14T09:06:39.685554Z  —
live    —       —       manual   2026-09-14T01:29:20.196957Z  —

zinnector php

Show or switch a site's PHP version.

zinnector php [options] [version]

| argument | required | what it is | |---|---|---| | version | no | the PHP version to switch the site to, e.g. 8.4 — omit to show the current one |

| option | what it does | default | |---|---|---| | -s, --site <site> | site id or domain | | | --list | list the versions the platform offers | | | --json | machine-readable output | |

Example

zinnector php 8.3 --site example.com

What you see — captured from a real run of 0.1.5 against production on 2026-09-14; domains, ids and single-use links substituted. with no version it shows the current one; --list shows what the platform offers for this site's product line


PHP — example.com
──────────────────────────────────────────────────────
version        8.4
can switch to  8.5, 8.4, 8.3, 8.2, 8.1, 8.0, 7.4

zinnector quota

Disk, files and database usage against what the plan grants.

zinnector quota [options] [site]

| argument | required | what it is | |---|---|---| | site | no | a site id, primary domain or name — defaults to the site linked in zinnector.json |

| option | what it does | default | |---|---|---| | --json | machine-readable output | |

Example

zinnector quota example.com

What you see — captured from a real run of 0.1.5 against production on 2026-09-14; domains, ids and single-use links substituted


Quota — example.com
────────────────────────────────────────────────────────
disk used      188 MB
disk limit     500.0 GB
disk granted   500 GB  (per_site)
files used     6,313
file limit     2,000,000
database       1 MB

  “limit” is what is enforced today; “granted” is what the plan says.

zinnector db

Database size, and single-use links into phpMyAdmin and the file manager.

zinnector db [options] [site]

| argument | required | what it is | |---|---|---| | site | no | a site id, primary domain or name — defaults to the site linked in zinnector.json |

| option | what it does | default | |---|---|---| | --json | machine-readable output | |

Example

zinnector db example.com

What you see — captured from a real run of 0.1.5 against production on 2026-09-14; domains, ids and single-use links substituted. the phpMyAdmin and file-manager links are single-use and expire; do not paste them anywhere


Database — example.com
───────────────────────────────────────────────────────────
size    1 MB
tables  14

  single-use links, valid for one visit:
  phpMyAdmin    https://pma.example.com/signon.php?t=<single-use>
  file manager  https://files.example.com/signon.php?t=<single-use>

zinnector logs

Tail a site's access and error logs.

zinnector logs [options] [site]

| argument | required | what it is | |---|---|---| | site | no | a site id, primary domain or name — defaults to the site linked in zinnector.json |

| option | what it does | default | |---|---|---| | --access | only the access log | | | --error | only the error log | | | --build | the build log of the most recent deploy instead | | | --json | machine-readable output | |

Example

zinnector logs example.com --error

What you see — captured from a real run of 0.1.5 against production on 2026-09-14; domains, ids and single-use links substituted. --access for the access log, --build for the last deploy's build log (a site not built by a build provider shows the deploy's own steps); with no flag both site logs are shown, and a log that could not be read says so instead of looking empty


Error log — example.com
────────────────────────────────────────────────────────────

2026-09-14 11:06:07.153643 [NOTICE] [1929978] [T0] [config:vhost:zcaffb6eec5abbdab03fb9b2d62a15:epsr:lsphp-zcaffb6eec5abbdab03fb9b2d62a15]'Process Limit' probably is too low, adjust the limit to: 640.
2026-09-14 11:06:37.873060 [INFO] [1929982] [T0] [lsphp-zcaffb6eec5abbdab03fb9b2d62a15] add child process pid: 1933036, procinfo: 0x5555561cfe30

zinnector wp

Run an allow-listed WP-CLI command on a site.

zinnector wp [options] [command...]

| argument | required | what it is | |---|---|---| | command... | no | the WP-CLI command and its arguments, e.g. plugin list — omit it with --commands |

| option | what it does | default | |---|---|---| | -s, --site <site> | site id or domain | | | --commands | list what the platform will run | | | --json | machine-readable output | |

Example

zinnector wp plugin list --site example.com

What you see — captured from a real run of 0.1.5 against production on 2026-09-14; domains, ids and single-use links substituted. the allow-list is served by the platform — zinnector wp --commands prints it

name	status	update	version	update_version	auto_update
akismet	inactive	none	5.7.2		off
hello	inactive	none	1.7.2		off
imunify-security	active	none	4.1.0		off
litespeed-cache	active	none	7.9.1		off
redis-cache	active	none	2.8.0		off
zinn-cache	active	none	1.2.2		off
object-cache.php	dropin				off

zinnector backup

List and take site backups.

zinnector backup [options] [command]

Example

zinnector backup list example.com

What you see — captured from a real run of 0.1.5 against production on 2026-09-14; domains, ids and single-use links substituted. backup on its own prints its subcommands; see backup list and backup now below


Backups — example.com  ·  3
───────────────────────────────────────────────────────────
status  taken                        size    id
stored  2026-09-14T09:06:39.918280Z  4.7 MB  01a00000-0000-7000-8000-000000000000
stored  2026-09-14T01:29:20.403161Z  36 MB   01a00001-0000-7000-8000-000000000001
stored  2026-09-14T01:29:15.898099Z  36 MB   01a00002-0000-7000-8000-000000000002

daily backups   on
retention       30 days
off-site copy   yes
on-demand left  2 of 3

zinnector backup list

List a site's backups and what its plan grants.

zinnector backup list [options] [site]

| argument | required | what it is | |---|---|---| | site | no | a site id, primary domain or name — defaults to the site linked in zinnector.json |

| option | what it does | default | |---|---|---| | --json | machine-readable output | |

Example

zinnector backup list example.com

What you see — captured from a real run of 0.1.5 against production on 2026-09-14; domains, ids and single-use links substituted


Backups — example.com  ·  3
───────────────────────────────────────────────────────────
status  taken                        size    id
stored  2026-09-14T09:06:39.918280Z  4.7 MB  01a00000-0000-7000-8000-000000000000
stored  2026-09-14T01:29:20.403161Z  36 MB   01a00001-0000-7000-8000-000000000001
stored  2026-09-14T01:29:15.898099Z  36 MB   01a00002-0000-7000-8000-000000000002

daily backups   on
retention       30 days
off-site copy   yes
on-demand left  2 of 3

zinnector backup now

Take an on-demand backup.

zinnector backup now [options] [site]

| argument | required | what it is | |---|---|---| | site | no | a site id, primary domain or name — defaults to the site linked in zinnector.json |

Example

zinnector backup now example.com

What you see

✔ backup started — zinnector backup list example.com shows it when it completes

zinnector domains

List the domains this key can see.

zinnector domains [options]

| option | what it does | default | |---|---|---| | --json | machine-readable output | |

Example

zinnector domains

What you see — captured from a real run of 0.1.5 against production on 2026-09-14; domains, ids and single-use links substituted


Domains  ·  1
──────────────
domain       status     ownership  renewal        expires
example.com  connected  connected  no auto-renew  —

zinnector dns

Read and change DNS records.

zinnector dns [options] [command]

Example

zinnector dns list example.com

What you see — captured from a real run of 0.1.5 against production on 2026-09-14; domains, ids and single-use links substituted. dns on its own prints its subcommands; see dns list, dns add and dns rm below


DNS — example.com  ·  1 records
────────────────────────────────────────
type  name          value               ttl
TXT   w4357-verify  zinn-w4357-updated  ttl 3600

zinnector dns list

List a domain's DNS records.

zinnector dns list [options] <domain>

| argument | required | what it is | |---|---|---| | domain | yes | the domain, by name or id |

| option | what it does | default | |---|---|---| | --type <type> | only records of this type | | | --json | machine-readable output | |

Example

zinnector dns list example.com

What you see — captured from a real run of 0.1.5 against production on 2026-09-14; domains, ids and single-use links substituted


DNS — example.com  ·  1 records
────────────────────────────────────────
type  name          value               ttl
TXT   w4357-verify  zinn-w4357-updated  ttl 3600

zinnector dns add

Create a DNS record.

zinnector dns add [options] <domain> <type> <name> <value>

| argument | required | what it is | |---|---|---| | domain | yes | the domain, by name or id | | type | yes | record type: A, AAAA, CNAME, MX, TXT, SRV, … | | name | yes | the record name — @ for the domain itself, or a subdomain label | | value | yes | what the record points at — an address, a hostname or text |

| option | what it does | default | |---|---|---| | --ttl <seconds> | time to live | "3600" | | --priority <n> | priority, for MX and SRV | | | --proxied | route through the CDN | | | -y, --yes | do not ask | |

Example

zinnector dns add example.com TXT _acme "token" --ttl 300

What you see — the record is shown and confirmed before it is written; pass --yes to skip the question

Add a DNS record to example.com
───────────────────────────────

  type   TXT
  name   _acme
  value  "token"
  ttl    300

  create it? [y/N] y
✔ created TXT _acme

zinnector dns rm

Delete a DNS record.

zinnector dns rm [options] <domain> <recordId>

| argument | required | what it is | |---|---|---| | domain | yes | the domain, by name or id | | recordId | yes | the record id, as zinnector dns list prints it |

| option | what it does | default | |---|---|---| | -y, --yes | do not ask | |

Example

zinnector dns rm example.com rec_7f3a

What you see

⚠ deleting A @ 203.0.113.10 from example.com
  delete it? [y/N] y
✔ deleted

zinnector mail

List mail services.

zinnector mail [options]

| option | what it does | default | |---|---|---| | --json | machine-readable output | |

Example

zinnector mail

What you see — captured from a real run of 0.1.5 against production on 2026-09-14; domains, ids and single-use links substituted


Mail services  ·  0
────────────────────

● no mail services

zinnector bulk

Run one operation across many sites (cache_purge, malware_scan, sitemap, block_ip).

zinnector bulk [options] <operation>

| argument | required | what it is | |---|---|---| | operation | yes | what to run on every selected site: cache_purge, malware_scan, sitemap or block_ip |

| option | what it does | default | |---|---|---| | --all | every site this key can see | | | --site <site...> | specific sites, by id or domain | | | --status <status> | every site in this status | | | -y, --yes | do not ask | | | --json | machine-readable output | |

Example

zinnector bulk cache_purge --all

What you see — captured from a real run of 0.1.5 against production on 2026-09-14; domains, ids and single-use links substituted. one call to the platform for the whole selection, not one per site; the selection is shown and confirmed first


Bulk cache_purge  ·  1 sites
─────────────────────────────

·   example.com

→ running cache_purge
✔ cache_purge accepted for 1 sites

  The platform runs this asynchronously; results appear per site in the dashboard.

zinnector ai

Ask the Zinn Digital® assistant, with this project as context.

zinnector ai [options] <question...>

| argument | required | what it is | |---|---|---| | question... | yes | what you want to ask, in plain words — quoting it is optional |

| option | what it does | default | |---|---|---| | -s, --site <site> | ask about a particular site | | | --org <id> | the organisation to ask as, when your account belongs to more than one | | | --no-context | do not send anything about the local project | | | --json | machine-readable output | |

Example

zinnector ai "why is my deploy failing?"

What you see — captured from a real run of 0.1.5 against production on 2026-09-14; domains, ids and single-use links substituted. The assistant answers in the ACCOUNT's language — this account's locale is Arabic, so the captured answer is Arabic to an English question

→ thinking

Zinn Digital® assistant
────────────────────────────

  هذا مشروع WordPress تم إنشاؤه بواسطة Zinnector® (مُهيّأ على PHP 8.4، أحدث
  إصدار WordPress، وبيئة تشغيل playground)؛ لتشغيله محلياً، انتقل إلى مجلده
  وشغّل الأمر: cd <اسم-المشروع> ثم zinnector dev، وسيقوم بتشغيل موقع WordPress
  حقيقي على جهازك دون الحاجة إلى Docker.

  sources:
    · https://zinndigital.com/kb/zinnector-getting-started
    · https://zinndigital.com/kb/zinnector-local-development

zinnector mcp

Run a stdio bridge to the hosted MCP server — for Claude Desktop and other local-only clients.

zinnector mcp [options]

Example

ZINN_MCP_TOKEN=zmcp_live_… zinnector mcp

What you see — started BY an AI client such as Claude Desktop, never by hand — it speaks MCP on stdin and stdout. Proven from Claude Code 2.1.270 against the live server on 2026-09-12

zinnector 0.1.4: MCP bridge to https://api.zinndigital.com/v1/mcp

Environment variables

| variable | effect | |---|---| | ZINNECTOR_TOKEN | an API key, used instead of a stored profile — this is how CI authenticates | | ZINNECTOR_API | API base URL (default https://api.zinndigital.com) | | ZINNECTOR_DEBUG=1 | print stack traces and the runtime installer's own output | | ZINNECTOR_CACHE_DIR | where the WordPress runtime and any managed Node are kept (default ~/.cache/zinnector) | | ZINNECTOR_CONFIG_DIR | where the API key profile file lives (default ~/.config/zinnector) | | NO_COLOR | disable colour |

Exit codes

0 success · 1 a finding or a refusal · 70 an internal error · 77 authentication or permission · 78 unsupported Node.

Овај чланак још увек није преведен на ваш језик, па зато читате верзију на енглеском језику.

Сва документација за програмере →

Најновије са блога

О чему смо писали када је реч о хостингу, SEO-у и вођењу сајтова великих размера.

SEO и изградња линкова са хостинг слоја: поглед оператера за 2026. годину

Како хостинг утиче на индексирање и вредност линкова у 2026. години: одржавање страница индексираним, провера старих домена пре израде сајтова на њима, изградња линкова без отиска (footprint-а) и искрен осврт на то шта инфраструктура може, а шта не може да учини за SEO.

Прочитајте чланак →

Како учинити WordPress брзим и безбедним: Контролна листа за перформансе и прикључке

Практична контролна листа за брз и безбедан WordPress: кеширање на нивоу сервера, кеш објеката по сајту, неколицина додатака вредних коришћења, одржавање стека ажурним и WooCommerce странице које никада не смете кеширати.

Прочитајте чланак →

Како изабрати управљани веб-хостинг у 2026. години: Водич за купце

Шта заправо разликује добар управљани хостинг од јефтиног сервера са контролним панелом — миграције, резервне копије, изолација, право кеширање и поштено скалирање — и како да то процените пре него што се обавежете.

Прочитајте чланак →

Прочитајте блог →

И даље сте заглављени?

Подршка је укључена у сваки план, служба је отворена 24 сата дневно и можете нам писати на било ком од наших 58 језика — одговарамо вам на вашем језику.

Контактирајте подршку → Сви чланци →