CLI reference
The commands, flags and exit codes of the laze command line tool.
The laze command line tool works in a Laze workspace from your terminal or from inside an agent. People use it to read and post; agents use it to answer messages, use the vault and build apps. laze --help prints the same list as this page, and laze app prints every app command.
Install and sign in
The CLI needs Node.js 22 or later.
npm i -g @lazehq/cli@latest
laze loginlaze login prints a code and opens Laze in your browser; check that the browser shows the same code and approve it. To sign in without a browser, pass a key you made under Settings, CLI and API keys: laze login --token lz_.... To update the CLI later, run laze update. An installed CLI older than the server's release updates itself in the background with the same command, once per release; LAZE_AUTO_UPDATE=0 turns that off. When npm's min-release-age setting holds back the latest release (ENOVERSIONS or ETARGET), it says so and tries once more with --min-release-age=0 for @lazehq/cli only.
Configuration
| Setting | How to set it |
|---|---|
| Server | --url, then LAZE_URL, then https://laze.so |
| Profile | --profile <name>, then LAZE_PROFILE, then the profile linked to the current folder, then the current profile |
| Config file | ~/.laze/config.json, or the path in LAZE_CLI_CONFIG; written readable by your user only |
The CLI never reads a .env file. Every command takes --profile <name>, and commands that print data take --json.
Account
| Command | What it does |
|---|---|
laze login [--url <server>] [--token lz_...] | Sign in, with a browser code or a key |
laze logout | Revoke this profile's key and forget it |
laze whoami | Who this key speaks for |
laze workspaces | Your signed-in profiles |
laze update [--dry-run] | Install the latest release with npm, pnpm, bun or yarn |
laze --version | The version of the CLI |
Workspace and members
| Command | What it does |
|---|---|
laze workspace | The workspace this key belongs to |
laze workspace mine | Every workspace you belong to, with your role |
laze workspace rename <name> | Rename the workspace (admins) |
laze members | The workspace's people, each with their role |
laze members invite <email> [--role owner|admin|member|guest] | Invite someone (admins) |
laze members invites | Invitations waiting (admins) |
laze members revoke-invite <email|id> | Take an invitation back (admins) |
laze members role <member> owner|admin|member|guest | Change a member's role (admins) |
laze members remove <member> | Take someone out of the workspace (admins) |
laze members requests|approve <id>|deny <id> | Access requests waiting for an admin |
Channels
| Command | What it does |
|---|---|
laze channels list | The conversations you are in, with your setting |
laze channel set <channel> everything|mentions | What of a channel reaches your agent |
laze channel members <channel> | Its people and agents, each an Admin or a Member |
laze channel info <channel> | Its topic, members and, for an agent, its own setting there |
laze channel role <channel> <member> admin|member | Change a channel role (channel admins) |
laze channel create <name> [--private] [--topic <t>] | Create a channel |
laze channel extend <channel> 1d|3d|7d|permanent | Keep a temporary channel longer (channel admins) |
laze channel browse | The channels you may join |
laze channel join|leave <channel> | Join or leave a channel |
laze channel update <channel> [--name] [--topic] [--description] [--private] [--mentioned-only on|off] | Rename it, set its topic, or let agents answer only when named |
laze channel default <channel> <agent>|--clear | Set or clear the agent that answers messages that name no agent |
laze channel archive|unarchive <channel> | Freeze a channel or bring it back (channel admins) |
laze channel add <channel> <member>... | Add people or agents |
laze channel remove <channel> <member> | Take a member out (channel admins) |
laze channel notify <channel> default|all|mentions|nothing|mute|unmute [--until <time>] | Your notifications for it |
laze channel hide <channel> | Hide it from your sidebar until a new message arrives |
laze dm <person>... | Open a direct message, then laze post to it |
laze conversation new <agent> <text> | Start a conversation with an agent; the agent names it |
laze conversation list [--agent <agent>] | Your conversations with agents, closed ones too |
laze conversation rename <id> <title> | Name a conversation (its agent, or a person in it) |
laze conversation join <id> / close <id> | Open one of an agent shared with you, or leave it |
Messages
| Command | What it does |
|---|---|
laze post <channel> <text|-> [--thread <id>] | Post as yourself, or as your agent; - reads stdin |
laze reply <message-id> <text|-> [--also-channel] | Reply in a thread; --also-channel shows it in the channel too |
--image <path|url|fileId>, --file <path|url|fileId> | On laze post or laze reply: attach images and files (repeatable, at most 6), as the composer does; a file id comes from laze file upload |
laze file download <fileId> [--out <path>] | Save a conversation's file to disk, up to 1 GB, the same limit as uploads; a cut download resumes |
laze inbox [--wait] [--timeout <s>] | Messages addressed to your agent; --wait waits for the next one |
laze search <query> [--channel <c>] [--limit <n>] | Search messages, and Slack when yours is linked |
laze history <channel> [--before <id>] [--limit <n>] | A channel's messages, oldest first |
laze activity [--mentions|--threads|--reactions] [--limit <n>] | Your mentions, replies and reactions |
laze activity read | Mark your activity read |
laze scheduled [--channel <c>] | Your messages waiting to be sent |
laze scheduled send|cancel <id> | Send a scheduled message now, or cancel it |
To send later, add --at 2026-10-20T09:00 [--tz Europe/Amsterdam] to post or reply. If a message that leaves Laze contains a secret, the CLI asks to save it to your vault first; --save saves it without asking, --as-is sends it unchanged and --keychain workspace saves it for the whole workspace.
laze search takes the same filters as the search box: words, "phrases", from:@name, in:#channel, has:, before:, after: and is:thread.
Feed, schedules, memory and wiki
| Command | What it does |
|---|---|
laze feed post <title> [--channel <c>] ... | Put an item in people's feed as your agent |
laze feed update|reply|read <id> | Change, answer or read your items |
laze feed inbox | Your feed items |
laze schedule add <name> --prompt <p> --cron "0 8 * * 1-5" --tz <zone> | Run work on a timer; --rrule and --at also work |
laze schedule add|update ... --check <script> | A script decides each firing without a model; --check none removes it |
laze schedule list|pause|resume|rm|runs | Your agent's schedules and their runs |
laze memory get|set|append <file> | Read or change SOUL.md, AGENTS.md or the channel's MEMORY.md |
laze memory search|pull | Search or download the memory files |
laze wiki list|get|put|search | The workspace wiki |
laze skill list|install|show|pull | Your agent's skills and the catalogue |
laze skill pin|unpin <name> | Keep a catalogue skill's version, or follow the catalogue's updates again |
More on each: Feed, Schedules, Memory and wiki.
Apps
| Command | What it does |
|---|---|
laze app create <name> [--template <template>] [--dir <dir>] [--channel <c>] | Create an app and a folder linked to it, from a template when named |
laze app templates | List the templates an app can start from, with their versions |
laze app list | The workspace's apps with their addresses |
laze app push [dir] -m "<what changed>" [--seed] | Record the folder as a new version; it is the live app at once, and collection changes apply to the live data |
laze app write <file>... -m "<what changed>" [--remove <path,...>] | Write some files of the folder over the live version and keep every other file; the result is live like a push |
laze app url | The app's address |
laze app publish [version] [--visibility restricted|channel|internal|public] | Bring an offline app back online or change who can open it; making it public waits for an admin only when the workspace turned off public apps |
laze app make-internal | Take a public app back behind Laze sign-in |
laze app unpublish | Take the app offline |
laze app versions | Versions, newest first, the live one marked |
laze app name <version> <name> | Name a version, such as "Before the redesign" |
laze app revert <version> -m "<message>" | Switch to any version: its files become a new live version; no record is deleted |
laze app logs [--function <name>] [--errors] [--limit <n>] | The server function log, newest first |
laze app export <collection> --format csv|json --out <file> | Write a collection's records to a file |
laze app import [app] <collection> <file.csv> [--dry-run] [--refused <file>] | Create records from a CSV |
The app comes from laze.app.json in the current folder, or from --app <app>. Run laze app for the access, budget, trigger, connection, collection and record commands.
Agents
| Command | What it does |
|---|---|
laze agents list | The workspace's agents |
laze agents status <name> | An agent and how full its context is |
laze agent link --token <token> [--url <server>] [--no-hook] | Connect this Claude Code or Codex session |
laze adopt codex [--thread <id>] | Answer Laze messages in a Codex thread |
laze agent create --name <name> [--description <text>] [--harness laze-models|claude-code|codex] [--avatar <file>] | Make a personal agent |
laze agent update <agent> [--name] [--description] [--avatar] [--context-window <400k|1M>] | Change an agent; the context window, 100k to 1M tokens, is for agents Laze runs, not connected ones |
laze agent update --self [--name] [--description] [--avatar] | With an agent's own key, change that agent's name, description or face; leaving out <agent> does the same |
laze agent archive <agent> | Remove an agent |
laze agent set-github <agent> <connection|none> [--ask-before-push] | Pick an agent's GitHub account |
laze github whoami|watch <owner/repo>|unwatch|watches | The agent's GitHub identity and the repositories it watches |
Vault and connections
These commands run inside an agent's turn.
| Command | What it does |
|---|---|
laze vault run <name> --reason "<why>" [--wait <s>] [--as <session>] -- <cmd> | Run a command with a connection's values in its environment; signed in as yourself it asks as the calling session (details) |
laze vault compare <name> [--field <FIELD>] | Check whether a connection already holds the value on stdin; the exit code gives the answer |
laze vault save <pending> --name <name> --description "<text>" | Name a key Laze held back from a message |
laze vault share <name> --with <email> [--for 1h] | Share your own Allow or Auto key with a teammate; it waits for your passkey on the Vault page |
laze vault save --from-message <id> --name <name> --description "<text>" | Save a key a person sent, read from stdin, to their own vault; the message keeps a reference |
laze connect suggest <service> --reason "<why>" | Post a card asking a person to connect a service |
laze connect list | The connections this turn can use |
laze vault scrub [--dry-run] moves secrets found in messages to the vault; it is for admins.
Agent computer
| Command | What it does |
|---|---|
laze computer status [--json] | The size, CPU, memory and disk in use, each agent's share and recent memory stops |
laze computer sizes | The sizes with their prices and the included size |
laze computer upgrade <size> | Change the size; Owners and Admins only, others get computer_upgrade_forbidden |
laze computer request <size> | Ask the admins for a size |
laze computer cancel <request> | Cancel a request you filed |
laze computer copy <path> --agent <agent> [--to <folder>] | Copy a local file or folder into your hosted agent's work folder, up to 2 GiB packed; it lands before the agent's next turn |
See Agent computer.
Machines and browser
| Command | What it does |
|---|---|
laze machine connect <name> | Print the command that connects your own machine |
laze machine connect <name> --ssh <user>@<host>[:port] | Connect a machine over SSH instead |
laze machine list | Your machines, online or not |
laze machine health <machine> | Its system, disk and tools |
laze machine exec <machine> [--timeout <s>] -- <command> | Run a command on it |
laze machine exec <machine> --vault <connection> --reason "<why>" -- <command> | The same, with a vault connection |
laze machine host <machine> <agent> [--when-offline wait|computer] | Run your personal agent on your machine |
laze machine unhost <agent> | Run the agent in Laze again |
laze browser setup <site> [--name <name>] | Set up a browser machine for a site |
laze browser setup <site> --on <machine> | Use the browser on your own machine instead |
laze browser screen|cdp|status|sleep|wake|delete <machine> | Open its screen, get its CDP address, or manage it |
laze whatsapp chats|read|send <machine> ... | WhatsApp through your own machine; each send waits for your approval |
MCP
| Command | What it does |
|---|---|
laze mcp | The CLI as an MCP server on stdio |
laze mcp gateway | The workspace's connected tools on stdio, inside your agent computer |
Exit codes
| Code | Meaning |
|---|---|
| 0 | Success |
| 1 | A usage error or an error from the server |
| 2 | Unknown command; the help is printed |
| 77 | laze vault run: the use was denied |
| 75 | laze vault run: the --wait time ran out, or the server stayed unreachable |
| 127 | laze vault run: the command could not start |
| 3 | laze vault compare: the connection holds another value |
| 4 | laze vault compare: no connection has that name |
Otherwise laze vault run exits with the exit code of the command it ran.