Skip to main content
lua status (alias lua describe) reports the state of the CLI install, your credential, the current project, and how each local primitive compares with the server, in one run. It reads only; nothing is written locally or on the server. Verified against lua-cli 3.33.0.

Synopsis

Description

The report has these sections: environment (CLI version and channel, Node, OS, install method, API and auth base URLs, which LUA_* overrides are set), updates (current and latest CLI version), auth, project, one primitives entry per kind (skills, webhooks, triggers, jobs, preprocessors, postprocessors, MCP servers, devices, device triggers, voices, workflows), persona, backup, telemetry, warnings, and hints. The command degrades instead of failing. Outside a project, project.inProject is false and primitives is empty. Without a usable credential, auth.authenticated is false, auth.serverReachable says whether the API answered, and the server side of every comparison is skipped. A section that cannot be gathered adds a line to warnings rather than aborting. The exit code is 0 in all of these cases, so automation must read the fields, not the exit code. For each primitive kind, local lists the entries in lua.skill.yaml, server lists what the agent has, and diffs gives one status per local entry: synced (local version equals the active server version), ahead (local is newer; push it, then lua version create and lua version promote, or lua deploy <type>), behind (local is older; run lua sync), or not deployed (registered without an active version, or no local version). MCP servers have no versions and are synced when present. orphans lists active server entries with no local counterpart, each with a cleanupCommand; orphaned preprocessors and postprocessors are marked critical because they run on every message. auth.source names where the credential came from: environment for the LUA_API_KEY variable, stored for the credentials file, or renewable session for an email sign-in. A scoped API key adds credentialClass: "typed-personal" and reports email and userId as null. persona.status is synced, drift, or unknown; backup.status is synced, out-of-sync, never-compiled, or unknown. hints lists follow-up commands derived from the report (lua update, lua auth configure, orphan cleanup, lua push backup, lua sync); it is empty when LUA_NO_HINTS is set.

Arguments

None.

Options

Output

The JSON report, formatted for readability and trimmed to two primitive kinds; the project’s lua.skill.yaml had lost its postprocessor row, so the server’s active postprocessor appears as an orphan:
Output
An orphan entry has name, cleanupCommand, and critical only; the server version is in the kind’s server list. warnings is an array of strings, each prefixed with the section that failed (config:, auth:, updates:, primitives:, persona:, backup:, telemetry:) or Failed to fetch server state for <kind>:. A lua.skill.yaml that does not parse is reported there and the command still exits 0:
Output
Outside a project the project, primitives, persona, and backup sections degrade to:
Output

Examples

Print the human-readable report:
Confirm the credential works in CI, then list every primitive that is not synced:
Print the commands the report recommends:

Exit codes

See also