CLI reference

Every zeno subcommand with its flag table.

The zeno CLI is the operator's entry point for daily ops. It talks directly to the Docker socket via dockerode and stores profile metadata in ~/.zeno/state.db.

The flag tables below are generated at docs build time from the citty args schemas in apps/cli/src/commands/<cmd>.ts — when a flag is added or renamed, the next zeno-docs deploy carries it without anyone touching this page.

Profile management

zeno profile create

Creates a new profile, allocates a host port, generates a master key, and scaffolds ~/.zeno/profiles/<name>/USER.md and .env from the templates under templates/profile/.

zeno profile create personal --owner "Alice"
FlagTypeDefaultDescription
<profile>positionalprofile identifier (lowercase kebab-case, e.g. "personal
--ownerstringhow Zeno calls you (goes to USER.md). Prompted if omitted.
--portstring
--yesbooleanskip prompts, use placeholder for missing fields

zeno profile list

Inventory of every profile in state.db, with live container status and dashboard port.

zeno profile list

This subcommand takes no flags.

zeno profile show

Full detail block for a single profile.

zeno profile show personal
FlagTypeDefaultDescription
<profile>positionalprofile identifier

zeno profile edit

Move a profile's host port. Useful when a port is already taken.

zeno profile edit personal --port 6105
FlagTypeDefaultDescription
<profile>positionalprofile identifier
--portstring

zeno profile use

Set the sticky profile that subcommands act on when no profile argument is given.

zeno profile use personal
FlagTypeDefaultDescription
<profile>positionalprofile identifier

zeno profile delete

Remove a profile: container, both volumes, the ~/.zeno/profiles/<name>/ directory, and the state.db row. Prompts before destroying anything.

zeno profile delete personal
FlagTypeDefaultDescription
<profile>positionalprofile identifier

zeno profile

The umbrella subcommand. Running it with no further arg prints the available verbs.

This subcommand takes no flags.

Lifecycle

zeno start

Start a profile container. Auto-builds the zeno-agent:dev image if it's missing.

zeno start personal
zeno start --all
zeno start personal --build
FlagTypeDefaultDescription
<profile>positionalprofile identifier (omit for sticky)
--allboolean
--buildbooleanforce rebuild of zeno-agent:dev image before start

zeno stop

Stop a profile container without removing it.

zeno stop personal
zeno stop --all
FlagTypeDefaultDescription
<profile>positionalprofile identifier (omit for sticky)
--allboolean

zeno restart

Stop + start. Cheapest way to pick up an env change.

zeno restart personal
FlagTypeDefaultDescription
<profile>positionalprofile identifier (omit for sticky)
--allboolean
--buildboolean

Inspect

zeno logs

Tail container logs. SIGINT (Ctrl-C) to abort.

zeno logs personal --tail 100
FlagTypeDefaultDescription
<profile>positionalprofile identifier (omit for sticky)
--tailstring

zeno open

Open the profile's dashboard in the system browser.

zeno open personal
FlagTypeDefaultDescription
<profile>positionalprofile identifier (omit for sticky)

zeno doctor

Preflight diagnostics: docker reachable, drift between state.db and the running Docker world, etc. Reports findings; does not heal.

zeno doctor

This subcommand takes no flags.

Updates

zeno upgrade

Switch the local clone to a different release. With no flags, drops into a TTY arrow-key picker over the available stable releases. With --list, prints a table and exits. With --to, pins to a specific tag. With --prerelease or --edge, opens the picker over the alternate channels.

zeno upgrade
zeno upgrade --list
zeno upgrade --to v2026.5.7-7
FlagTypeDefaultDescription
--tostring
--prereleasebooleaninclude pre-releases when picking latest
--edgeboolean
--latestbooleanjump straight to latest stable (skips the picker)
--listboolean
--forceboolean

Misc

zeno repo

Print the canonical repo path. Useful in shell scripts that need to cd into the source tree.

cd "$(zeno repo)"

This subcommand takes no flags.

On this page