Docs / CLI referenceThe
The lisa command center.
One command center: every user-facing verb lives under lisa <verb> — never scattered helper scripts (PLAN §5.4, Appendix E rule 4). This table is generated from the actual clap definitions in cli/lisa/src/main.rs.
Text verbs share one endpoint flag: --url defaults to http://127.0.0.1:7777 (env LISA_INFERENCE_URL).
| Verb | What it does | Key flags |
|---|---|---|
lisa ask | Ask the system model. Reads stdin when piped, e.g. git log | lisa ask "changelog, markdown". | --model, --no-stream, --json-schema <file>, --background, --url |
lisa explain | Explain the last failed command: lisa explain --exit 101 cargo build, or pipe the output — make 2>&1 | lisa explain. Bare lisa explain uses what the terminal hooks stashed about the last failure. | --exit <code>, --model, --url |
lisa suggest | Natural language → ONE shell command, printed for review — never executed (the Ctrl+G terminal hook calls this). stdout is exactly the command; the explanation goes to stderr. | --json, --model, --url |
lisa models | Manage the local model store: list, verify, gc, rm, pull (pinned blake3), profile, catalog, get, hash, add. | --store <dir>; per-subcommand flags like --json, --runnable, --blake3 |
lisa do | Natural language → a confirmed tool action on the Agent Bus: lisa do "add milk to my notes" (ADR-0013 intent router). | --dry-run, --yes, --model, --url |
lisa tools | List tools on the Agent Bus. | — |
lisa call | Call a tool on the Agent Bus directly: lisa call app.lisaos.notes create_note '{"title":"milk"}'. | --yes |
lisa undo | Revert the last undoable agent action. | — |
lisa ledger | Read the append-only audit ledger. | --tail <n> (default 20), --json, --db <path> |
lisa context | Context fabric: index and search your files. Subcommands: index <dir>, search <query>. | index: --embed · search: --limit, --hybrid, --scope (repeatable) |
lisa memory | Per-app durable memory. Subcommands: get, set, list, wipe. | --app <namespace> (default "host"); wipe: --yes |
lisa install | Write the newest Lisa OS release to a whole disk — ERASES IT. The proto-installer (a guided OOBE installer is M7). | --from <file>, --yes |
lisa update | Pull the newest OS release into the inactive A/B slot (systemd-sysupdate; Track I systems). | --reboot |
lisa apps | Update the shell apps independently of the OS image (ADR-0020). Subcommands: update, status, rollback. | — |
lisa remote | Manage BYO remote model providers. Subcommands: list, add, key, consent. Inference uses them via lisa ask --model remote:<provider>:<model>. | consent <scope> <on|off> — scopes: prompt, files, mail, calendar, screen, memory |
lisa transcribe | Transcribe an audio file with whisper.cpp (STT). | --model <path> |
lisa say | Speak text with the local voice (piper / say) (TTS). | — |
lisa ambient | Lisa Ambient: the voice loop (ADR-0011). Subcommands: classify, once. | once: --speak, --classify, --model, --url |
lisa forge | LisaCode: talk an app into existence — the Forge harness drives a model to write + fix code until it passes analysis. | --project <dir> (default ./lisa-app), --model, --max-iters <n> (default 6), --url |
lisa embed | Embed text into a vector (reads stdin when piped). | --url |
Pipes are context
git log | lisa ask "changelog, markdown" # piped stdin becomes context
make 2>&1 | lisa explain # explain a failing build
lisa ask --json-schema recipe.json "…" # grammar-constrained: always parses
lisa ask --model remote:moonshot:kimi-k2 … # BYO cloud via the egress broker, ledgeredRemote (remote:<provider>:<model>) requests go to the egress broker, not the local engine: the broker holds the key, enforces per-scope consent, and ledgers the egress — the inference daemon never gets network.
Safety posture, encoded in the verbs
lisa suggestprints a command for review — it never executes; the Ctrl+G hook inserts it for you to edit before Enter.lisa installdemands a typed confirmation before touching a disk (--yesis for scripts/CI only).lisa doandlisa callhonor the bus's confirmation tiers;--yesauto-approves chip-level confirmations only — modal ones still refuse.- Model output is sanitized before printing: terminal escape sequences from untrusted text can't reach your terminal.