CLI Reference¶
This document contains the help content for the zelos command-line program.
Command Overview:
zelos↴zelos status↴zelos login↴zelos logout↴zelos actions↴zelos actions list↴zelos actions execute↴zelos actions schema↴zelos actions dump↴zelos actions tui↴zelos agent↴zelos agent info↴zelos agent settings↴zelos agent settings set-data-retention↴zelos agent settings set-log-retention↴zelos agent settings set-dev-mode↴zelos agent settings set-memory-limit↴zelos agent settings set-store-type↴zelos agent settings set-store-path↴zelos agent settings set-disk-limit↴zelos agent settings set-bind-address↴zelos agent settings clear-store↴zelos agent feedback↴zelos extensions↴zelos extensions list↴zelos extensions install↴zelos extensions install-local↴zelos extensions package↴zelos extensions start↴zelos extensions stop↴zelos extensions reinstall↴zelos extensions uninstall↴zelos extensions check-updates↴zelos extensions update↴zelos extensions info↴zelos extensions config↴zelos extensions bump↴zelos extensions create↴zelos layouts↴zelos layouts list↴zelos layouts show↴zelos layouts versions↴zelos layouts restore↴zelos layouts label↴zelos layouts create↴zelos layouts update↴zelos layouts delete↴zelos live↴zelos live signals↴zelos live events↴zelos live checks↴zelos live annotations↴zelos live query↴zelos live latest↴zelos live watch↴zelos live export↴zelos live query-ts↴zelos live check↴zelos live annotate↴zelos live demo↴zelos live backfill↴zelos live connect↴zelos live disconnect↴zelos notebook↴zelos notebook new↴zelos notebook list↴zelos notebook run↴zelos notebook publish↴zelos notebook pull↴zelos notebook rename↴zelos notebook copy↴zelos notebook delete↴zelos notebook mkdir↴zelos notebook import↴zelos notebook env↴zelos notebook env warm↴zelos tags↴zelos tags list↴zelos trace↴zelos trace info↴zelos trace signals↴zelos trace events↴zelos trace query↴zelos trace check↴zelos trace export↴zelos trace merge↴zelos trace close↴zelos trace upload↴zelos trace download↴zelos tools↴zelos tools list↴zelos tools call↴zelos update↴zelos version↴zelos completions↴
zelos¶
Use the Zelos command line interface (CLI) to interact with the Zelos App, Zelos Agent, or directly with Zelos Cloud.
Connect to your agent, query live signals, manage extensions, inspect trace files, and more — all from the command line.
Usage: zelos [OPTIONS] <COMMAND>
Environment Variables:
| Variable | Description |
|---|---|
ZELOS_AGENT_URL |
Default agent gRPC endpoint for --host (default localhost:2300); an explicit --host wins |
RUST_LOG |
Override log level (e.g. RUST_LOG=debug zelos status) |
Files & Paths:
| Path | Description |
|---|---|
~/.zelos/bin/ |
CLI binary location |
~/.zelos/ |
Configuration directory |
| System keyring | Cloud credentials |
Subcommands:¶
status— Print Zelos system statuslogin— Login to Zelos Cloudlogout— Logout from Zelos Cloudactions— List, execute, and inspect agent actionsagent— Inspect and configure the Zelos agentextensions— Manage Zelos extensionslayouts— Manage Zelos layoutslive— Interact with live agent datanotebook— Create, list, run, export, and convert Zelos notebookstags— Inspect Zelos tagstrace— Trace file operationstools— Inspect and call Zelos agent tools (experimental, local dogfood only)update— Update the Zelos CLI to the latest versionversion— Print versioncompletions— Generate or install shell completions
Options:¶
-q,--quiet— Disable logging to console-v,--verbose— Log to console, with increasing verbosity
zelos status¶
Print Zelos system status (agent, cloud, and app connectivity).
Usage: zelos status
Examples:
zelos login¶
Login to Zelos Cloud using the OAuth2 device authorization flow.
Opens a browser to authenticate and stores credentials in the system keyring.
Usage: zelos login [OPTIONS]
Examples:
Options:¶
-d,--device-name <DEVICE_NAME>— The device name (default: hostname)
zelos logout¶
Logout from Zelos Cloud and remove stored credentials from the system keyring.
Usage: zelos logout
Examples:
zelos actions¶
List, execute, and inspect agent actions.
Actions are remote procedures registered by extensions running on the Zelos Agent. Use these commands to discover available actions, view their parameter schemas, and execute them with JSON parameters.
Usage: zelos actions [OPTIONS] <COMMAND>
Subcommands:¶
list— List all available actionsexecute— Execute an actionschema— Get the schema for an actiondump— Generate the standalone action inventory for a source directorytui— Interactive TUI for browsing and executing actions
Options:¶
--host <HOST>— Agent gRPC endpoint
Default value: localhost:2300
zelos actions list¶
List all available actions
Usage: zelos actions list [OPTIONS]
Examples:
Options:¶
--json— Output in JSON format
zelos actions execute¶
Execute an action, optionally passing parameters as JSON.
Usage: zelos actions execute [OPTIONS] <ACTION>
Examples:
zelos actions execute "Get Status"
zelos actions execute "Read Registers" --params '{"address": 0, "count": 10}'
zelos actions execute "Configure" --params-file config.json
zelos actions execute "can/convert" --mode standalone
Arguments:¶
<ACTION>— Action path (e.g. "service/action")
Options:¶
-p,--params <PARAMS>— JSON parameters--params-file <PARAMS_FILE>— Read parameters from a JSON file-t,--timeout <TIMEOUT>— Timeout in milliseconds; 0 means no timeout. Omit to send no budget at all, which leaves the extension to apply the action's own declared timeout; the agent adds no default of its own--mode <MODE>— Where to run the action
Default value: auto
Possible values:
auto: Prefer a connected extension, otherwise run from the installed packagelive: Require a connected extension; fail if there is nonestandalone: Always run from the installed package, even if the extension is running. Spawns a second process regardless: it does NOT check whether the extension is up, so for an action that touches a device or a file both can contend. Preferautounless you specifically need to prove the at-rest path
zelos actions schema¶
Show the parameter schema for an action.
Usage: zelos actions schema <ACTION>
Examples:
Arguments:¶
<ACTION>— Action path (e.g. "service/action")
zelos actions dump¶
Generate an actions.json inventory for a source directory.
Imports the entry module in that directory's environment and writes what it registered as standalone actions. The agent reads this file — it never generates one — so a development install serves the actions that were in it the last time this ran. zelos extensions package runs the same dump on its own, so a packaged extension always ships a current inventory.
An agent caches what it read, and only an install invalidates that, so a running agent keeps serving the previous inventory: restart it, or reinstall the extension, to pick up a fresh dump.
The environment needs a zelos-sdk providing zelos_sdk.extensions.actions; an extension venv resolves the published SDK from its lockfile, which may predate the harness.
Usage: zelos actions dump [OPTIONS] [PATH]
Examples:
zelos actions dump
zelos actions dump ~/src/zelos-extension-can
zelos actions dump . --entry app.py --out /tmp/actions.json
Arguments:¶
<PATH>— Extension source directory
Default value: .
Options:¶
--entry <ENTRY>— Entry file to import, relative to PATH. Required when the directory has no extension.toml naming an agent-extension runtime entry--out <OUT>— Where to write the inventory [default:/actions.json]
zelos actions tui¶
Interactive TUI for browsing and executing actions
Usage: zelos actions tui
zelos agent¶
Inspect and configure the Zelos Agent.
View agent health, system info, and current settings. Modify data retention, log retention, developer mode, and memory limits.
Usage: zelos agent [OPTIONS] <COMMAND>
Subcommands:¶
info— Show agent health, system info, and current settingssettings— View or modify agent settingsfeedback— Send feedback with a diagnostics bundle, or export the bundle only
Options:¶
--host <HOST>— Agent gRPC endpoint
Default value: localhost:2300
zelos agent info¶
Show agent health, system info, and current settings
Usage: zelos agent info [OPTIONS]
Examples:
Options:¶
--json— Output in JSON format
zelos agent settings¶
View or modify agent settings. Run without a subcommand to display current settings.
With --remote, the --host agent forwards the request to a remote agent it is connected to (the same proxy the desktop app's per-agent Settings dialog uses).
Usage: zelos agent settings [OPTIONS] [COMMAND]
Examples:
zelos agent settings
zelos agent settings --json
zelos agent settings set-data-retention 24h
zelos agent settings set-dev-mode true
zelos agent settings set-memory-limit 2GB
zelos agent settings set-bind-address 0.0.0.0
zelos agent settings --remote grpc://robot:2300 set-data-retention 2h
Subcommands:¶
set-data-retention— Set data retention period (e.g. "1h", "24h", "7d", "none" to disable)set-log-retention— Set log retention period (e.g. "1h", "24h", "7d", "none" to disable)set-dev-mode— Enable or disable developer modeset-memory-limit— Set memory limit (e.g. "512MB", "2GB", "none" to disable)set-store-type— Set store type ("memory", "disk", or "metadata"). Requires agent restartset-store-path— Set disk store folder path. Requires agent restartset-disk-limit— Set disk size limit (e.g. "10GB", "500MB", "none" to disable)set-bind-address— Set the desktop app-agent bind address. Requires agent restartclear-store— Clear all data from the store (irreversible)
Options:¶
--json— Output in JSON format (for viewing)--remote <REMOTE>— Forward to a remote agent CONNECTED to the --host agent, addressed exactly as it was connected (e.g. "grpc://robot:2300"). Errors if the --host agent has no live connection to that address
zelos agent settings set-data-retention¶
Set data retention period (e.g. "1h", "24h", "7d", "none" to disable)
Usage: zelos agent settings set-data-retention <VALUE>
Arguments:¶
<VALUE>— Duration string (e.g. "1h", "24h", "7d") or "none" to disable
zelos agent settings set-log-retention¶
Set log retention period (e.g. "1h", "24h", "7d", "none" to disable)
Usage: zelos agent settings set-log-retention <VALUE>
Arguments:¶
<VALUE>— Duration string (e.g. "1h", "24h", "7d") or "none" to disable
zelos agent settings set-dev-mode¶
Enable or disable developer mode
Usage: zelos agent settings set-dev-mode <VALUE>
Arguments:¶
<VALUE>— true or false
Possible values: true, false
zelos agent settings set-memory-limit¶
Set memory limit (e.g. "512MB", "2GB", "none" to disable)
Usage: zelos agent settings set-memory-limit <VALUE>
Arguments:¶
<VALUE>— Memory limit string (e.g. "512MB", "2GB") or "none" to disable
zelos agent settings set-store-type¶
Set store type ("memory", "disk", or "metadata"). Requires agent restart
Usage: zelos agent settings set-store-type <VALUE>
Arguments:¶
<VALUE>— "memory" (ArrowStore), "disk" (Parquet), or "metadata" (catalog only, no data — headless agents only)
zelos agent settings set-store-path¶
Set disk store folder path. Requires agent restart
Usage: zelos agent settings set-store-path <VALUE>
Arguments:¶
<VALUE>— Folder path, or "none" to use default
zelos agent settings set-disk-limit¶
Set disk size limit (e.g. "10GB", "500MB", "none" to disable)
Usage: zelos agent settings set-disk-limit <VALUE>
Arguments:¶
<VALUE>— Disk limit string (e.g. "10GB", "500MB") or "none" to disable
zelos agent settings set-bind-address¶
Set the desktop app-agent bind address. Requires agent restart
Usage: zelos agent settings set-bind-address <VALUE>
Arguments:¶
<VALUE>— IP literal ("0.0.0.0" for all interfaces, "192.168.1.10", "[::1]"), or "none" for the default localhost-only
zelos agent settings clear-store¶
Clear all data from the store (irreversible)
Usage: zelos agent settings clear-store
zelos agent feedback¶
Send feedback to Zelos support with a diagnostics bundle (the last 24 hours of logs, settings, and system info — capped and scrubbed), or build the bundle locally with --export-only and share it yourself.
Usage: zelos agent feedback [OPTIONS]
Examples:
zelos agent feedback -m "plots stopped updating after reconnect"
zelos agent feedback -m "plots stopped updating" --email [email protected]
zelos agent feedback --export-only
zelos agent feedback -m "cli smoke" --json
Options:¶
-m,--message <MESSAGE>— Description of the problem (required unless --export-only)--email <EMAIL>— Contact email for follow-up--export-only— Build the diagnostics bundle without sending anything--json— Output in JSON format
zelos extensions¶
Manage Zelos extensions.
Install, create, start, stop, update, and inspect Zelos extensions. Extensions can run as agent processes or app-hosted web extensions.
Usage: zelos extensions [OPTIONS] <COMMAND>
Subcommands:¶
list— List all installed extensionsinstall— Install an extension from the marketplaceinstall-local— Install an extension from a local directory for developmentpackage— Package an extension directory into a release archivestart— Start an agent extensionstop— Stop an agent extensionreinstall— Reinstall an agent extension's environment without removing configuninstall— Uninstall an extensioncheck-updates— Check for available updates for all installed extensionsupdate— Update an extension to a specific or latest versioninfo— Show detailed information about an installed extensionconfig— View configuration schema and last saved config for an extensionbump— Bump extension version in extension.toml (and package.json/package-lock.json/pyproject.toml if present)create— Create a new extension from a template
Options:¶
--host <HOST>— Agent gRPC endpoint
Default value: localhost:2300
zelos extensions list¶
List all installed extensions
Usage: zelos extensions list [OPTIONS]
Examples:
Options:¶
--json— Output in JSON format
zelos extensions install¶
Install an extension from the marketplace (e.g. acme/canbus-listener).
Usage: zelos extensions install <NAME> [VERSION]
Examples:
Arguments:¶
<NAME>— Extension name in 'publisher/name' format<VERSION>— Extension version tag (e.g., "0.1.0", "latest")
Default value: latest
zelos extensions install-local¶
Install an extension from a local directory for development
Usage: zelos extensions install-local <PATH>
Examples:
Arguments:¶
<PATH>— Path to extension source directory containing extension.toml
zelos extensions package¶
Package an extension directory into a release archive
Usage: zelos extensions package [OPTIONS] <PATH>
Examples:
zelos extensions package ./my-extension
zelos extensions package ./my-extension --output ./dist
zelos extensions package ./my-extension --list
zelos extensions package ./my-extension --skip-actions-dump
Arguments:¶
<PATH>— Path to the extension directory containing extension.toml
Options:¶
-o,--output <OUTPUT>— Output path or directory for the generated tar.gz archive--list— List files that would be included in the package without creating an archive--skip-actions-dump— Skip generating actions.json (the standalone-action inventory)
zelos extensions start¶
Start an agent extension
Usage: zelos extensions start [OPTIONS] <ID>
Examples:
zelos extensions start local.my-extension
zelos extensions start local.my-extension --config '{"demo": true}'
zelos extensions start local.my-extension --config-file config.json
Arguments:¶
<ID>— Extension ID to start
Options:¶
--config-file <CONFIG_FILE>— Path to a configuration file to pass to the extension--config <CONFIG>— A string of configuration to pass to the extension
zelos extensions stop¶
Stop an agent extension
Usage: zelos extensions stop <ID>
Examples:
Arguments:¶
<ID>— Extension ID to stop
zelos extensions reinstall¶
Reinstall an agent extension's environment without removing config
Usage: zelos extensions reinstall <ID>
Examples:
Arguments:¶
<ID>— Extension ID to reinstall
zelos extensions uninstall¶
Uninstall an extension
Usage: zelos extensions uninstall <ID>
Examples:
Arguments:¶
<ID>— Extension ID to uninstall
zelos extensions check-updates¶
Check for available updates for all installed extensions
Usage: zelos extensions check-updates
Examples:
zelos extensions update¶
Update an extension to a specific or latest version
Usage: zelos extensions update <ID> [VERSION]
Examples:
Arguments:¶
<ID>— Extension ID to update<VERSION>— Target version tag (e.g., "0.2.0", "latest")
Default value: latest
zelos extensions info¶
Show detailed information about an installed extension
Usage: zelos extensions info [OPTIONS] <ID>
Examples:
Arguments:¶
<ID>— Installed extension ID (for example, "local.my-extension")
Options:¶
--json— Output in JSON format
zelos extensions config¶
View configuration schema and last saved config for an extension
Usage: zelos extensions config [OPTIONS] <ID>
Examples:
Arguments:¶
<ID>— Extension ID
Options:¶
--json— Output in JSON format
zelos extensions bump¶
Bump extension version in extension.toml (and package.json/package-lock.json/pyproject.toml if present)
Usage: zelos extensions bump [OPTIONS] <VERSION>
Examples:
Arguments:¶
<VERSION>— New semver version (e.g., "1.2.3")
Options:¶
--path <PATH>— Extension directory (defaults to current directory)
Default value: .
zelos extensions create¶
Create a new extension from a template
Usage: zelos extensions create [OPTIONS] <NAME>
Examples:
zelos extensions create my-new-extension
zelos extensions create my-new-extension --author "Jane Doe" --description "My extension"
zelos extensions create my-app-extension --type app
zelos extensions create my-app-extension --type app --template react
zelos extensions create my-app-extension --type app --template wasm
zelos extensions create my-app-extension --type app --template-ref main
App templates (only meaningful with --type app, fetched from zeloscloud/zelos-extension-templates):
reactReact + bridge SDK; default for--type app.wasmVanilla TS + workers + COOP/COEP recipe.
Arguments:¶
<NAME>— Project name for the new extension
Options:¶
--type <TYPE>— Extension type: "agent" or "app"
Default value: agent
Possible values: agent, app
-o,--output <OUTPUT>— Output directory (default: current directory)--author <AUTHOR>— Author name--email <EMAIL>— Author email--github <GITHUB>— GitHub handle--description <DESCRIPTION>— Project description--template <TEMPLATE>— App template variant. Only meaningful with--type app. Choices:react(default; React + ZelosAppProvider),wasm(TS + workers + COOP/COEP recipe)
Possible values:
react: React + ZelosAppProvider + bridge SDK. Default for--type app-
wasm: Vanilla TS + WASM-friendly recipe (?worker&inline, COOP/COEP headers) -
--template-ref <TEMPLATE_REF>— Template branch or tag override (default: latest stable tag) --python-version <PYTHON_VERSION>— Python version
Default value: 3.11
* --no-setup — Skip post-create setup (dependency install, git init, local install)
zelos layouts¶
Manage Zelos layouts.
List, show, create, update, and delete saved dashboard layouts. Layouts are stored in Zelos Cloud and require console login (run zelos login).
Without --organization the agent uses its active organization (resolved at connection, see zelos login); pass --organization to work in another organization.
Usage: zelos layouts [OPTIONS] <COMMAND>
Subcommands:¶
list— List all layoutsshow— Show a single layout, including its layout data JSONversions— List a layout's version historyrestore— Restore a layout to a previous versionlabel— Name a version in a layout's historycreate— Create a new layoutupdate— Update an existing layoutdelete— Delete a layout
Options:¶
--host <HOST>— Agent gRPC endpoint
Default value: localhost:2300
* --organization <ORGANIZATION> — Organization slug (default: the agent's active organization)
zelos layouts list¶
List all layouts
Usage: zelos layouts list [OPTIONS]
Examples:
Options:¶
--json— Output in JSON format
zelos layouts show¶
Show a single layout, including its layout data JSON
Usage: zelos layouts show [OPTIONS] <ID>
Examples:
zelos layouts show 018f8e2a-1b2c-7d3e-9f4a-5b6c7d8e9f01
zelos layouts show 018f8e2a-1b2c-7d3e-9f4a-5b6c7d8e9f01 --version 3
zelos layouts show 018f8e2a-1b2c-7d3e-9f4a-5b6c7d8e9f01 --json
Arguments:¶
<ID>— Layout ID (UUID)
Options:¶
--version <VERSION>— Show a specific version from the layout's history (default: current)--json— Output in JSON format
zelos layouts versions¶
List a layout's version history, newest first. A new version is recorded on every content-changing save; restores append a new version rather than rewriting history. Use zelos layouts show <id> --version <n> to inspect a version's data and zelos layouts restore to roll back.
Usage: zelos layouts versions [OPTIONS] <ID>
Examples:
zelos layouts versions 018f8e2a-1b2c-7d3e-9f4a-5b6c7d8e9f01
zelos layouts versions 018f8e2a-1b2c-7d3e-9f4a-5b6c7d8e9f01 --json
Arguments:¶
<ID>— Layout ID (UUID)
Options:¶
--json— Output in JSON format
zelos layouts restore¶
Restore a layout to a previous version. The restored state is appended to the history as a new version, so nothing is lost — the pre-restore state remains restorable.
Usage: zelos layouts restore [OPTIONS] <ID> <VERSION>
Examples:
Arguments:¶
<ID>— Layout ID (UUID)<VERSION>— Version number to restore (seezelos layouts versions)
Options:¶
--json— Output in JSON format
zelos layouts label¶
Set or clear a version's name. Named versions are easier to find and are kept forever (they are exempt from history retention). A layout can have at most 40 named versions.
Usage: zelos layouts label [OPTIONS] <ID> <VERSION> [LABEL]
Examples:
zelos layouts label 018f8e2a-1b2c-7d3e-9f4a-5b6c7d8e9f01 3 "Golden config"
zelos layouts label 018f8e2a-1b2c-7d3e-9f4a-5b6c7d8e9f01 3 --clear
Arguments:¶
<ID>— Layout ID (UUID)<VERSION>— Version number (seezelos layouts versions)<LABEL>— The version name to set
Options:¶
--clear— Clear the version's name--json— Output in JSON format
zelos layouts create¶
Create a new layout. Provide the layout data as an inline JSON string (--data) or from a file (--data-file). By default the layout is a team layout; pass --personal to make it personal.
Usage: zelos layouts create [OPTIONS] <NAME>
Examples:
zelos layouts create "My Dashboard" --data '{"panels": []}'
zelos layouts create "My Dashboard" --data-file layout.json
zelos layouts create "My Dashboard" --data '{"panels": []}' --personal
Arguments:¶
<NAME>— Layout name
Options:¶
--data <DATA>— Layout data as an inline JSON string--data-file <DATA_FILE>— Path to a file containing the layout data JSON--personal— Create a personal layout (default: team layout)--json— Output in JSON format
zelos layouts update¶
Update an existing layout. At least one of --name, --data/--data-file, or --personal must be provided. Unspecified fields keep their current values (the current layout is fetched first and merged).
Usage: zelos layouts update [OPTIONS] <ID>
Examples:
zelos layouts update 018f8e2a-1b2c-7d3e-9f4a-5b6c7d8e9f01 --name "Renamed"
zelos layouts update 018f8e2a-1b2c-7d3e-9f4a-5b6c7d8e9f01 --data-file layout.json
zelos layouts update 018f8e2a-1b2c-7d3e-9f4a-5b6c7d8e9f01 --personal false
Arguments:¶
<ID>— Layout ID (UUID)
Options:¶
--name <NAME>— New layout name--data <DATA>— New layout data as an inline JSON string--data-file <DATA_FILE>— Path to a file containing the new layout data JSON--personal <PERSONAL>— Set whether the layout is personal (true or false)
Possible values: true, false
--json— Output in JSON format
zelos layouts delete¶
Delete a layout
Usage: zelos layouts delete <ID>
Examples:
Arguments:¶
<ID>— Layout ID (UUID)
zelos live¶
Interact with live agent data. All subcommands connect to the agent via gRPC.
List signals, query values, stream live updates, export traces, or publish mock demo data for testing.
Usage: zelos live [OPTIONS] <COMMAND>
Subcommands:¶
signals— List available signals from connected agentsevents— List event entries (per-table, not per-column) from connected agentschecks— Convenience alias forzelos live events --event-type 'zelos.check.*'annotations— Convenience alias forzelos live events --event-type 'zelos.annotation.*'query— Query latest signal values from live agent datalatest— Query latest signal values via the agent's gRPC latest API (tests arrow_value path)watch— Stream live signal values from connected agentsexport— Export live trace data from connected agents to a .trz filequery-ts— Query timeseries data (M4 downsampled) and inspect Arrow IPC columnscheck— Run a typed predicate check against the agent's live storeannotate— Inject azelos.annotation.comment.v1event into the agent's live storedemo— Publish mock device data to the agent for testingbackfill— Backfill data from a connected remote agentconnect— Connect to a remote agentdisconnect— Disconnect from a remote agent
Options:¶
--host <HOST>— Agent gRPC endpoint
Default value: localhost:2300
zelos live signals¶
List available signals from connected agents
Usage: zelos live signals [OPTIONS]
Examples:
Options:¶
--json— Output in JSON format--per-segment— One entry per (agent, path, data segment) instead of one per (agent, path) — the catalog shape the desktop app's segment-overlap detection consumes--lookback <LOOKBACK>— Catalog freshness window for live signal or event-table discovery (e.g.30s,5m,1h). Default60s
Default value: 60s
* --producers <PRODUCERS> — Producer addresses to consult for catalog resolution. Comma- separated list (e.g. localhost,otherhost). Default localhost — same as agent.latest(producers=("localhost",))
Default value: localhost
zelos live events¶
List event entries (per-table, not per-column) from connected agents
Usage: zelos live events [OPTIONS]
Examples:
zelos live events # every event table (default)
zelos live events --event-type 'zelos.check.*' # trailing-* prefix glob
zelos live events --event-type 'zelos.log.v1' # exact event type
zelos live events --latest # + each table's newest row timestamp
zelos live events --latest --json
events lists what was DECLARED; events --latest shows whether rows are actually arriving. A table that registered a schema but has emitted nothing appears in both — with no rows under --latest.
Options:¶
--event-type <EVENT_TYPES>— Event type to list: exact match (zelos.check.result.v1) or a trailing-*prefix glob (zelos.check.*).*lists every table. Repeat to OR multiple filters. Default:*--latest— Show each table's most recent row instead of just listing the table.
The catalog is populated by the event's schema alone, so a listing proves only that a table was DECLARED. --latest is the "is data actually flowing?" probe — the events analog of live latest.
* --json — Output in JSON format
* --lookback <LOOKBACK> — Catalog freshness window for live signal or event-table discovery (e.g. 30s, 5m, 1h). Default 60s
Default value: 60s
* --producers <PRODUCERS> — Producer addresses to consult for catalog resolution. Comma- separated list (e.g. localhost,otherhost). Default localhost — same as agent.latest(producers=("localhost",))
Default value: localhost
zelos live checks¶
Convenience alias for zelos live events --event-type 'zelos.check.*'
Usage: zelos live checks [OPTIONS]
Options:¶
--latest— Show each table's most recent row instead of just listing the table.
The catalog is populated by the event's schema alone, so a listing proves only that a table was DECLARED. --latest is the "is data actually flowing?" probe — the events analog of live latest.
* --json — Output in JSON format
* --lookback <LOOKBACK> — Catalog freshness window for live signal or event-table discovery (e.g. 30s, 5m, 1h). Default 60s
Default value: 60s
* --producers <PRODUCERS> — Producer addresses to consult for catalog resolution. Comma- separated list (e.g. localhost,otherhost). Default localhost — same as agent.latest(producers=("localhost",))
Default value: localhost
zelos live annotations¶
Convenience alias for zelos live events --event-type 'zelos.annotation.*'
Usage: zelos live annotations [OPTIONS]
Options:¶
--latest— Show each table's most recent row instead of just listing the table.
The catalog is populated by the event's schema alone, so a listing proves only that a table was DECLARED. --latest is the "is data actually flowing?" probe — the events analog of live latest.
* --json — Output in JSON format
* --lookback <LOOKBACK> — Catalog freshness window for live signal or event-table discovery (e.g. 30s, 5m, 1h). Default 60s
Default value: 60s
* --producers <PRODUCERS> — Producer addresses to consult for catalog resolution. Comma- separated list (e.g. localhost,otherhost). Default localhost — same as agent.latest(producers=("localhost",))
Default value: localhost
zelos live query¶
Query latest signal values from live agent data.
Signal format: */source/message.signal — the leading * is a wildcard for the data segment ID, but source, message, and signal must be exact names (no wildcards). Use live signals to discover available signal names.
Usage: zelos live query [OPTIONS] --signals <SIGNALS>
Examples:
zelos live query -s '*/iot_gateway/temperature.sensor1' --last 1m
zelos live query -s '*/bus0/BMS_status.battery_level' --format json
Options:¶
-s,--signals <SIGNALS>— Signal patterns to query (e.g. '*/bus0/BMS_message/status.battery_level')-l,--last <LAST>— Time span preset (e.g. 30s, 1m, 5m, 10m, 30m, 1h)
Default value: 30s
Possible values:
30s: Last 30 seconds1m: Last 1 minute5m: Last 5 minutes10m: Last 10 minutes30m: Last 30 minutes1h: Last 1 hour2h: Last 2 hours6h: Last 6 hours12h: Last 12 hours-
24h: Last 24 hours -
--start <START>— Explicit start time. Accepts ISO 8601 (2025-01-01T00:00:00Z), a date (2025-01-01), a relative offset (-30s/-1.5m/+1h),now, a bare integer (epoch ns), or a bare decimal (epoch seconds) --end <END>— Explicit end time. Same grammar as--start-a,--agents <AGENTS>— Agent addresses to query (default: all connected agents)-f,--format <FORMAT>— Output format
Default value: table
Possible values:
table: Tab-separated table (human readable)json: JSON outputcsv: Comma-separated values
zelos live latest¶
Query the latest value for each signal via the agent's gRPC API.
Uses the LatestSignalValue response which includes both the legacy string value and the new Arrow IPC arrow_value field. Shows which path was used.
Usage: zelos live latest [OPTIONS] --signals <SIGNALS>
Examples:
Options:¶
-s,--signals <SIGNALS>— Signal patterns to query-a,--agents <AGENTS>— Agent addresses (default: localhost)
zelos live watch¶
Stream live signal values, refreshing periodically. Press Ctrl+C to stop.
Usage: zelos live watch [OPTIONS]
Examples:
Options:¶
-i,--interval <INTERVAL>— Refresh interval
Default value: 1s
* -n, --count <COUNT> — Number of refreshes (0 = unlimited, until Ctrl+C)
Default value: 0
zelos live export¶
Export live trace data from connected agents to a .trz file
Usage: zelos live export [OPTIONS]
Examples:
zelos live export --last 5m -o capture.trz
zelos live export --last 5m -o capture.trz --format trz2 --name 'dyno run 14'
zelos live export --start 2025-01-01T00:00:00Z --end 2025-01-01T01:00:00Z -o capture.trz
Options:¶
-o,--output <OUTPUT>— Output file path (default: trace_.trz in current directory) -l,--last <LAST>— Time span preset (e.g. 30s, 1m, 5m, 10m, 30m, 1h, 2h, 6h, 12h, 24h)
Default value: 1h
Possible values:
30s: Last 30 seconds1m: Last 1 minute5m: Last 5 minutes10m: Last 10 minutes30m: Last 30 minutes1h: Last 1 hour2h: Last 2 hours6h: Last 6 hours12h: Last 12 hours-
24h: Last 24 hours -
--start <START>— Explicit start time. Accepts ISO 8601 (2025-01-01T00:00:00Z), a date (2025-01-01), a relative offset (-30s/-1.5m/+1h),now, a bare integer (epoch ns), or a bare decimal (epoch seconds) --end <END>— Explicit end time. Same grammar as--start-a,--agents <AGENTS>— Agent addresses to export from (default: all connected agents).--format trz2seals ONE producer, so it takes at most one address--format <FORMAT>— Output format. Legacy DuckDB is the release default; TRZ2 is the sealed catalog+Parquet tar
Default value: legacy
Possible values:
legacy: Legacy DuckDB .trz (the release default)-
trz2: TRZ2 — sealed catalog + Parquet in an uncompressed tar -
--name <NAME>— Human-readable trace name, stamped into the sealed catalog at seal time. TRZ2 only (--format trz2); the legacy format has no catalog to carry it. Write-only for now: the name rides in the trace metadata but is not yet surfaced bytrace infoor the app -f,--force— Overwrite output file if it exists
zelos live query-ts¶
Query timeseries data using the M4 downsampling path (same as plot panels).
Shows column types, dictionary value tables, and sample data. Useful for verifying that string/binary columns are dictionary-encoded.
Usage: zelos live query-ts [OPTIONS] --signals <SIGNALS>
Examples:
zelos live query-ts -s '*/logger/log.message' --last 30s
zelos live query-ts -s '*/logger/log.message' --last 1m --width 200
Options:¶
-s,--signals <SIGNALS>— Signal patterns to query-l,--last <LAST>— Time span preset
Default value: 30s
Possible values:
30s: Last 30 seconds1m: Last 1 minute5m: Last 5 minutes10m: Last 10 minutes30m: Last 30 minutes1h: Last 1 hour2h: Last 2 hours6h: Last 6 hours12h: Last 12 hours-
24h: Last 24 hours -
-w,--width <WIDTH>— Plot width for M4 downsampling (number of pixels)
Default value: 800
* -a, --agents <AGENTS> — Agent addresses to query (default: localhost)
zelos live check¶
Run a typed predicate check against the agent's live store
Usage: zelos live check [OPTIONS]
Side effect: the agent records each result as a zelos.check.result.v1 event (source checks) in its live store — queryable via zelos live checks, visible on the timeline, and included in exports. Pass --no-emit to evaluate only. Pure-literal checks (no signal operand) and --for-duration / --within-duration polls are never recorded.
Examples:
zelos live check --lhs-signal '*/bus0/BMS_message/status.cell_voltage' --op gt --rhs=-1 --last 30s --temporal all
zelos live check --lhs-signal '*/bus1/inverter_status.mode' --op eq --rhs 'Grid-Tied' --last 30s --temporal any
zelos live check --suite checks.json
zelos live check --lhs-signal 'bus0/BMS_message/status.cell_voltage' --op lt --rhs 4.2 --no-emit
zelos live check --lhs-signal 'bus0/BMS_message/status.cell_voltage' --op lt --rhs 4.2 --producers localhost,otherhost
Options:¶
--lhs <LHS>— LHS literal — auto-typed:true/false-> bool, contains.-> float, numeric -> int, else string. Use--lhs=-1.5for negative numbers. Mutually exclusive with--lhs-signal--lhs-signal <LHS_SIGNAL>— LHS signal path (e.g.bus0/BMS_message/status.cell_voltageor*/source/message.signal). Mutually exclusive with--lhs--op <OP>— Comparison operator. Acceptsgt|ge|lt|le|eq|ne, the symbolic aliases>,>=,<,<=,==,!=(quote in the shell to dodge redirection), the tolerance / integer ops (is_close,is_approximately,is_divisible_by), and the string / unary ops. Required for non-suite checks
Possible values: gt, ge, lt, le, eq, ne, is_close, is_approximately, is_divisible_by, is_empty, is_positive, is_not_positive, is_negative, is_not_negative, is_true, is_false, contains, starts_with, ends_with, is_in, is_not_in
--rhs <RHS>— RHS literal — same auto-typing rules as--lhs. Required for binary ops; rejected for unary ops. Use--rhs=-1.5for negative numbers--rhs-signal <RHS_SIGNAL>— RHS signal path for signal-vs-signal comparison. Must point at the same{source}/{message}event table as--lhs-signal(cross-table requires alignment, deferred). Mutually exclusive with--rhs--rel-tol <REL_TOL>— Relative tolerance foris_close/is_approximately. Overrides the op's default (is_close:1e-9;is_approximately:1e-6). Rejected on non-tolerance ops--abs-tol <ABS_TOL>— Absolute tolerance foris_close/is_approximately. Overrides the op's default (is_close:0.0;is_approximately:1e-12). Rejected on non-tolerance ops--nan-ok— TreatNaN == NaNas true for tolerance ops (pytest-style). Default false (IEEE-754NaN != NaN). Rejected on non-tolerance ops--last <LAST>— Lookback duration (e.g.30s,5m,1h). When omitted, live defaults to30s; trace defaults to the entire file--start <START>— Range start. Accepts ISO 8601 (2025-01-01T00:00:00Z), a date (2025-01-01), a relative offset (-30s/-1.5m/+1h),now, a bare integer (epoch ns), or a bare decimal (epoch seconds). Matches the Python SDK'sstart=kwarg--end <END>— Range end. Same grammar as--start--temporal <TEMPORAL>— Temporal mode. Defaults tolatestwhen no range is given,alwayswhen--last/--startis specified
Possible values: latest, always, ever, never, count
-
--for-duration <FOR_DURATION>— Assert the predicate holds continuously for the given duration (e.g.--for-duration 30s). -
zelos live check: polls the live store at--intervalcadence and terminates fail on the firstpredicate_false. *zelos trace check: desugars to--temporal=alwaysover the first<duration>of the recording — equivalent to--start <trace.start> --end <trace.start + D> --temporal always. -
--within-duration <WITHIN_DURATION>— Assert the predicate becomes true at least once within the given duration (e.g.--within-duration 30s). -
zelos live check: polls until the firstsatisfiedor deadline. *zelos trace check: desugars to--temporal=everover the first<duration>of the recording. --suite <SUITE>— Run a JSON suite of checks (mutually exclusive with single-check flags)--strict— Require a unique segment per signal path (opt out of newest- segment-wins disambiguation). Defaultfalse: when a path resolves to N segments sharing(source, message, signal, producer), the resolver picks the segment with the most recent data. Pass--strictto require a single segment and surfaceAmbiguousSignalotherwise — useful when a test wants to assert a unique-segment invariant. Cross-producer ambiguity always errors regardless; narrow with--producers--json— Output JSON instead of human-readable-o,--output-artifact <PATH>— Emit a check-result-suite artifact at the given path. Same JSON schema the PythonAgentCheckerwrites, so artifacts from the CLI and frompytest --zelos-local-artifacts-dir=...runs are interchangeable downstream (replay, diff). Atomic tmp-rename write — never leaves a half-file on a crashed run--lookback <LOOKBACK>— Catalog freshness window for live signal or event-table discovery (e.g.30s,5m,1h). Default60s
Default value: 60s
* --producers <PRODUCERS> — Producer addresses to consult for catalog resolution. Comma- separated list (e.g. localhost,otherhost). Default localhost — same as agent.latest(producers=("localhost",))
Default value: localhost
* --interval <INTERVAL> — Polling cadence for --for-duration / --within-duration (e.g. 100ms, 0.2s, 1s). Default 100ms. No effect outside the duration temporals
Default value: 100ms
* --no-emit — Don't record results. By default the agent writes one zelos.check.result.v1 event per result into its live store (source checks), so runs are queryable via zelos live checks and show on the timeline. --no-emit evaluates only
zelos live annotate¶
Inject an annotation comment into the agent's live store.
Annotations are stored as zelos.annotation.comment.v1 trace events alongside signal data; they survive trace exports and appear on the timeline. Useful for marking interesting moments programmatically (CI failures, manual checkpoints, post-run notes).
Usage: zelos live annotate [OPTIONS] --name <NAME>
Examples:
zelos live annotate --name 'voltage anomaly' --status warn --author [email protected] \
--text 'noticed a 0.5V dip here' --target-path 'bus0/BMS.cell_voltage'
zelos live annotate --name 'release candidate' --tags 'qa,review' --time-ns 1735689600000000000
zelos live annotate --name 'fault window' --range-start-ns 1700000000000000000 \
--range-end-ns 1700000030000000000 --status error
Options:¶
--name <NAME>— Short label (required)--status <STATUS>— Status color hint: info | ok | warn | error (default neutral)--author <AUTHOR>— Author identity (email/handle). Defaults to $USER if unset--text <TEXT>— Comment body--target-path <TARGET_PATH>— Signal/panel path the annotation refers to--range-start-ns <RANGE_START_NS>— Start of the annotation range (epoch nanoseconds)--range-end-ns <RANGE_END_NS>— End of the annotation range (epoch nanoseconds)--tags <TAGS>— Optional comma-separated tags--time-ns <TIME_NS>— Explicit point-in-time (epoch ns). Defaults to wall-clock now() server-side
zelos live demo¶
Publish mock device data to the agent for testing.
Simulates BMS, DCDC, inverter, and sensor devices at various frequencies, a zelos.log.v1 text-log stream on the logger source, and typed events/spans/check results on the demo source. Press Ctrl+C to stop (or use --duration).
Usage: zelos live demo [OPTIONS]
Examples:
zelos live demo
zelos live demo -d bms --duration 30s
zelos live demo -d log --duration 30s
zelos live demo -d events --duration 30s
Options:¶
-d,--device <DEVICE>— Mock device types to simulate
Default value: all
Possible values:
all: All mock devices (BMS + DCDC + Inverter + Sensor + Log + Events)bms: Battery Management System (1 Hz)dcdc: DC-DC Converter (1 Hz)inverter: Grid/Battery Inverter (10 Hz)sensor: Generic Sensors & System Events (100 Hz)log: Text log stream,zelos.log.v1(5 Hz)-
events: Typed events + spans + checks —zelos.{event,span,check.result}.v1(1 Hz) -
--duration <DURATION>— Duration to run (e.g. 30s, 5m, 1h). Omit to run until Ctrl+C --backfill <BACKFILL>— Burst-send historical data before starting live mode. e.g. --backfill 1h sends 1 hour of data at the same frequencies, with timestamps from now-1h to now. Data is sent as fast as possible (no pacing)--scope— Use the oscilloscope source instead of the ECU mock devices. Emits a singlescopesource with onesamplesevent carrying four sine-wave channels (1Hz, 10Hz, 100Hz, 1kHz) sampled at--sample-rate(default 10 kHz). Generates dense data — useful for stressing the backfill path with large transfers--sample-rate <SAMPLE_RATE>— Sample rate (Hz) for--scope. Ignored when--scopeis not set
Default value: 10000
zelos live backfill¶
Request historical data from a connected remote agent.
Opens a fresh bounded Subscribe RPC for [now-duration, now], clears the local mirror store first to avoid duplicate accumulation, then forwards the delivered window into it. The RPC closes when the remote agent has streamed the requested window.
Usage: zelos live backfill [OPTIONS] <ADDRESS>
Examples:
Arguments:¶
<ADDRESS>— Remote agent address (must already be connected)
Options:¶
-l,--last <LAST>— How far back to request data
Default value: 30s
Possible values:
30s: Last 30 seconds1m: Last 1 minute5m: Last 5 minutes10m: Last 10 minutes30m: Last 30 minutes1h: Last 1 hour2h: Last 2 hours6h: Last 6 hours12h: Last 12 hours24h: Last 24 hours
zelos live connect¶
Connect to a remote agent
Usage: zelos live connect <ADDRESS>
Arguments:¶
<ADDRESS>— Remote agent address (e.g. 192.168.1.50:2300)
zelos live disconnect¶
Disconnect from a remote agent
Usage: zelos live disconnect <ADDRESS>
Arguments:¶
<ADDRESS>— Remote agent address
zelos notebook¶
Create, list, run, export, and convert Zelos notebooks.
A Zelos notebook is plain markdown with optional YAML front matter (description, authors, dependencies, params, tool.uv) and top-level ```python fenced cells. A notebook's name is its file name. Runs execute against the agent's managed uv environment and kernel.
Usage: zelos notebook [OPTIONS] <COMMAND>
Subcommands:¶
new— Write a starter notebook in your notebooks folder (never overwrites)list— List the notebooks in your notebooks folder with what their front matter saysrun— Run cells and stream their output livepublish— Publish the notebook's saved state to Zelos Cloud, without running itpull— Save a cloud notebook into your notebooks folder as a new filerename— Rename or move a notebook or folder (never overwrites)copy— Copy a notebook (never overwrites; stored outputs do not follow)delete— Permanently delete a notebook or folder and its stored outputsmkdir— Create a folder in your notebooks folderimport— Convert a Jupyter notebook to the Zelos formatenv— Environment (uv) provisioning
Options:¶
--host <HOST>— Agent gRPC endpoint
Default value: localhost:2300
zelos notebook new¶
Write a starter notebook and print where it landed.
A name goes in your notebooks folder, subfolders included (tests/gate.md). To write somewhere else, say where with a path starting ./, ../, or /.
A notebook is markdown, so a name without a .md or .markdown extension gets .md.
A taken name is never overwritten: the notebook lands on the nearest free "name N" sibling, and the printed path says where.
Usage: zelos notebook new <PATH>
Examples:
zelos notebook new analysis.md
zelos notebook new analysis # the same file
zelos notebook new tests/release-gate.md
zelos notebook new ./analyses/thermal.md
Arguments:¶
<PATH>— Name of the notebook (e.g.analysis.md), or a./path to write elsewhere
zelos notebook list¶
List notebooks and what they say about themselves.
With no path, searches your notebooks folder — the one the agent creates for you. Pass a path to search somewhere else, . for the current directory.
Searches recursively, skipping dot entries, for markdown files. Each row is headed by the notebook's name, read off its file name, followed by its description and authors. A file whose front matter does not parse is listed with the error rather than skipped.
Usage: zelos notebook list [OPTIONS] [PATH]
Examples:
Arguments:¶
<PATH>— Directory to search, or a single notebook file (default: your notebooks folder)
Options:¶
--json— Output in JSON format
zelos notebook run¶
Run a notebook's cells against the agent and stream output live.
With no --cell, every code cell runs in document order. Stream text prints verbatim; rich outputs are summarized as one-liners; tracebacks print in full. Ctrl-C interrupts the run.
Pass -o <file> to also write a rendered page — a self-contained HTML document (.html) or a Jupyter notebook (.ipynb), chosen by the file extension. Run provenance rides inside the artifact.
Exit status: 0 succeeded, 1 failed or errored, 2 an infrastructure failure (connection, session, or stream), 130 interrupted.
Usage: zelos notebook run [OPTIONS] <PATH>
Examples:
zelos notebook run analysis.md
zelos notebook run analysis.md -o analysis.html
zelos notebook run analysis.md -o analysis.ipynb --param window=30
zelos notebook run analysis.md --cell 0 --cell 2
Arguments:¶
<PATH>— Notebook name or path; a bare name resolves here, then in your notebooks folder
Options:¶
--cell <N>— Code-cell index to run (repeatable); omit to run all cells--param <KEY=VALUE>— Parameter override askey=value(repeatable). A declared param coerces the value toward its default's type (a number default makes30an integer, a bool default readstrue/false, a list or map default parses the value as YAML); a string default keeps it a string. Front-matter params are defaults, not a schema, so an undeclared key defines a new param and its value is parsed as YAML on its own-o,--output <FILE>— Also write the rendered page for the run to this file; the format is inferred from the extension (.htmlor.ipynb). The run still streams to the terminal. Run provenance rides inside the artifact--offline— Provision from the local uv cache only; fails rather than using the network--dry-run— Provision and verify the environment, print the run plan, then exit without executing any cell--publish— After the run settles, publish to Zelos Cloud (errored runs publish too — a failed test is exactly the run someone needs to see)--org <ORG>— Zelos Cloud organization slug; needed only when you belong to several--visibility <VISIBILITY>— With --publish, who can see the cloud notebook (first publish only)
Default value: org
Possible values: org, personal
--tag <NAME>— With --publish, an existing organization tag to add (repeatable); never removes a tag the notebook already carries
zelos notebook publish¶
Publish the notebook to Zelos Cloud as an immutable VERSION: the source snapshot and the stored outputs of its last run. Publishing always ADDS a version — it never replaces anyone's work.
The first publish writes a tenant-qualified cloud remote into the front matter, so this file — and every git clone of it — publishes to the same cloud notebook from then on.
Publishes count against your organization's Zelos Cloud storage. Sign in with zelos login or from the Zelos app.
--tag ADDS existing organization tags to the cloud notebook and may be repeated. Names match case-insensitively and must already exist in the organization's vocabulary (see zelos tags list); an unknown one fails before anything is published, rather than creating a tag.
Adding only: a publish never removes a tag, so a scheduled run cannot wipe labels somebody curated. A notebook's tags describe what it is about and outlive any one version. Remove them in the app's notebook header or the console's notebook list.
Exit status: 0 published, 2 an infrastructure failure.
Usage: zelos notebook publish [OPTIONS] <PATH>
Examples:
zelos notebook publish analysis.md
zelos notebook publish analysis.md --org acme --visibility personal
zelos notebook publish analysis.md --tag battery --tag ci
zelos notebook publish analysis.md --new # fork to a fresh cloud notebook
Arguments:¶
<PATH>— Notebook name or path; a bare name resolves here, then in your notebooks folder
Options:¶
--org <ORG>— Zelos Cloud organization slug; needed only when you belong to several--visibility <VISIBILITY>— Who can see the cloud notebook (first publish only)
Default value: org
Possible values: org, personal
--tag <NAME>— Existing organization tag to add (repeatable, case-insensitive); never removes one already carried--new— Ignore an existing remote and fork to a fresh cloud notebook--json— Output the publish coordinates as JSON
zelos notebook pull¶
Save a published notebook from Zelos Cloud into your notebooks folder: its source, its outputs, and its environment lock. Always a new file, never an overwrite. The newest version unless --version names one.
Usage: zelos notebook pull [OPTIONS] <NOTEBOOK_ID>
Examples:
zelos notebook pull 7b7f3d24-9c1a-4f6e-8a2d-5e0c1b9f4a33
zelos notebook pull 7b7f3d24-9c1a-4f6e-8a2d-5e0c1b9f4a33 --org acme --version 3f0e…
Arguments:¶
<NOTEBOOK_ID>— The cloud notebook id (the UUID in its console URL)
Options:¶
--org <ORG>— Zelos Cloud organization slug; needed only when you belong to several--version <PUBLISH_ID>— A specific publish id to save instead of the newest--json— Output in JSON format
zelos notebook rename¶
Rename or move a notebook or a folder.
Both ends must be inside your notebooks folder: the agent opens and runs notebooks from anywhere, but only moves files within the folder it owns.
Stored outputs and the provisioned environment follow the file. The destination must not exist, and a notebook the agent holds open must be closed first. A notebook source keeps its own markdown extension unless the destination states one.
Usage: zelos notebook rename <FROM> <TO>
Examples:
zelos notebook rename analysis.md triage.md
zelos notebook rename analysis.md archive/analysis.md # move
zelos notebook rename drafts archive/drafts # a folder
Arguments:¶
<FROM>— Notebook or folder to rename; a bare name resolves in your notebooks folder<TO>— New name or destination path
zelos notebook copy¶
Copy a notebook under a new name.
The agent slugs the name into a file name, and the copy lands beside the source, keeping the source's own markdown extension. Never overwrites, and stored outputs do not follow: a copy is a new notebook that has not run.
Usage: zelos notebook copy <PATH> <NAME>
Examples:
Arguments:¶
<PATH>— Notebook to copy; a bare name resolves in your notebooks folder<NAME>— What the copy is called, as you would write it
zelos notebook delete¶
Permanently delete a notebook or a folder, together with the stored outputs and provisioned environment of everything under it. There is no trash; requires --force.
Only paths inside your notebooks folder can be deleted. The agent opens and runs notebooks from anywhere on disk, but it will not remove files outside the folder it owns — delete those yourself.
Usage: zelos notebook delete [OPTIONS] <PATH>
Examples:
Arguments:¶
<PATH>— Notebook or folder to delete; a bare name resolves in your notebooks folder
Options:¶
--force— Actually delete; without this the command refuses and explains
zelos notebook mkdir¶
Create a folder in your notebooks folder
Usage: zelos notebook mkdir <PATH>
Examples:
Arguments:¶
<PATH>— Folder name or path
zelos notebook import¶
Convert a Jupyter .ipynb to a Zelos notebook markdown file.
Code cells become ``python fences keeping theircell.idwhen it is already a valid Zelos id, markdown cells become prose, outputs are dropped, and kernelspec is ignored.metadata.authorsand themetadata.zelos` block a Zelos export writes come back as front matter, so an exported notebook round-trips.
Usage: zelos notebook import --out <OUT> <SRC>
Examples:
Arguments:¶
<SRC>— Source Jupyter notebook (.ipynb)
Options:¶
-o,--out <OUT>— Destination Zelos notebook markdown file
zelos notebook env¶
Environment (uv) provisioning
Usage: zelos notebook env <COMMAND>
Subcommands:¶
warm— Provision the notebook's environment and wait until it is ready
zelos notebook env warm¶
Provision the notebook's environment and wait until it is ready
Usage: zelos notebook env warm [OPTIONS] <PATH>
Examples:
Arguments:¶
<PATH>— Notebook name or path; a bare name resolves here, then in your notebooks folder
Options:¶
--offline— Provision from the local uv cache only; fails rather than using the network
zelos tags¶
Inspect the organization's tag vocabulary.
Tags are org-scoped labels applied to cloud traces, layouts, and notebooks (the CLI applies them with zelos trace upload --tag and zelos notebook publish --tag). They are curated in the console and the desktop app — the CLI reads them but never creates one, since a name in a script is a typo nobody sees. Stored in Zelos Cloud; requires console login (run zelos login).
Usage: zelos tags [OPTIONS] <COMMAND>
Subcommands:¶
list— List the organization's tags
Options:¶
--host <HOST>— Agent gRPC endpoint
Default value: localhost:2300
zelos tags list¶
List the organization's tags, oldest first, with how many items carry each one (traces, shared layouts, and org notebooks).
Without --organization the agent uses its active organization (resolved at connection, see zelos login); pass --organization to read another organization's vocabulary.
Usage: zelos tags list [OPTIONS]
Examples:
Options:¶
--organization <ORGANIZATION>— Organization slug (default: the agent's active organization)--json— Output in JSON format
zelos trace¶
Operations on .trz trace files, all routed through the agent.
List signals, query data, run typed predicate checks, and merge multiple traces into a single file. Requires a running agent.
Usage: zelos trace [OPTIONS] <COMMAND>
Subcommands:¶
info— Show trace metadata: file size, time range, segments, per-table row countssignals— List signals in a trace fileevents— List event entries (per-event-table) in one or more trace filesquery— Query signal data from a trace file. Default is M4 downsampled timeseries; pass --raw for unaggregated rowscheck— Run a typed predicate check against a trace fileexport— Export traces to a new file (optionally windowed; legacy or TRZ2 format)merge— Merge multiple .trz files into a single traceclose— Close cached trace handles on the agent. With no arguments, closes allupload— Upload a trace to the cloud (the live session, or a sealed .trz directory)download— Download a cloud trace to a local .trz file
Options:¶
--host <HOST>— Agent gRPC endpoint
Default value: localhost:2300
zelos trace info¶
Show trace metadata: file size, time range, segments, per-table row counts
Usage: zelos trace info [OPTIONS] <FILE>
Examples:
zelos trace info recording.trz
zelos trace info recording.trz --json
zelos trace info recording.trz --files
Arguments:¶
<FILE>— Path to the .trz trace file
Options:¶
--json— Output in JSON format--files— Also list each event table's Parquet files: the directory (segment/table uuids) the files live in, and their count and size
zelos trace signals¶
List signals in a trace file
Usage: zelos trace signals [OPTIONS] <FILE>
Examples:
Arguments:¶
<FILE>— Path to the .trz trace file
Options:¶
--json— Output in JSON format
zelos trace events¶
List event entries (per-event-table) in one or more trace files
Usage: zelos trace events [OPTIONS] <FILES>...
Examples:
zelos trace events recording.trz # every event table (default)
zelos trace events recording.trz --event-type 'zelos.check.*' # trailing-* prefix glob
zelos trace events recording.trz --event-type 'zelos.annotation.*' --json
Arguments:¶
<FILES>— Paths to .trz trace files (at least one required)
Options:¶
--event-type <EVENT_TYPES>— Event type to list: exact match (zelos.check.result.v1) or a trailing-*prefix glob (zelos.check.*).*lists every table. Repeat to OR multiple filters. Default:*--json— Output in JSON format
zelos trace query¶
Query signal data from a trace file. Default is M4 downsampled timeseries; pass --raw for unaggregated rows
Usage: zelos trace query [OPTIONS] --signals <SIGNALS> <FILE>
Examples:
zelos trace query recording.trz -s '*/bus0/BMS_message/status.battery_level' --width 200
zelos trace query recording.trz -s '*/bus0/BMS_message/status.battery_level' --raw -n 50
zelos trace query recording.trz -s '*/eth0/sensor_events.event_type' --raw --format json
Arguments:¶
<FILE>— Path to the .trz trace file
Options:¶
-s,--signals <SIGNALS>— Signal patterns to query (e.g. '*/bus0/BMS_message/status.battery_level')--raw— Return raw rows (TraceQueryAllMulti) instead of M4 downsampled timeseries. Mutually exclusive with--width-w,--width <WIDTH>— Plot width for M4 downsampling (number of output points). Ignored with --raw
Default value: 800
* -n, --limit <LIMIT> — Max rows for --raw (0 = unlimited). Ignored without --raw
Default value: 100
* -f, --format <FORMAT> — Output format
Default value: table
Possible values:
table: Tab-separated table (human readable)json: JSON outputcsv: Comma-separated values
zelos trace check¶
Run a typed predicate check against a trace file
Usage: zelos trace check [OPTIONS] <FILE>
Examples:
zelos trace check recording.trz --lhs-signal '*/bus0/BMS_message/status.cell_voltage' --op gt --rhs 3.0
zelos trace check recording.trz --suite checks.json
Arguments:¶
<FILE>— Path to the .trz trace file
Options:¶
--lhs <LHS>— LHS literal — auto-typed:true/false-> bool, contains.-> float, numeric -> int, else string. Use--lhs=-1.5for negative numbers. Mutually exclusive with--lhs-signal--lhs-signal <LHS_SIGNAL>— LHS signal path (e.g.bus0/BMS_message/status.cell_voltageor*/source/message.signal). Mutually exclusive with--lhs--op <OP>— Comparison operator. Acceptsgt|ge|lt|le|eq|ne, the symbolic aliases>,>=,<,<=,==,!=(quote in the shell to dodge redirection), the tolerance / integer ops (is_close,is_approximately,is_divisible_by), and the string / unary ops. Required for non-suite checks
Possible values: gt, ge, lt, le, eq, ne, is_close, is_approximately, is_divisible_by, is_empty, is_positive, is_not_positive, is_negative, is_not_negative, is_true, is_false, contains, starts_with, ends_with, is_in, is_not_in
--rhs <RHS>— RHS literal — same auto-typing rules as--lhs. Required for binary ops; rejected for unary ops. Use--rhs=-1.5for negative numbers--rhs-signal <RHS_SIGNAL>— RHS signal path for signal-vs-signal comparison. Must point at the same{source}/{message}event table as--lhs-signal(cross-table requires alignment, deferred). Mutually exclusive with--rhs--rel-tol <REL_TOL>— Relative tolerance foris_close/is_approximately. Overrides the op's default (is_close:1e-9;is_approximately:1e-6). Rejected on non-tolerance ops--abs-tol <ABS_TOL>— Absolute tolerance foris_close/is_approximately. Overrides the op's default (is_close:0.0;is_approximately:1e-12). Rejected on non-tolerance ops--nan-ok— TreatNaN == NaNas true for tolerance ops (pytest-style). Default false (IEEE-754NaN != NaN). Rejected on non-tolerance ops--last <LAST>— Lookback duration (e.g.30s,5m,1h). When omitted, live defaults to30s; trace defaults to the entire file--start <START>— Range start. Accepts ISO 8601 (2025-01-01T00:00:00Z), a date (2025-01-01), a relative offset (-30s/-1.5m/+1h),now, a bare integer (epoch ns), or a bare decimal (epoch seconds). Matches the Python SDK'sstart=kwarg--end <END>— Range end. Same grammar as--start--temporal <TEMPORAL>— Temporal mode. Defaults tolatestwhen no range is given,alwayswhen--last/--startis specified
Possible values: latest, always, ever, never, count
-
--for-duration <FOR_DURATION>— Assert the predicate holds continuously for the given duration (e.g.--for-duration 30s). -
zelos live check: polls the live store at--intervalcadence and terminates fail on the firstpredicate_false. *zelos trace check: desugars to--temporal=alwaysover the first<duration>of the recording — equivalent to--start <trace.start> --end <trace.start + D> --temporal always. -
--within-duration <WITHIN_DURATION>— Assert the predicate becomes true at least once within the given duration (e.g.--within-duration 30s). -
zelos live check: polls until the firstsatisfiedor deadline. *zelos trace check: desugars to--temporal=everover the first<duration>of the recording. --suite <SUITE>— Run a JSON suite of checks (mutually exclusive with single-check flags)--strict— Require a unique segment per signal path (opt out of newest- segment-wins disambiguation). Defaultfalse: when a path resolves to N segments sharing(source, message, signal, producer), the resolver picks the segment with the most recent data. Pass--strictto require a single segment and surfaceAmbiguousSignalotherwise — useful when a test wants to assert a unique-segment invariant. Cross-producer ambiguity always errors regardless; narrow with--producers--json— Output JSON instead of human-readable-o,--output-artifact <PATH>— Emit a check-result-suite artifact at the given path. Same JSON schema the PythonAgentCheckerwrites, so artifacts from the CLI and frompytest --zelos-local-artifacts-dir=...runs are interchangeable downstream (replay, diff). Atomic tmp-rename write — never leaves a half-file on a crashed run--producers <PRODUCERS>— Restrict signal resolution to recorders matching this set (comma-separated, e.g.bus0,bus1). Disambiguates multi- producer traces where a bare path likepack.voltageresolves to one signal per recorder. Default empty — accept any recorder; rely on the executor'sAmbiguousSignaloutcome to flag conflicts
zelos trace export¶
Export traces to a new file (optionally windowed; legacy or TRZ2 format)
Usage: zelos trace export [OPTIONS] --output <OUTPUT> <INPUTS>...
Examples:
zelos trace export capture.trz -o out.trz
zelos trace export capture.trz -o out.trz --format trz2
zelos trace export a.trz b.trz -o merged.trz --start 2026-01-01T00:00:00Z --end 2026-01-01T01:00:00Z
Arguments:¶
<INPUTS>— Input trace files (legacy .trz; TRZ2 inputs require --format trz2)
Options:¶
-o,--output <OUTPUT>— Output file path--start <START>— Window start (with --end). Accepts the CLI's shared time grammar:now, a date (2025-01-01), a relative offset (-30s/-1.5m/+1h), ISO 8601 / RFC 3339, or epoch ns/seconds--end <END>— Window end (with --start). Same grammar as --start--format <FORMAT>— Output format. Legacy DuckDB is the release default; TRZ2 is the sealed catalog+Parquet tar
Default value: legacy
Possible values:
legacy: Legacy DuckDB .trz (the release default)-
trz2: TRZ2 — sealed catalog + Parquet in an uncompressed tar -
--name <NAME>— Human-readable trace name, stamped into the sealed catalog at seal time. TRZ2 only (--format trz2); the legacy format has no catalog to carry it. Write-only for now: the name rides in the trace metadata but is not yet surfaced bytrace infoor the app -f,--force— Overwrite output if it exists
zelos trace merge¶
Merge multiple .trz files into a single trace
Usage: zelos trace merge [OPTIONS] --output <OUTPUT> <INPUTS>...
Examples:
zelos trace merge trace1.trz trace2.trz -o combined.trz
zelos trace merge ./traces/ -o combined.trz --force
Arguments:¶
<INPUTS>— Input .trz files or directories containing .trz files
Options:¶
-o,--output <OUTPUT>— Output file path-f,--force— Overwrite output if it exists
zelos trace close¶
Close cached trace handles on the agent. With no arguments, closes all
Usage: zelos trace close [FILES]...
Examples:
Arguments:¶
<FILES>— Specific trace files to evict; omit to close all cached
zelos trace upload¶
Upload a trace to Zelos Cloud — either the agent's live session (--live) or a sealed trz2 directory.
Without --organization the trace goes to your ACTIVE organization (the one the console last put you in); the upload reports which one it used. Pass --organization to upload elsewhere — a slug you are not a member of fails before anything is created.
Without --name the trace is labeled trace_<timestamp>, the same convention zelos live export names its output file with.
Uploads count against your organization's Zelos Cloud storage.
--tag applies existing organization tags to the upload and may be repeated. Names match case-insensitively and must already exist in the organization's vocabulary (see zelos tags list); an unrecognized name fails before the upload starts rather than creating a tag.
Usage: zelos trace upload [OPTIONS] [PATH]
Examples:
zelos trace upload --live
zelos trace upload --live --organization acme
zelos trace upload ./sealed-trace/ --organization acme --name nightly-run
zelos trace upload --live --tag bms --tag thermal
Arguments:¶
<PATH>— A sealed trz2 directory to upload (mutually exclusive with --live)
Options:¶
--organization <ORGANIZATION>— Organization slug to upload under (defaults to your active organization)--live— Upload the agent's live session (mutually exclusive with PATH)--name <NAME>— Human-facing label for the uploaded trace (default: trace_) --tag <NAME>— Existing organization tag to apply (repeatable, case-insensitive)
zelos trace download¶
Download a cloud trace to a local TRZ2 (.trz) file.
A cloud trace is STORED as TRZ2 content, so this is a repack, not a conversion: the same bytes come down and are packed into one file, which is then verified before the download reports success.
Usage: zelos trace download [OPTIONS] <REF>
Examples:
zelos trace download 'zelos://open?org=acme&trace=0198f0e1-...'
zelos trace download 'zelos://open?org=acme&trace=0198f0e1-...' -o dyno.trz --force
Arguments:¶
<REF>— Cloud trace ref: zelos://open?org=&trace=
Options:¶
-o,--output <OUTPUT>— Output file path (default:.trz in the current directory) -f,--force— Overwrite output if it exists
zelos tools¶
Debug client for the agent-owned generic tool surface. The agent process is the only thing that defines tool behavior; this CLI just forwards JSON arguments and prints the returned envelope. Built-ins use stable names such as signal_list; action-backed tools appear in tools list as ext_<slug> names. Local-only by default — pass --allow-network-agent to talk to a remote agent.
Usage: zelos tools [OPTIONS] <COMMAND>
Subcommands:¶
list— List the built-in tools plus existing agent actionscall— Call a tool by name
Options:¶
--host <HOST>— Agent host (loopback only unless --allow-network-agent is set)
Default value: localhost:2300
* --allow-network-agent — Permit a non-loopback agent URL. Refused by default
zelos tools list¶
List the built-in tools plus existing agent actions
Usage: zelos tools list [OPTIONS]
Examples:
Options:¶
--names-only— Print just the tool names, one per line
zelos tools call¶
Call a tool by name
Usage: zelos tools call [OPTIONS] --tool <TOOL>
Examples:
zelos tools call --tool signal_list --args '{"scope":{"kind":"live"}}'
zelos tools call --tool event_list --args '{"scope":{"kind":"live","agents":["localhost"],"durationSeconds":60},"eventTypes":["zelos.check.*"]}'
zelos tools call --tool event_list --args '{"scope":{"kind":"trace","tracePaths":["/tmp/run.trz"]}}'
zelos tools call --tool signal_at_time --args-file query.json
zelos tools call --tool signal_list --raw
event_list applies durationSeconds only to live discovery (default 60 seconds). Trace scope lists the whole bounded trace and has no lookback window.
Options:¶
--tool <TOOL>— Tool name (e.g.signal_list,ext_zeloscloud_can_transmit)--args <ARGS>— Inline JSON arguments. Defaults to{}when omitted--args-file <ARGS_FILE>— Path to a JSON file containing arguments--context <CONTEXT>— Optional JSONToolCallContext. Empty means agent defaults--raw— Print the envelope JSON exactly as returned (no pretty-print)
zelos update¶
Self-update the CLI binary to the latest (or a specific) version.
Downloads the release from the Zelos CDN, verifies the SHA-256 checksum, and replaces the current binary in place. Shell completions are automatically reinstalled after a successful update.
Usage: zelos update [OPTIONS]
Examples:
zelos update # update to latest
zelos update --version 0.1.2 # install specific version
zelos update --force # skip confirmation prompt
Options:¶
--version <VERSION>— Install a specific version instead of latest-f,--force— Skip confirmation prompt
zelos version¶
Print the CLI version and build target.
Usage: zelos version
Examples:
zelos completions¶
Generate or install shell completions for bash, zsh, fish, PowerShell, or elvish.
If no shell is specified, the current shell is auto-detected from $SHELL. Use --install to write completions directly to the appropriate system directory. Without --install, completions are printed to stdout for manual piping or inspection.
Usage: zelos completions [OPTIONS] [SHELL]
Examples:
zelos completions bash --install # install to system dir
zelos completions zsh --install # install for zsh
zelos completions fish --install # install for fish
zelos completions bash # print to stdout
zelos completions # auto-detect shell, print to stdout
Completions are also auto-installed during zelos update and the installer script.
Arguments:¶
<SHELL>— Shell to generate completions for (auto-detected if omitted)
Possible values: bash, elvish, fish, powershell, zsh
Options:¶
--install— Install completions into the appropriate system directory