auth
Operator authentication (enroll/whoami)
auth enroll Redeem an operator enroll token for an operator client cert. Cache-first and idempotent; fails if the cached cert is not an operator cert (OU ≠ operator).
--token-file) --token-file string - file containing the operator enroll token --enroll string - enroll-plane address (env ZIPLINE_ENROLL; default: control port + 2) auth whoami local Show the current operator certificate identity. Reads the cached cert (common name, OU, expiry, cert dir) - no control-plane round-trip.
context
Manage context profiles (list/use/set/current) - stored locally in ~/.zipline/config
context list localList context profiles (* marks the current).
context use <name> localSelect the current context.
context set <key> <value> localSet a field - runtime_address, operator_cert_dir, or output - on the current context.
context current localShow the current context.
connect <addr>
Point at a runtime and authenticate (onboarding) - composes a context profile with operator enroll.
connect <addr> Records the runtime address and cert dir in a named context, sets it current, and - if a token is supplied - enrolls into the same cert dir.
default) --token string - operator enroll token --token-file string - file with the operator enroll token --enroll string - enroll-plane address (default: control port + 2) --web bool - browser-mediated auth (reserved; not yet implemented) pipeline
Manage pipelines
pipeline apply Apply a pipeline spec (YAML via -f or stdin).
- or empty reads stdin)pipeline plan Dry-run a pipeline spec and print the diff (YAML via -f or stdin) - route changes, source-restart flag, commit-mode change.
pipeline get <name>Print a pipeline spec as YAML.
pipeline listList pipelines (name, state, bound instance).
pipeline status <name>Print a pipeline's status (state, instance, incidents) plus a per-slot table (role, route, state, placement, profile).
pipeline delete <name>Delete a pipeline.
pipeline bind <name> Bind an instance id to a pipeline (source) or a sink slot (--route).
pipeline unbind <name>Clear the binding for a pipeline (or a single sink slot with --route; the route stays in the spec and is re-bindable).
pipeline disable <name> Disable a sink route (in-proc or external): detach + release floor, keep binding, re-enablable.
pipeline enable <name> Enable a previously-disabled sink route (attach from-now).
pipeline pause <name> Pause a sink route (--route) or the source (no --route): HOLD; resume keeps the cursor (no gap).
pipeline resume <name> Resume a paused sink route (--route) or the source (no --route).
pipeline skip <name> [route] Accept the loss of a corrupt frame on a stalled route. Give a route, or --all (mutually exclusive).
pipeline route add <name> Add a route to a pipeline (read-modify-write over apply).
kafka | file) --sink-config string - sink config as JSON --dlq-failure string - halt_route | drop_and_continue (default halt_route) pipeline route remove <name> <route>Remove a route from a pipeline (read-modify-write over apply).
pipeline set commit-mode <name> <value>Set a pipeline's commit mode (read-modify-write over apply).
instance
Inspect runtime instances
instance listList runtime instances (instance, display, role, bound). Role is source or sink; bound shows the pipeline or (unbound).
secret
Manage control-plane secrets
secret set <ref> <value>Store a secret value under a ref. The value is positional (never lands in flag history), crosses mTLS, and is never printed back.
secret listList stored secret refs (names only, never values).
secret rm <ref>Remove a secret by ref.
profile
Manage connector profiles
profile apply Create or update a connector profile from a YAML file.
profile listList stored connector profiles (name + type).
profile get <name>Get a connector profile by name (prints YAML).
profile rm <name>Remove a connector profile by name.
connector
Manage the connector catalog (build/describe/add/list/inspect/selfcheck/test)
connector build local Package the in-binary descriptor for a type into a .zcp. Reflects the in-binary registry; no daemon needed.
.zcp path (default <type>.zcp) --wire-protocol int - wire protocol version to stamp (default 3) connector describe <type> localPretty-print the in-binary descriptor + ConfigSchema for a type.
connector selfcheck localPrint this binary's connector baseline (wire protocol + built-ins: file, kafka, mssql, postgres).
connector add <pkg.zcp> remoteStatic-eval a .zcp on the runtime and persist its descriptor. The CLI never loads or compiles the connector.
connector list remoteList the runtime catalog (built-ins ∪ added) - type, direction, version.
connector inspect <type> remoteFetch + pretty-print one catalog descriptor by type (the remote twin of describe).
connector test <type> Run the G7 conformance suite for a type in a subprocess and optionally record it on the runtime.
120s) connector __conformance-child is an internal hidden subprocess re-invoked by connector test - not meant to be called directly.
token
Mint enroll tokens for new operators, gateways, or connectors
token issue Mint a single-use enroll token for a handle. The handle class determines the OU the CA stamps.
720h) | Handle | Stamps | Use |
|---|---|---|
| operator-<name> | OU=operator | control-plane client (e.g. operator-gateway) |
| sink-<name> | OU=sink | external sink connector (required by bind --route) |
| source-<name> | OU=source | source connector (explicit, new-style) |
| <other> | no OU | legacy source connector (backward compat) |
token listList all enroll-token handles known to the CA (handle, expires_at, used, outstanding).
token revoke Burn an enroll-token handle (marks it Used; idempotent).
tui
tuiOpen the live operator cockpit: six screens over the control plane covering throughput, pipelines, topology, instances, incidents, and a log tail. Takes no arguments. Running zipline with no subcommand on an interactive terminal opens it too. Full walkthrough.
status · version
statusAggregate pipeline + instance overview in a single dial - a summary line, a pipelines table, and an instances table.
version localPrint the zipline version (stamped at build).
Global & persistent flags
Inherited by every subcommand. Resolution precedence: flag > env > context profile > built-in default.
| Flag | Type | Default | Env |
|---|---|---|---|
| --context | string | current context | ZIPLINE_CONTEXT |
| --runtime | string | - | ZIPLINE_RUNTIME |
| --cert-dir | string | - | ZIPLINE_CERT_DIR |
| --state-dir | string | ./data/state | - |
| -o, --output | string | text | ZIPLINE_OUTPUT |
| --insecure-transport | bool | false | - (loopback only) |
| -v, --verbose | bool | false | ZIPLINE_VERBOSE |
| -q, --quiet | bool | false | ZIPLINE_QUIET |
| --timeout | duration | 10s | - |
Environment variables
Each maps to the flag of the same purpose; a flag always wins over its env var.
| Variable | Maps to |
|---|---|
| ZIPLINE_CONTEXT | --context |
| ZIPLINE_RUNTIME | --runtime |
| ZIPLINE_CERT_DIR | --cert-dir |
| ZIPLINE_OUTPUT | -o, --output |
| ZIPLINE_VERBOSE | -v, --verbose |
| ZIPLINE_QUIET | -q, --quiet |
| ZIPLINE_ENROLL | --enroll (auth enroll) |
Output formats
Every command accepts -o text|json|yaml (a context profile may set the default).
text - human-readable tables and formatted output (the default).
json - indented JSON of the structured payload, for scripting.
yaml - YAML of the structured payload, for diffs and review.
Mutation verbs honor -q to suppress text confirmations; under json/yaml they always print the structured result - you explicitly asked for machine output.
Auth & mTLS model
Enroll once, then mutual TLS
An operator redeems a single-use enroll token whose reserved handle makes the CA stamp OU=operator on the issued client certificate. The cert triplet is cached in the resolved cert dir (default <state-dir>/operator/certs).
Every later command dials the control plane over mutual TLS using that cached triplet - there is nothing to log in to and no bearer token on the wire. The control-plane authz gate admits leaves whose OU is operator (or an operator-* variant such as operator-gateway).
Cert-dir resolution
The cert dir is resolved from, in order: --cert-dir → ZIPLINE_CERT_DIR → the context profile → <state-dir>/operator/certs.
Local vs remote
auth whoami, all of context, and connector build/describe/selfcheck run locally with no dial. Everything else dials the control plane.