Skip to main content
lua version manages agent versions: numbered snapshots of the latest pushed version of every skill, webhook, job, processor, trigger, and workflow, plus the persona, the model, the default voice, and the MCP server configuration. lua version promote is the only action here that changes what end users get: it swaps every primitive version and the model to the chosen agent version at once. The persona is recorded in the version but not switched by it. Verified against lua-cli 3.33.0.

Synopsis

Description

lua push pushes a version of a primitive; nothing changes for end users. lua version create snapshots the latest pushed version of every primitive into a new agent version with status staged. lua version promote <n> makes that agent version active for every end user, atomically, and promoting an earlier version is the rollback path for everything except the persona: a pushed persona is served from the agent’s next message, agent versions record which persona version was current, and lua version promote does not change the served persona. To roll a persona back, deploy the earlier persona version with lua deploy persona --set-version <n>. lua deploy <type> is the single-primitive shortcut: for a webhook, job, processor, or trigger it creates and promotes an agent version scoped to that primitive, and lua workflows deploy does the same for a workflow; for a skill it sets the active version the agent serves at once, which the next promote resets to the promoted agent version’s pin. The release how-to is Release an agent. An agent version pins one version of each skill, webhook, trigger, job, preprocessor, postprocessor, and MCP server, plus the persona version, the model code, the bound voice, and any workflows. Devices and device triggers are not part of it. create needs a source backup, which every lua push except lua push agent records, and links the version to it so lua pull --version <n> can restore the matching files. create exits 0 with No changes since the latest version, so there is nothing to snapshot. when nothing changed. An agent keeps at most 100 versions. delete is a soft delete: the version leaves listings but stays in history; the active version and the last remaining version cannot be deleted. With lua git connect enabled, create commits and tags the project lua/v<n> and records the commit hash on the version; promote and delete add audit commits.

Arguments

Options

Statuses

Output

create prints one line on stdout, ✓ Created v<n> (staged). Run `lua version promote v<n>` to deploy., or ℹ️ No changes since the latest version, so there is nothing to snapshot. when nothing changed. promote prints ✓ Promoted v<n>. Previous active: v<m>. (or (No previous active version.) on the first promote), or v<n> is already active. No change.; all on stdout, exit 0. list returns versions newest first, highest number at the top, so a script reads the version create just made with lua version list --limit 1 --json --ci | jq -r '.[0].version'. It prints one row per version (VERSION, STATUS, CREATED, BY, MESSAGE); --json prints an array of { version, status, message, createdBy, createdByEmail, createdAt, commitHash, sourceManifestVersion } without the snapshot field. show prints the creator, message, commit, model, persona version, and a count per primitive kind; show --json returns the full record with snapshot. diff prints + added, - removed, and ~ changed entries per kind, then persona, model, and voice changes; diff --json returns { fromVersion, toVersion, skills, webhooks, jobs, preprocessors, postprocessors, triggers, mcpServers, persona, model, voice }, each kind as { added, removed, changed }. status prints TYPE, NAME, ACTIVE VERSION, and LOCAL per local primitive, marks mismatches with , and counts how many are ahead of the active version (push, then create and promote) or behind it (run lua sync).

Examples

Create an agent version from what is pushed, with a message:
Push everything and create a version in one step, in CI:
Create a version in a script and promote the number it got:
Make version 4 live for every end user (promote 3 again to roll back):
List the ten most recent versions as JSON:
Before the first create, list prints a hint instead of a table:
Output
Compare what changed between two versions:
Check which local primitives differ from the active version:
Output
Delete an old version without a prompt:

Exit codes

See also