CLI
CLI commands, configuration, and logs
Run and validate Envoy tasks and jobs, provide connector configuration, select output formats, and separate data from diagnostics.
The Envoy runtime CLI executes task files and job templates directly. Customer builds may rename the binary; the examples use envoy.
Run envoy --help against your build for the authoritative command list.
Run a task
The task name or path is the first positional argument:
envoy csv-to-sqlite \
--config connectors.yaml \
--arguments '{"input_file":"records.csv"}'Options:
--config,-c— connector configuration file;--arguments,-a— JSON object passed to declared task arguments;--output,-o—ndjson,json, ornone;--debug— human-readable step diagnostics on stderr;--log-level— structured file log threshold.
Task YAML can choose its own output format. A CLI --output value overrides it.
Validate a task
envoy validate tasks/csv-to-sqlite.yamlValidation checks the task definition without running connector methods. A valid result does not prove credentials, network access, source shape, or destination permissions.
Validate a job template
envoy job validate jobs/kitchen-sink.yamlThis checks the template structure, dependency graph, connector mappings, argument placeholders, and job-configuration schema.
Start a control plane
Customer server builds expose the server entry point through the same binary:
envoy server --config /path/to/envoy-server.yamlWhen --config is omitted, the server entry point looks for envoy-server.yaml in the working directory. See Server configuration.
Start an executor
envoy executor \
--control-plane https://envoy.example.com \
--port 9090 \
--max-concurrent 10 \
--advertise-url http://executor.internal:9090Executor options:
--control-plane— required control-plane URL; repeat the option or provide comma-separated values;--port— executor listen port;--max-concurrent— maximum active task processes;--labels— JSON object used for executor selection;--advertise-url— executor URL reachable from the control plane.
ENVOY_CONTROL_PLANES can supply comma-separated control-plane URLs. The executor key is supplied through deployment configuration, not a command-line option.
See Control plane and executors.
Run selected job nodes
envoy job run jobs/kitchen-sink.yaml \
--config connectors.yaml \
--tasks pull_accounts,push_accountsDependencies of selected nodes are resolved by default. --skip-deps bypasses that behavior:
envoy job run jobs/kitchen-sink.yaml \
--config connectors.yaml \
--tasks push_accounts \
--skip-depsUse --skip-deps only when required upstream state already exists and the selected task is independently safe.
--max-concurrent limits how many task nodes in one dependency level execute concurrently. It does not replace step-level concurrency inside each task.
Job state and resume
CLI job runs write state files under .envoy/job-runs by default. Inspect one with:
envoy job status .envoy/job-runs/example-1720000000000.jsonResume a paused or failed run:
envoy job resume .envoy/job-runs/example-1720000000000.json \
--config connectors.yamlBack up the state file when it is needed for an operational recovery. Resume uses the recorded graph state; it does not create a new server-side job-run record.
connectors.yaml
CLI connector configuration uses names matching task or template slots:
connectors:
input_csv:
type: csv
config:
directory: ./data/input
output_db:
type: sqlite
config:
path: ./data/output.dbCredentials can reference environment variables:
connectors:
source:
type: postgres
config:
host: ${PGHOST}
user: ${PGUSER}
password: ${PGPASSWORD}
database: ${PGDATABASE}Missing variables and connector type mismatches fail before task execution. Keep the file outside source control and restrict file permissions.
The CLI does not read connector records stored by the control plane. Likewise, the server does not use a CLI connectors.yaml to bind stored jobs.
Standard output and standard error
The streams have distinct purposes:
- stdout is task data;
- stderr is user-facing status and debug output;
logs/envoy.logis structured JSON logging.
This makes NDJSON safe to pipe:
envoy export-records --config connectors.yaml --output ndjson \
> records.ndjsonDo not merge stderr into an output data file.
Output formats
ndjson streams one envelope per output record and is appropriate for large results. json collects the result before printing and can consume substantial memory. none suppresses task data while execution and metrics still occur.
Prefer ndjson for pipelines and none when the destination connector is the only intended output.
Debug and structured logs
Use --debug for temporary, human-readable step input, config, and output details. A task step can also enable its own debug output.
Use --log-level trace|debug|info|warn|error|silent for structured logs written to logs/envoy.log relative to the working directory.
Debug data can contain source records. Enable it narrowly, protect the log directory, and remove retained logs according to policy.
See Troubleshooting, Task structure, and Job templates.