> ## Documentation Index
> Fetch the complete documentation index at: https://docs.meshagent.com/llms.txt
> Use this file to discover all available pages before exploring further.

# MeshAgent CLI Commands

# `meshagent`

**Usage**:

```console theme={null}
$ meshagent [OPTIONS] COMMAND [ARGS]...
```

**Options**:

* `--install-completion`: Install completion for the current shell.
* `--show-completion`: Show completion for the current shell, to copy it or customize the installation.
* `--help`: Show this message and exit.

**Commands**:

* `version`: Print the version
* `setup`: Perform initial login and project activation.
* `auth`: Authenticate to meshagent
* `project`: Manage or activate your meshagent projects
* `service-account`: Manage service accounts for your project
* `secret`: Manage user and service account secrets
* `iam`: Manage IAM policies for project resources
* `config`: Read MeshAgent deployment configuration
* `doctor`: Inspect the current directory for...
* `create`: Create a minimal deployable project.
* `session`: Inspect recent sessions and events
* `ask`: Send a one-shot LLM prompt.
* `launch`: Launch supported CLI apps through MeshAgent.
* `token`: Generate a participant token (JWT) from a...
* `service`: Manage services for your project
* `mcp`: Bridge MCP servers into MeshAgent rooms
* `rooms`: Create, list, and manage rooms in a project
* `agent`: Create, list, and manage managed agents in...
* `mailbox`: Manage mailboxes for your project
* `feed`: Manage feeds for your project
* `subscription`: Manage feed subscriptions for your project
* `route`: Manage routes for your project
* `registry`: Manage registries for your project
* `build`: Build a container image inside a room.
* `deploy`: Create or update a room service from an...
* `scheduled-task`: Manage scheduled tasks for your project
* `meeting-transcriber`: Join a meeting transcriber to a room
* `port`: Forward a container port to localhost
* `voicebot`: Join a voicebot to a room
* `process`: Run process-backed agents
* `room`: Operate within a room
* `llm`: Local LLM proxy utilities

## `meshagent version`

Print the version

**Usage**:

```console theme={null}
$ meshagent version [OPTIONS]
```

**Options**:

* `--help`: Show this message and exit.

## `meshagent setup`

Perform initial login and project activation.

**Usage**:

```console theme={null}
$ meshagent setup [OPTIONS]
```

**Options**:

* `--api-url TEXT`: Persist this API URL on the saved profile and use it for setup login.
* `--help`: Show this message and exit.

## `meshagent auth`

Authenticate to meshagent

**Usage**:

```console theme={null}
$ meshagent auth [OPTIONS] COMMAND [ARGS]...
```

**Options**:

* `--install-completion`: Install completion for the current shell.
* `--show-completion`: Show completion for the current shell, to copy it or customize the installation.
* `--help`: Show this message and exit.

**Commands**:

* `login`
* `logout`
* `switch`
* `whoami`
* `token`

### `meshagent auth login`

**Usage**:

```console theme={null}
$ meshagent auth login [OPTIONS]
```

**Options**:

* `--api-url TEXT`: Persist this API URL on the saved profile and use it for this login.
* `--help`: Show this message and exit.

### `meshagent auth logout`

**Usage**:

```console theme={null}
$ meshagent auth logout [OPTIONS]
```

**Options**:

* `--help`: Show this message and exit.

### `meshagent auth switch`

**Usage**:

```console theme={null}
$ meshagent auth switch [OPTIONS] [PROFILE]
```

**Arguments**:

* `[PROFILE]`: Saved profile user id or email. If omitted, saved profiles are listed or an interactive picker is shown in a TTY.

**Options**:

* `--help`: Show this message and exit.

### `meshagent auth whoami`

**Usage**:

```console theme={null}
$ meshagent auth whoami [OPTIONS]
```

**Options**:

* `--help`: Show this message and exit.

### `meshagent auth token`

**Usage**:

```console theme={null}
$ meshagent auth token [OPTIONS]
```

**Options**:

* `--help`: Show this message and exit.

## `meshagent project`

Manage or activate your meshagent projects

**Usage**:

```console theme={null}
$ meshagent project [OPTIONS] COMMAND [ARGS]...
```

**Options**:

* `--install-completion`: Install completion for the current shell.
* `--show-completion`: Show completion for the current shell, to copy it or customize the installation.
* `--help`: Show this message and exit.

**Commands**:

* `create`: Create a new MeshAgent project.
* `list`: List projects and mark the currently...
* `get`: Get a MeshAgent project.
* `activate`: Set the active project for subsequent CLI...

### `meshagent project create`

Create a new MeshAgent project.

**Usage**:

```console theme={null}
$ meshagent project create [OPTIONS] NAME
```

**Arguments**:

* `NAME`: \[required]

**Options**:

* `--help`: Show this message and exit.

### `meshagent project list`

List projects and mark the currently active one.

**Usage**:

```console theme={null}
$ meshagent project list [OPTIONS]
```

**Options**:

* `-o, --output TEXT`: output format   \[default: table]
* `--help`: Show this message and exit.

### `meshagent project get`

Get a MeshAgent project.

**Usage**:

```console theme={null}
$ meshagent project get [OPTIONS] PROJECT
```

**Arguments**:

* `PROJECT`: Project id or key to get  \[required]

**Options**:

* `-o, --output TEXT`: output format   \[default: table]
* `--help`: Show this message and exit.

### `meshagent project activate`

Set the active project for subsequent CLI commands.

**Usage**:

```console theme={null}
$ meshagent project activate [OPTIONS] [PROJECT_ID]
```

**Arguments**:

* `[PROJECT_ID]`: Project id or key. If omitted, an interactive picker is shown in a TTY.

**Options**:

* `-i, --interactive`: Interactively select or create a project. Uses the TUI in a TTY.
* `--help`: Show this message and exit.

## `meshagent service-account`

Manage service accounts for your project

**Usage**:

```console theme={null}
$ meshagent service-account [OPTIONS] COMMAND [ARGS]...
```

**Options**:

* `--install-completion`: Install completion for the current shell.
* `--show-completion`: Show completion for the current shell, to copy it or customize the installation.
* `--help`: Show this message and exit.

**Commands**:

* `api-key`: Manage API keys
* `list`: List service accounts for a project.
* `get`: Get a service account.
* `create`: Create a service account for a project.
* `update`: Update a service account.
* `delete`: Delete a service account.

### `meshagent service-account api-key`

Manage API keys

**Usage**:

```console theme={null}
$ meshagent service-account api-key [OPTIONS] COMMAND [ARGS]...
```

**Options**:

* `--help`: Show this message and exit.

**Commands**:

* `list`: List API keys for a service account.
* `create`: Create an API key for a service account.
* `delete`: Delete an API key.
* `get`: Get the activated API key for a project.
* `env`: Print the activated API key as a shell...
* `activate`: Set the default API key for a project in...

#### `meshagent service-account api-key list`

List API keys for a service account.

**Usage**:

```console theme={null}
$ meshagent service-account api-key list [OPTIONS]
```

**Options**:

* `--project-id TEXT`: A MeshAgent project id. If empty, the activated project will be used.  \[default: (dynamic)]
* `--service-account TEXT`: service account id or name that owns the API keys  \[required]
* `-o, --output TEXT`: output format   \[default: table]
* `--help`: Show this message and exit.

#### `meshagent service-account api-key create`

Create an API key for a service account.

**Usage**:

```console theme={null}
$ meshagent service-account api-key create [OPTIONS] NAME
```

**Arguments**:

* `NAME`: \[required]

**Options**:

* `--project-id TEXT`: A MeshAgent project id. If empty, the activated project will be used.  \[default: (dynamic)]
* `--service-account TEXT`: service account id or name that will own the API key  \[required]
* `--description TEXT`: a description for the API key
* `--activate / --no-activate`: use this key by default for commands that accept an API key  \[default: no-activate]
* `--silent / --no-silent`: do not print API key  \[default: no-silent]
* `--help`: Show this message and exit.

#### `meshagent service-account api-key delete`

Delete an API key.

**Usage**:

```console theme={null}
$ meshagent service-account api-key delete [OPTIONS] ID
```

**Arguments**:

* `ID`: \[required]

**Options**:

* `--project-id TEXT`: A MeshAgent project id. If empty, the activated project will be used.  \[default: (dynamic)]
* `--service-account TEXT`: service account id or name that owns the API key  \[required]
* `--help`: Show this message and exit.

#### `meshagent service-account api-key get`

Get the activated API key for a project.

**Usage**:

```console theme={null}
$ meshagent service-account api-key get [OPTIONS]
```

**Options**:

* `--project-id TEXT`: A MeshAgent project id. If empty, the activated project will be used.  \[default: (dynamic)]
* `--help`: Show this message and exit.

#### `meshagent service-account api-key env`

Print the activated API key as a shell export snippet.

**Usage**:

```console theme={null}
$ meshagent service-account api-key env [OPTIONS]
```

**Options**:

* `--project-id TEXT`: A MeshAgent project id. If empty, the activated project will be used.  \[default: (dynamic)]
* `--help`: Show this message and exit.

#### `meshagent service-account api-key activate`

Set the default API key for a project in local CLI settings.

**Usage**:

```console theme={null}
$ meshagent service-account api-key activate [OPTIONS] KEY
```

**Arguments**:

* `KEY`: \[required]

**Options**:

* `--project-id TEXT`: A MeshAgent project id. If empty, the activated project will be used.  \[default: (dynamic)]
* `--help`: Show this message and exit.

### `meshagent service-account list`

List service accounts for a project.

**Usage**:

```console theme={null}
$ meshagent service-account list [OPTIONS]
```

**Options**:

* `--project-id TEXT`: A MeshAgent project id. If empty, the activated project will be used.  \[default: (dynamic)]
* `-o, --output TEXT`: output format   \[default: table]
* `--help`: Show this message and exit.

### `meshagent service-account get`

Get a service account.

**Usage**:

```console theme={null}
$ meshagent service-account get [OPTIONS] SERVICE_ACCOUNT
```

**Arguments**:

* `SERVICE_ACCOUNT`: service account id or name  \[required]

**Options**:

* `--project-id TEXT`: A MeshAgent project id. If empty, the activated project will be used.  \[default: (dynamic)]
* `-o, --output TEXT`: output format   \[default: table]
* `--help`: Show this message and exit.

### `meshagent service-account create`

Create a service account for a project.

**Usage**:

```console theme={null}
$ meshagent service-account create [OPTIONS] NAME
```

**Arguments**:

* `NAME`: \[required]

**Options**:

* `--project-id TEXT`: A MeshAgent project id. If empty, the activated project will be used.  \[default: (dynamic)]
* `--display-name TEXT`: display name for the service account
* `--description TEXT`: description for the service account
* `--metadata TEXT`: metadata JSON object
* `--annotations TEXT`: annotations JSON object
* `-o, --output TEXT`: output format   \[default: table]
* `--help`: Show this message and exit.

### `meshagent service-account update`

Update a service account.

**Usage**:

```console theme={null}
$ meshagent service-account update [OPTIONS] SERVICE_ACCOUNT
```

**Arguments**:

* `SERVICE_ACCOUNT`: service account id or name  \[required]

**Options**:

* `--project-id TEXT`: A MeshAgent project id. If empty, the activated project will be used.  \[default: (dynamic)]
* `--name TEXT`: new service account name
* `--display-name TEXT`: display name for the service account
* `--description TEXT`: description for the service account
* `--metadata TEXT`: metadata JSON object
* `--annotations TEXT`: annotations JSON object
* `--help`: Show this message and exit.

### `meshagent service-account delete`

Delete a service account.

**Usage**:

```console theme={null}
$ meshagent service-account delete [OPTIONS] SERVICE_ACCOUNT
```

**Arguments**:

* `SERVICE_ACCOUNT`: service account id or name  \[required]

**Options**:

* `--project-id TEXT`: A MeshAgent project id. If empty, the activated project will be used.  \[default: (dynamic)]
* `--help`: Show this message and exit.

## `meshagent secret`

Manage user and service account secrets

**Usage**:

```console theme={null}
$ meshagent secret [OPTIONS] COMMAND [ARGS]...
```

**Options**:

* `--install-completion`: Install completion for the current shell.
* `--show-completion`: Show completion for the current shell, to copy it or customize the installation.
* `--help`: Show this message and exit.

**Commands**:

* `list`: List secrets for a subject.
* `search`: Search secrets for a subject.
* `get`: Get a secret for a subject.
* `create`: Create a secret for a subject.
* `update`: Update a secret for a subject.
* `delete`: Delete a secret for a subject.
* `versions`: List versions for a secret.
* `add-version`: Add a new version to a secret.
* `access`: Access the contents of a secret version.
* `delete-version`: Delete a secret version.
* `grants`: List proxy access grants for one of your...
* `grant-proxy`: Grant a service account proxy access to...
* `revoke-proxy`: Revoke a service account proxy access...
* `pull-secrets`: List pull secrets for a service account.
* `add-pull-secret`: Add a pull secret to a service account.
* `remove-pull-secret`: Remove a pull secret from a service account.

### `meshagent secret list`

List secrets for a subject.

**Usage**:

```console theme={null}
$ meshagent secret list [OPTIONS]
```

**Options**:

* `--project-id TEXT`: A MeshAgent project id. If empty, the activated project will be used.  \[default: (dynamic)]
* `--subject TEXT`: secret owner: "me" or a service account email, id, key, or name  \[default: me]
* `--page-size INTEGER`: page size  \[default: 100]
* `--filter TEXT`: text filter
* `-o, --output TEXT`: output format   \[default: table]
* `--help`: Show this message and exit.

### `meshagent secret search`

Search secrets for a subject.

**Usage**:

```console theme={null}
$ meshagent secret search [OPTIONS]
```

**Options**:

* `--project-id TEXT`: A MeshAgent project id. If empty, the activated project will be used.  \[default: (dynamic)]
* `--subject TEXT`: secret owner: "me" or a service account email, id, key, or name  \[default: me]
* `--filter TEXT`: text filter
* `--name TEXT`: secret name
* `--type TEXT`: secret type
* `--http-only / --not-http-only`: http-only flag
* `--metadata TEXT`: metadata JSON object
* `--annotations TEXT`: annotations JSON object
* `--provider TEXT`: standard provider annotation
* `--service TEXT`: standard service annotation
* `--account TEXT`: standard account annotation
* `--username TEXT`: standard username annotation
* `--email TEXT`: standard email annotation
* `--url TEXT`: standard url annotation
* `--oauth-provider TEXT`: standard OAuth provider annotation
* `--oauth-scopes TEXT`: standard OAuth scopes annotation
* `--page-size INTEGER`: page size  \[default: 100]
* `-o, --output TEXT`: output format   \[default: table]
* `--help`: Show this message and exit.

### `meshagent secret get`

Get a secret for a subject.

**Usage**:

```console theme={null}
$ meshagent secret get [OPTIONS] SECRET_ID
```

**Arguments**:

* `SECRET_ID`: secret id  \[required]

**Options**:

* `--project-id TEXT`: A MeshAgent project id. If empty, the activated project will be used.  \[default: (dynamic)]
* `--subject TEXT`: secret owner: "me" or a service account email, id, key, or name  \[default: me]
* `--include-value`: include the current secret value
* `-o, --output TEXT`: output format   \[default: table]
* `--help`: Show this message and exit.

### `meshagent secret create`

Create a secret for a subject.

**Usage**:

```console theme={null}
$ meshagent secret create [OPTIONS] NAME
```

**Arguments**:

* `NAME`: \[required]

**Options**:

* `--project-id TEXT`: A MeshAgent project id. If empty, the activated project will be used.  \[default: (dynamic)]
* `--subject TEXT`: secret owner: "me" or a service account email, id, key, or name  \[default: me]
* `--type TEXT`: secret type  \[default: opaque]
* `--http-only`: make the secret proxy-only
* `--metadata TEXT`: metadata JSON object
* `--annotations TEXT`: annotations JSON object
* `--value TEXT`: initial secret value
* `--value-file PATH`: file containing secret value
* `-o, --output TEXT`: output format   \[default: table]
* `--help`: Show this message and exit.

### `meshagent secret update`

Update a secret for a subject.

**Usage**:

```console theme={null}
$ meshagent secret update [OPTIONS] SECRET_ID
```

**Arguments**:

* `SECRET_ID`: secret id  \[required]

**Options**:

* `--project-id TEXT`: A MeshAgent project id. If empty, the activated project will be used.  \[default: (dynamic)]
* `--subject TEXT`: secret owner: "me" or a service account email, id, key, or name  \[default: me]
* `--name TEXT`: new name
* `--type TEXT`: new type
* `--http-only / --not-http-only`: http-only flag
* `--metadata TEXT`: metadata JSON object
* `--annotations TEXT`: annotations JSON object
* `--help`: Show this message and exit.

### `meshagent secret delete`

Delete a secret for a subject.

**Usage**:

```console theme={null}
$ meshagent secret delete [OPTIONS] SECRET_ID
```

**Arguments**:

* `SECRET_ID`: secret id  \[required]

**Options**:

* `--project-id TEXT`: A MeshAgent project id. If empty, the activated project will be used.  \[default: (dynamic)]
* `--subject TEXT`: secret owner: "me" or a service account email, id, key, or name  \[default: me]
* `--help`: Show this message and exit.

### `meshagent secret versions`

List versions for a secret.

**Usage**:

```console theme={null}
$ meshagent secret versions [OPTIONS] SECRET_ID
```

**Arguments**:

* `SECRET_ID`: secret id  \[required]

**Options**:

* `--project-id TEXT`: A MeshAgent project id. If empty, the activated project will be used.  \[default: (dynamic)]
* `--subject TEXT`: secret owner: "me" or a service account email, id, key, or name  \[default: me]
* `-o, --output TEXT`: output format   \[default: table]
* `--help`: Show this message and exit.

### `meshagent secret add-version`

Add a new version to a secret.

**Usage**:

```console theme={null}
$ meshagent secret add-version [OPTIONS] SECRET_ID
```

**Arguments**:

* `SECRET_ID`: secret id  \[required]

**Options**:

* `--project-id TEXT`: A MeshAgent project id. If empty, the activated project will be used.  \[default: (dynamic)]
* `--subject TEXT`: secret owner: "me" or a service account email, id, key, or name  \[default: me]
* `--value TEXT`: new secret value
* `--value-file PATH`: file containing secret value
* `--set-current / --no-set-current`: set as current version  \[default: set-current]
* `-o, --output TEXT`: output format   \[default: table]
* `--help`: Show this message and exit.

### `meshagent secret access`

Access the contents of a secret version.

**Usage**:

```console theme={null}
$ meshagent secret access [OPTIONS] SECRET_ID
```

**Arguments**:

* `SECRET_ID`: secret id  \[required]

**Options**:

* `--project-id TEXT`: A MeshAgent project id. If empty, the activated project will be used.  \[default: (dynamic)]
* `--subject TEXT`: secret owner: "me" or a service account email, id, key, or name  \[default: me]
* `--version TEXT`: secret version id; defaults to the current version
* `-o, --output TEXT`: output format   \[default: table]
* `--help`: Show this message and exit.

### `meshagent secret delete-version`

Delete a secret version.

**Usage**:

```console theme={null}
$ meshagent secret delete-version [OPTIONS] SECRET_ID VERSION_ID
```

**Arguments**:

* `SECRET_ID`: secret id  \[required]
* `VERSION_ID`: secret version id  \[required]

**Options**:

* `--project-id TEXT`: A MeshAgent project id. If empty, the activated project will be used.  \[default: (dynamic)]
* `--subject TEXT`: secret owner: "me" or a service account email, id, key, or name  \[default: me]
* `--help`: Show this message and exit.

### `meshagent secret grants`

List proxy access grants for one of your secrets.

**Usage**:

```console theme={null}
$ meshagent secret grants [OPTIONS] SECRET_ID
```

**Arguments**:

* `SECRET_ID`: secret id  \[required]

**Options**:

* `-o, --output TEXT`: output format   \[default: table]
* `--help`: Show this message and exit.

### `meshagent secret grant-proxy`

Grant a service account proxy access to one of your secrets.

**Usage**:

```console theme={null}
$ meshagent secret grant-proxy [OPTIONS] SECRET_ID
```

**Arguments**:

* `SECRET_ID`: secret id  \[required]

**Options**:

* `--project-id TEXT`: A MeshAgent project id. If empty, the activated project will be used.  \[default: (dynamic)]
* `--subject TEXT`: service account email, id, key, or name  \[required]
* `--help`: Show this message and exit.

### `meshagent secret revoke-proxy`

Revoke a service account proxy access grant from one of your secrets.

**Usage**:

```console theme={null}
$ meshagent secret revoke-proxy [OPTIONS] SECRET_ID
```

**Arguments**:

* `SECRET_ID`: secret id  \[required]

**Options**:

* `--project-id TEXT`: A MeshAgent project id. If empty, the activated project will be used.  \[default: (dynamic)]
* `--subject TEXT`: service account email, id, key, or name  \[required]
* `--help`: Show this message and exit.

### `meshagent secret pull-secrets`

List pull secrets for a service account.

**Usage**:

```console theme={null}
$ meshagent secret pull-secrets [OPTIONS]
```

**Options**:

* `--project-id TEXT`: A MeshAgent project id. If empty, the activated project will be used.  \[default: (dynamic)]
* `--subject TEXT`: service account email, id, key, or name  \[required]
* `-o, --output TEXT`: output format   \[default: table]
* `--help`: Show this message and exit.

### `meshagent secret add-pull-secret`

Add a pull secret to a service account.

**Usage**:

```console theme={null}
$ meshagent secret add-pull-secret [OPTIONS] SECRET_ID
```

**Arguments**:

* `SECRET_ID`: secret id  \[required]

**Options**:

* `--project-id TEXT`: A MeshAgent project id. If empty, the activated project will be used.  \[default: (dynamic)]
* `--subject TEXT`: service account email, id, key, or name  \[required]
* `--help`: Show this message and exit.

### `meshagent secret remove-pull-secret`

Remove a pull secret from a service account.

**Usage**:

```console theme={null}
$ meshagent secret remove-pull-secret [OPTIONS] SECRET_ID
```

**Arguments**:

* `SECRET_ID`: secret id  \[required]

**Options**:

* `--project-id TEXT`: A MeshAgent project id. If empty, the activated project will be used.  \[default: (dynamic)]
* `--subject TEXT`: service account email, id, key, or name  \[required]
* `--help`: Show this message and exit.

## `meshagent iam`

Manage IAM policies for project resources

**Usage**:

```console theme={null}
$ meshagent iam [OPTIONS] COMMAND [ARGS]...
```

**Options**:

* `--install-completion`: Install completion for the current shell.
* `--show-completion`: Show completion for the current shell, to copy it or customize the installation.
* `--help`: Show this message and exit.

**Commands**:

* `policy`: List a resource IAM policy.
* `grant`: Grant roles on a resource.
* `revoke`: Revoke all direct roles for a subject.

### `meshagent iam policy`

List a resource IAM policy.

**Usage**:

```console theme={null}
$ meshagent iam policy [OPTIONS]
```

**Options**:

* `--project-id TEXT`: A MeshAgent project id. If empty, the activated project will be used.  \[default: (dynamic)]
* `--resource-type TEXT`: resource type  \[required]
* `--resource-id TEXT`: resource id  \[required]
* `--page-size INTEGER`: OpenFGA read page size  \[default: 50]
* `-o, --output TEXT`: output format   \[default: table]
* `--help`: Show this message and exit.

### `meshagent iam grant`

Grant roles on a resource.

**Usage**:

```console theme={null}
$ meshagent iam grant [OPTIONS]
```

**Options**:

* `--project-id TEXT`: A MeshAgent project id. If empty, the activated project will be used.  \[default: (dynamic)]
* `--resource-type TEXT`: resource type  \[required]
* `--resource-id TEXT`: resource id  \[required]
* `--subject-type TEXT`: subject type  \[required]
* `--subject-id TEXT`: subject id  \[required]
* `--role TEXT`: role to grant; repeat or comma-separate  \[required]
* `--subject-object-type TEXT`: userset object type
* `--subject-relation TEXT`: userset relation
* `--invite-redirect-url TEXT`: invite redirect URL for users
* `--help`: Show this message and exit.

### `meshagent iam revoke`

Revoke all direct roles for a subject.

**Usage**:

```console theme={null}
$ meshagent iam revoke [OPTIONS]
```

**Options**:

* `--project-id TEXT`: A MeshAgent project id. If empty, the activated project will be used.  \[default: (dynamic)]
* `--resource-type TEXT`: resource type  \[required]
* `--resource-id TEXT`: resource id  \[required]
* `--subject-type TEXT`: subject type  \[required]
* `--subject-id TEXT`: subject id  \[required]
* `--subject-object-type TEXT`: userset object type
* `--subject-relation TEXT`: userset relation
* `--help`: Show this message and exit.

## `meshagent config`

Read MeshAgent deployment configuration

**Usage**:

```console theme={null}
$ meshagent config [OPTIONS] COMMAND [ARGS]...
```

**Options**:

* `--install-completion`: Install completion for the current shell.
* `--show-completion`: Show completion for the current shell, to copy it or customize the installation.
* `--help`: Show this message and exit.

**Commands**:

* `get`: Print one deployment config value.

### `meshagent config get`

Print one deployment config value.

**Usage**:

```console theme={null}
$ meshagent config get [OPTIONS] PATH
```

**Arguments**:

* `PATH`: Config path to read, for example domains.pages  \[required]

**Options**:

* `--help`: Show this message and exit.

## `meshagent doctor`

Inspect the current directory for MeshAgent deployment gaps.

**Usage**:

```console theme={null}
$ meshagent doctor [OPTIONS] [PATH]
```

**Arguments**:

* `[PATH]`

**Options**:

* `--fix`: Create obvious missing project files such as Dockerfile or pyproject.toml.
* `--help`: Show this message and exit.

## `meshagent create`

Create a minimal deployable project.

**Usage**:

```console theme={null}
$ meshagent create [OPTIONS] [PATH]
```

**Arguments**:

* `[PATH]`

**Options**:

* `-l, --language TEXT`: Template language for non-interactive use. Supported: python, javascript, typescript, react, dotnet, dart/flutter.
* `--focus TEXT`: Project focus for non-interactive use. Use stable IDs: webserver (Web App), backend-agent (Agent Toolkit), chatbot (OpenAI Chatbot), chatbot-anthropic (Anthropic Chatbot), chatbot-ui (Agent UI), room-chat (Room Chat), room-workspace (Room Workspace), or contact-form (Contact Form), task-queue-dashboard (Task Queue Dashboard), telegram-channel (Telegram Channel), slack-channel (Slack Channel), twilio-channel (Twilio Channel), or whatsapp-channel (WhatsApp Channel).
* `--interactive / --no-interactive`: Run or bypass the interactive template picker. Defaults to interactive when attached to a TTY and language or focus is missing.
* `--help`: Show this message and exit.

## `meshagent session`

Inspect recent sessions and events

**Usage**:

```console theme={null}
$ meshagent session [OPTIONS] COMMAND [ARGS]...
```

**Options**:

* `--install-completion`: Install completion for the current shell.
* `--show-completion`: Show completion for the current shell, to copy it or customize the installation.
* `--help`: Show this message and exit.

**Commands**:

* `list`: List recent sessions
* `get`: Get events for a session
* `kill`: Forcefully kill a running session instance
* `logs`: List logs for a session
* `metrics`: List metrics for a session
* `traces`: List trace spans for a session as a tree

### `meshagent session list`

List recent sessions

**Usage**:

```console theme={null}
$ meshagent session list [OPTIONS]
```

**Options**:

* `--project-id TEXT`: A MeshAgent project id. If empty, the activated project will be used.  \[default: (dynamic)]
* `--limit INTEGER RANGE`: Maximum sessions to return (server max 1000)  \[default: 25; x>=1]
* `--room TEXT`: Only include sessions for the given room name
* `-o, --output TEXT`: output format   \[default: table]
* `--help`: Show this message and exit.

### `meshagent session get`

Get events for a session

**Usage**:

```console theme={null}
$ meshagent session get [OPTIONS] SESSION_ID
```

**Arguments**:

* `SESSION_ID`: \[required]

**Options**:

* `--project-id TEXT`: A MeshAgent project id. If empty, the activated project will be used.  \[default: (dynamic)]
* `--help`: Show this message and exit.

### `meshagent session kill`

Forcefully kill a running session instance

**Usage**:

```console theme={null}
$ meshagent session kill [OPTIONS] SESSION_ID
```

**Arguments**:

* `SESSION_ID`: Session id to kill  \[required]

**Options**:

* `--project-id TEXT`: A MeshAgent project id. If empty, the activated project will be used.  \[default: (dynamic)]
* `-y, --yes`: Skip the confirmation prompt
* `--help`: Show this message and exit.

### `meshagent session logs`

List logs for a session

**Usage**:

```console theme={null}
$ meshagent session logs [OPTIONS] [SESSION_ARG]
```

**Arguments**:

* `[SESSION_ARG]`: Session id to inspect

**Options**:

* `--project-id TEXT`: A MeshAgent project id. If empty, the activated project will be used.  \[default: (dynamic)]
* `--session-id TEXT`: Session id to inspect
* `--room TEXT`: Use the most recent session for this room
* `-o, --output TEXT`: output format   \[default: table]
* `--attrs`: Include log and resource attributes
* `--help`: Show this message and exit.

### `meshagent session metrics`

List metrics for a session

**Usage**:

```console theme={null}
$ meshagent session metrics [OPTIONS] [SESSION_ARG]
```

**Arguments**:

* `[SESSION_ARG]`: Session id to inspect

**Options**:

* `--project-id TEXT`: A MeshAgent project id. If empty, the activated project will be used.  \[default: (dynamic)]
* `--session-id TEXT`: Session id to inspect
* `--room TEXT`: Use the most recent session for this room
* `-o, --output TEXT`: output format   \[default: table]
* `--attrs`: Include metric attributes
* `--buckets`: Include histogram bucket counts
* `--help`: Show this message and exit.

### `meshagent session traces`

List trace spans for a session as a tree

**Usage**:

```console theme={null}
$ meshagent session traces [OPTIONS] [SESSION_ARG]
```

**Arguments**:

* `[SESSION_ARG]`: Session id to inspect

**Options**:

* `--project-id TEXT`: A MeshAgent project id. If empty, the activated project will be used.  \[default: (dynamic)]
* `--session-id TEXT`: Session id to inspect
* `--room TEXT`: Use the most recent session for this room
* `--trace-id TEXT`: Only include spans from this trace
* `--name TEXT`: Only include spans whose name contains this text
* `--min-duration TEXT`: Only include spans at or above this duration, e.g. 500ms or 2s
* `--attrs`: Include span attributes
* `-o, --output TEXT`: output format   \[default: table]
* `--help`: Show this message and exit.

## `meshagent ask`

Send a one-shot LLM prompt.

**Usage**:

```console theme={null}
$ meshagent ask [OPTIONS]
```

**Options**:

* `--project-id TEXT`: A MeshAgent project id. If empty, the activated project will be used.  \[default: (dynamic)]
* `-m, --message TEXT`: Prompt to send to the LLM
* `--format TEXT`: Output format for non-interactive responses.  \[default: markdown]
* `--model TEXT`: Name of the LLM model to use  \[default: gpt-5.6-sol]
* `--preamble-rule / --no-preamble-rule`: Include the default rule asking the model to send concise pre-tool preambles.  \[default: preamble-rule]
* `--install-completion`: Install completion for the current shell.
* `--show-completion`: Show completion for the current shell, to copy it or customize the installation.
* `--help`: Show this message and exit.

## `meshagent launch`

Launch supported CLI apps through MeshAgent.

**Usage**:

```console theme={null}
$ meshagent launch [OPTIONS] COMMAND [ARGS]...
```

**Options**:

* `--help`: Show this message and exit.

**Commands**:

* `codex`: Launch Codex through MeshAgent for the...
* `claude`: Launch Claude through MeshAgent for the...

### `meshagent launch codex`

Launch Codex through MeshAgent for the active project.

**Usage**:

```console theme={null}
$ meshagent launch codex [OPTIONS]
```

**Options**:

* `--project-id TEXT`: A MeshAgent project id. If empty, the activated project will be used.
* `--api-url TEXT`: Override the MeshAgent API URL for this Codex launch.
* `--help`: Show this message and exit.

### `meshagent launch claude`

Launch Claude through MeshAgent for the active project.

**Usage**:

```console theme={null}
$ meshagent launch claude [OPTIONS]
```

**Options**:

* `--project-id TEXT`: A MeshAgent project id. If empty, the activated project will be used.
* `--api-url TEXT`: Override the MeshAgent API URL for this Claude launch.
* `--help`: Show this message and exit.

## `meshagent token`

Generate a participant token (JWT) from a spec

**Usage**:

```console theme={null}
$ meshagent token [OPTIONS]
```

**Options**:

* `--project-id TEXT`: A MeshAgent project id. If empty, the activated project will be used.  \[default: (dynamic)]
* `-o, --output TEXT`: File path to a file
* `-i, --input TEXT`: File path to a token spec  \[required]
* `--key TEXT`: an api key to sign the token with
* `--install-completion`: Install completion for the current shell.
* `--show-completion`: Show completion for the current shell, to copy it or customize the installation.
* `--help`: Show this message and exit.

## `meshagent service`

Manage services for your project

**Usage**:

```console theme={null}
$ meshagent service [OPTIONS] COMMAND [ARGS]...
```

**Options**:

* `--install-completion`: Install completion for the current shell.
* `--show-completion`: Show completion for the current shell, to copy it or customize the installation.
* `--help`: Show this message and exit.

**Commands**:

* `spec`: Render a service or template YAML spec...
* `create`: Create a service attached to the project.
* `update`: Create a service attached to the project.
* `validate`: Validate a service spec from a YAML file.
* `create-template`: Create a service from a ServiceTemplate spec.
* `update-template`: Update a service using a ServiceTemplate...
* `validate-template`: Validate a service template from a YAML file.
* `render-template`: Render a service template with variables...
* `run`: Run a local command and register it as a...
* `get`: Get a service for the project.
* `list`: List all services for the project.
* `delete`: Delete a service.

### `meshagent service spec`

Render a service or template YAML spec without creating a service.

**Usage**:

```console theme={null}
$ meshagent service spec [OPTIONS]
```

**Options**:

* `-f, --file TEXT`: File path to a service definition. Beginner fallback: point this at a meshagent.yaml when the app has no Dockerfile. For a public HTTP route, set container.private: false and metadata.annotations.meshagent.service.id in the file.
* `--url TEXT`: URL to a service definition
* `--mcp TEXT`: MCP server URL. Auto-discovers metadata and generates a service spec without creating it.
* `--format [service|template]`: Output format. 'service' emits Service YAML. 'template' emits ServiceTemplate YAML.  \[default: service]
* `--service-id TEXT`: Optional override for meshagent.service.id in metadata annotations.
* `--help`: Show this message and exit.

### `meshagent service create`

Create a service attached to the project.

Beginner fallback when an app does not have a Dockerfile: write a minimal
meshagent.yaml, set the HTTP port to published/public, set
container.private: false for a public route, and include
metadata.annotations.meshagent.service.id so a route can target the created
service.

**Usage**:

```console theme={null}
$ meshagent service create [OPTIONS]
```

**Options**:

* `--project-id TEXT`: A MeshAgent project id. If empty, the activated project will be used.  \[default: (dynamic)]
* `-f, --file TEXT`: File path to a service definition
* `--url TEXT`: URL to a service definition
* `--mcp TEXT`: MCP server URL. Auto-discovers OAuth metadata and creates an external MCP service configured with discovered OAuth endpoints.
* `--room TEXT`: Room name
* `--global`: Create the service globally instead of in a room
* `--service-id TEXT`: Optional override for meshagent.service.id in metadata annotations.
* `--force`: Ignore an existing service with the same meshagent.service.id.
* `--replace`: Replace an existing service with the same meshagent.service.id.
* `--help`: Show this message and exit.

### `meshagent service update`

Create a service attached to the project.

**Usage**:

```console theme={null}
$ meshagent service update [OPTIONS]
```

**Options**:

* `--project-id TEXT`: A MeshAgent project id. If empty, the activated project will be used.  \[default: (dynamic)]
* `--id TEXT`
* `-f, --file TEXT`: File path to a service definition
* `--url TEXT`: URL to a service definition
* `--mcp TEXT`: MCP server URL. Auto-discovers OAuth metadata and builds an external MCP service configured with discovered OAuth endpoints.
* `--create / --no-create`: create the service if it does not exist  \[default: no-create]
* `--room TEXT`: Room name
* `--global`: Update the global service instead of a room service
* `--service-id TEXT`: Optional override for meshagent.service.id in metadata annotations.
* `--force`: Ignore an existing service with the same meshagent.service.id.
* `--replace`: Replace an existing service with the same meshagent.service.id.
* `--help`: Show this message and exit.

### `meshagent service validate`

Validate a service spec from a YAML file.

**Usage**:

```console theme={null}
$ meshagent service validate [OPTIONS]
```

**Options**:

* `-f, --file TEXT`: File path to a service definition  \[required]
* `--help`: Show this message and exit.

### `meshagent service create-template`

Create a service from a ServiceTemplate spec.

**Usage**:

```console theme={null}
$ meshagent service create-template [OPTIONS]
```

**Options**:

* `--project-id TEXT`: A MeshAgent project id. If empty, the activated project will be used.  \[default: (dynamic)]
* `-f, --file TEXT`: File path to a service template
* `--url TEXT`: URL to a service template
* `--values-file TEXT`: File path to template values
* `-v, --value TEXT`: Template value override (key=value)
* `--room TEXT`: Room name
* `--global`: Create the service globally instead of in a room
* `--force`: Ignore an existing service with the same meshagent.service.id.
* `--replace`: Replace an existing service with the same meshagent.service.id.
* `--help`: Show this message and exit.

### `meshagent service update-template`

Update a service using a ServiceTemplate spec.

**Usage**:

```console theme={null}
$ meshagent service update-template [OPTIONS]
```

**Options**:

* `--project-id TEXT`: A MeshAgent project id. If empty, the activated project will be used.  \[default: (dynamic)]
* `--id TEXT`
* `-f, --file TEXT`: File path to a service template
* `--url TEXT`: URL to a service template
* `--values-file TEXT`: File path to template values
* `-v, --value TEXT`: Template value override (key=value)
* `--create / --no-create`: create the service if it does not exist  \[default: no-create]
* `--room TEXT`: Room name
* `--global`: Update the global service instead of a room service
* `--force`: Ignore an existing service with the same meshagent.service.id.
* `--replace`: Replace an existing service with the same meshagent.service.id.
* `--help`: Show this message and exit.

### `meshagent service validate-template`

Validate a service template from a YAML file.

**Usage**:

```console theme={null}
$ meshagent service validate-template [OPTIONS]
```

**Options**:

* `-f, --file TEXT`: File path to a service template
* `--url TEXT`: URL to a service template
* `--values-file TEXT`: File path to template values
* `-v, --value TEXT`: Template value override (key=value)
* `--help`: Show this message and exit.

### `meshagent service render-template`

Render a service template with variables and print the rendered YAML.

**Usage**:

```console theme={null}
$ meshagent service render-template [OPTIONS]
```

**Options**:

* `-f, --file TEXT`: File path to a service template
* `--url TEXT`: URL to a service template
* `--values-file TEXT`: File path to template values
* `-v, --value TEXT`: Template value override (key=value)
* `--help`: Show this message and exit.

### `meshagent service run`

Run a local command and register it as a temporary room service.

**Usage**:

```console theme={null}
$ meshagent service run [OPTIONS] COMMAND
```

**Arguments**:

* `COMMAND`: \[required]

**Options**:

* `--project-id TEXT`: A MeshAgent project id. If empty, the activated project will be used.  \[default: (dynamic)]
* `-p, --port INTEGER`: a port number to run the agent on (will set MESHAGENT\_PORT environment variable when launching the service)
* `--room TEXT`: Room name
* `--key TEXT`: an api key to sign the token with
* `--help`: Show this message and exit.

### `meshagent service get`

Get a service for the project.

**Usage**:

```console theme={null}
$ meshagent service get [OPTIONS] SERVICE_ID
```

**Arguments**:

* `SERVICE_ID`: Service UUID or metadata name to get  \[required]

**Options**:

* `--project-id TEXT`: A MeshAgent project id. If empty, the activated project will be used.  \[default: (dynamic)]
* `--room TEXT`: Room name
* `--help`: Show this message and exit.

### `meshagent service list`

List all services for the project.

**Usage**:

```console theme={null}
$ meshagent service list [OPTIONS]
```

**Options**:

* `--project-id TEXT`: A MeshAgent project id. If empty, the activated project will be used.  \[default: (dynamic)]
* `-o, --output TEXT`: output format   \[default: table]
* `--room TEXT`: Room name
* `--help`: Show this message and exit.

### `meshagent service delete`

Delete a service.

**Usage**:

```console theme={null}
$ meshagent service delete [OPTIONS] SERVICE_ID
```

**Arguments**:

* `SERVICE_ID`: ID of the service to delete  \[required]

**Options**:

* `--project-id TEXT`: A MeshAgent project id. If empty, the activated project will be used.  \[default: (dynamic)]
* `--room TEXT`: Room name
* `--help`: Show this message and exit.

## `meshagent mcp`

Bridge MCP servers into MeshAgent rooms

**Usage**:

```console theme={null}
$ meshagent mcp [OPTIONS] COMMAND [ARGS]...
```

**Options**:

* `--install-completion`: Install completion for the current shell.
* `--show-completion`: Show completion for the current shell, to copy it or customize the installation.
* `--help`: Show this message and exit.

**Commands**:

* `sse`: Connect an MCP server over SSE and...
* `http`: Connect an MCP server over streamable HTTP...
* `stdio`: Run an MCP server over stdio and register...
* `http-proxy`: Expose a stdio MCP server over streamable...
* `sse-proxy`: Expose a stdio MCP server over SSE
* `stdio-service`: Run a stdio MCP server as an HTTP service

### `meshagent mcp sse`

Connect an MCP server over SSE and register it as a toolkit

**Usage**:

```console theme={null}
$ meshagent mcp sse [OPTIONS]
```

**Options**:

* `--project-id TEXT`: A MeshAgent project id. If empty, the activated project will be used.  \[default: (dynamic)]
* `--room TEXT`: Room name  \[default: (dynamic)]
* `--name TEXT`: Participant name  \[default: cli]
* `--role TEXT`: \[default: tool]
* `--url TEXT`: SSE URL for the MCP server  \[required]
* `-H, --header TEXT`: Request header (KEY:VALUE). Repeat for multiple headers
* `--toolkit-name TEXT`: Toolkit name to register in the room (default: mcp)
* `--key TEXT`: an api key to sign the token with
* `--help`: Show this message and exit.

### `meshagent mcp http`

Connect an MCP server over streamable HTTP and register it as a toolkit

**Usage**:

```console theme={null}
$ meshagent mcp http [OPTIONS]
```

**Options**:

* `--project-id TEXT`: A MeshAgent project id. If empty, the activated project will be used.  \[default: (dynamic)]
* `--room TEXT`: Room name  \[default: (dynamic)]
* `--name TEXT`: Participant name  \[default: cli]
* `--role TEXT`: \[default: tool]
* `--url TEXT`: Streamable HTTP URL for the MCP server  \[required]
* `-H, --header TEXT`: Request header (KEY:VALUE). Repeat for multiple headers
* `--toolkit-name TEXT`: Toolkit name to register in the room (default: mcp)
* `--key TEXT`: an api key to sign the token with
* `--help`: Show this message and exit.

### `meshagent mcp stdio`

Run an MCP server over stdio and register it as a toolkit

**Usage**:

```console theme={null}
$ meshagent mcp stdio [OPTIONS]
```

**Options**:

* `--project-id TEXT`: A MeshAgent project id. If empty, the activated project will be used.  \[default: (dynamic)]
* `--room TEXT`: Room name  \[default: (dynamic)]
* `--name TEXT`: Participant name  \[default: cli]
* `--role TEXT`: \[default: tool]
* `--command TEXT`: Command to start an MCP server over stdio (quoted string)  \[required]
* `--toolkit-name TEXT`: Toolkit name to register in the room (default: mcp)
* `-e, --env TEXT`: KEY=VALUE
* `--key TEXT`: an api key to sign the token with
* `--help`: Show this message and exit.

### `meshagent mcp http-proxy`

Expose a stdio MCP server over streamable HTTP

**Usage**:

```console theme={null}
$ meshagent mcp http-proxy [OPTIONS]
```

**Options**:

* `--command TEXT`: Command to start the MCP server (stdio transport)  \[required]
* `--host TEXT`: Host to bind the proxy server on
* `--port INTEGER`: Port to bind the proxy server on
* `--path TEXT`: HTTP path to mount the proxy server at
* `--name TEXT`: Display name for the proxy server
* `-e, --env TEXT`: KEY=VALUE
* `--help`: Show this message and exit.

### `meshagent mcp sse-proxy`

Expose a stdio MCP server over SSE

**Usage**:

```console theme={null}
$ meshagent mcp sse-proxy [OPTIONS]
```

**Options**:

* `--command TEXT`: Command to start the MCP server (stdio transport)  \[required]
* `--host TEXT`: Host to bind the proxy server on
* `--port INTEGER`: Port to bind the proxy server on
* `--path TEXT`: SSE path to mount the proxy at
* `--name TEXT`: Display name for the proxy server
* `-e, --env TEXT`: KEY=VALUE
* `--help`: Show this message and exit.

### `meshagent mcp stdio-service`

Run a stdio MCP server as an HTTP service

**Usage**:

```console theme={null}
$ meshagent mcp stdio-service [OPTIONS]
```

**Options**:

* `--command TEXT`: Command to start an MCP server over stdio (quoted string)  \[required]
* `--host TEXT`: Host to bind the service on
* `--port INTEGER`: Port to bind the service on
* `--webhook-secret TEXT`: Optional webhook secret for authenticating requests
* `--path TEXT`: HTTP path to mount the service at
* `--toolkit-name TEXT`: Toolkit name to expose (default: mcp)
* `-e, --env TEXT`: KEY=VALUE
* `--help`: Show this message and exit.

## `meshagent rooms`

Create, list, and manage rooms in a project

**Usage**:

```console theme={null}
$ meshagent rooms [OPTIONS] COMMAND [ARGS]...
```

**Options**:

* `--install-completion`: Install completion for the current shell.
* `--show-completion`: Show completion for the current shell, to copy it or customize the installation.
* `--help`: Show this message and exit.

**Commands**:

* `create`: Create a room in the project.
* `delete`: Delete a room by ID (or by name if --name...
* `update`: Update a room's name (ID is preferred;...
* `list`: List rooms in the project.
* `get`: Get a single room by name or ID.

### `meshagent rooms create`

Create a room in the project.

**Usage**:

```console theme={null}
$ meshagent rooms create [OPTIONS] [NAME]
```

**Arguments**:

* `[NAME]`: Room name

**Options**:

* `--project-id TEXT`: A MeshAgent project id. If empty, the activated project will be used.  \[default: (dynamic)]
* `--owner / --no-owner`: Add the active user as the room owner.  \[default: owner]
* `--if-not-exists / --no-if-not-exists`: Do not error if the room already exists  \[default: no-if-not-exists]
* `--metadata TEXT`: Optional JSON object for room metadata
* `--annotations TEXT`: Optional JSON object for room annotations, e.g. \{"meshagent.storage.class":"ephemeral"}
* `--help`: Show this message and exit.

### `meshagent rooms delete`

Delete a room by ID (or by name if --name is supplied).

**Usage**:

```console theme={null}
$ meshagent rooms delete [OPTIONS]
```

**Options**:

* `--project-id TEXT`: A MeshAgent project id. If empty, the activated project will be used.  \[default: (dynamic)]
* `--id TEXT`: Room ID (preferred)
* `--name TEXT`
* `--help`: Show this message and exit.

### `meshagent rooms update`

Update a room's name (ID is preferred; name will be resolved to ID if needed).

**Usage**:

```console theme={null}
$ meshagent rooms update [OPTIONS]
```

**Options**:

* `--project-id TEXT`: A MeshAgent project id. If empty, the activated project will be used.  \[default: (dynamic)]
* `--id TEXT`: Room ID (preferred)
* `--name TEXT`
* `--new-name TEXT`: New room name  \[required]
* `--annotations TEXT`: Optional JSON object for room annotations, e.g. \{"meshagent.storage.class":"ephemeral"}
* `--help`: Show this message and exit.

### `meshagent rooms list`

List rooms in the project.

**Usage**:

```console theme={null}
$ meshagent rooms list [OPTIONS]
```

**Options**:

* `--project-id TEXT`: A MeshAgent project id. If empty, the activated project will be used.  \[default: (dynamic)]
* `-o, --output TEXT`: output format   \[default: table]
* `--count INTEGER RANGE`: Max rooms to return  \[default: 100; 1\<=x\<=500]
* `--offset INTEGER RANGE`: Offset for pagination  \[default: 0; x>=0]
* `--order-by TEXT`: Order rooms by name; only "room\_name" is supported  \[default: room\_name]
* `--filter TEXT`: Lowercase contains filter for room names
* `--all`: Show all rooms in the project instead of only rooms you can access
* `--help`: Show this message and exit.

### `meshagent rooms get`

Get a single room by name or ID.

**Usage**:

```console theme={null}
$ meshagent rooms get [OPTIONS] [ROOM]
```

**Arguments**:

* `[ROOM]`: Room name or ID

**Options**:

* `--project-id TEXT`: A MeshAgent project id. If empty, the activated project will be used.  \[default: (dynamic)]
* `--help`: Show this message and exit.

## `meshagent agent`

Create, list, and manage managed agents in a project

**Usage**:

```console theme={null}
$ meshagent agent [OPTIONS] COMMAND [ARGS]...
```

**Options**:

* `--install-completion`: Install completion for the current shell.
* `--show-completion`: Show completion for the current shell, to copy it or customize the installation.
* `--help`: Show this message and exit.

**Commands**:

* `create`: Create a managed agent in the project.
* `delete`: Delete a managed agent from the project.
* `update`: Update a managed agent configuration.
* `list`: List managed agents in the project.
* `get`: Get a managed agent configuration.
* `use`: Use a managed agent over its websocket...

### `meshagent agent create`

Create a managed agent in the project.

**Usage**:

```console theme={null}
$ meshagent agent create [OPTIONS]
```

**Options**:

* `--project-id TEXT`: A MeshAgent project id. If empty, the activated project will be used.  \[default: (dynamic)]
* `-c, --configuration TEXT`: ManagedAgentSpec JSON  \[required]
* `--thread-isolation [global|participant]`: Thread isolation mode for the managed agent
* `--if-not-exists / --no-if-not-exists`: Do not error if the agent already exists  \[default: no-if-not-exists]
* `--help`: Show this message and exit.

### `meshagent agent delete`

Delete a managed agent from the project.

**Usage**:

```console theme={null}
$ meshagent agent delete [OPTIONS]
```

**Options**:

* `--project-id TEXT`: A MeshAgent project id. If empty, the activated project will be used.  \[default: (dynamic)]
* `--id TEXT`: Agent ID (preferred)
* `--name TEXT`: Agent name
* `--help`: Show this message and exit.

### `meshagent agent update`

Update a managed agent configuration.

**Usage**:

```console theme={null}
$ meshagent agent update [OPTIONS]
```

**Options**:

* `--project-id TEXT`: A MeshAgent project id. If empty, the activated project will be used.  \[default: (dynamic)]
* `--id TEXT`: Agent ID (preferred)
* `--name TEXT`: Current agent name
* `-c, --configuration TEXT`: ManagedAgentSpec JSON  \[required]
* `--thread-isolation [global|participant]`: Thread isolation mode for the managed agent
* `--help`: Show this message and exit.

### `meshagent agent list`

List managed agents in the project.

**Usage**:

```console theme={null}
$ meshagent agent list [OPTIONS]
```

**Options**:

* `--project-id TEXT`: A MeshAgent project id. If empty, the activated project will be used.  \[default: (dynamic)]
* `-o, --output TEXT`: output format   \[default: table]
* `--count INTEGER RANGE`: Max agents to return  \[default: 100; 1\<=x\<=500]
* `--offset INTEGER RANGE`: Offset for pagination  \[default: 0; x>=0]
* `--order-by TEXT`: Order agents by name; only "agent\_name" is supported  \[default: agent\_name]
* `--filter TEXT`: Lowercase contains filter for agent names
* `--help`: Show this message and exit.

### `meshagent agent get`

Get a managed agent configuration.

**Usage**:

```console theme={null}
$ meshagent agent get [OPTIONS]
```

**Options**:

* `--project-id TEXT`: A MeshAgent project id. If empty, the activated project will be used.  \[default: (dynamic)]
* `--name TEXT`: Agent name  \[required]
* `--help`: Show this message and exit.

### `meshagent agent use`

Use a managed agent over its websocket connection.

**Usage**:

```console theme={null}
$ meshagent agent use [OPTIONS] [AGENT]
```

**Arguments**:

* `[AGENT]`: Agent name

**Options**:

* `--project-id TEXT`: A MeshAgent project id. If empty, the activated project will be used.  \[default: (dynamic)]
* `--name TEXT`: Agent name
* `--thread-id TEXT`: Thread id to open
* `--load`: Replay persisted thread messages when opening
* `--since-turn TEXT`: Replay persisted thread messages starting with this turn id
* `-m, --message TEXT`: Send one message without opening the TUI
* `-o, --output [text|json]`: Output format for one-shot messages  \[default: text]
* `--help`: Show this message and exit.

## `meshagent mailbox`

Manage mailboxes for your project

**Usage**:

```console theme={null}
$ meshagent mailbox [OPTIONS] COMMAND [ARGS]...
```

**Options**:

* `--install-completion`: Install completion for the current shell.
* `--show-completion`: Show completion for the current shell, to copy it or customize the installation.
* `--help`: Show this message and exit.

**Commands**:

* `create`: Create a mailbox attached to the project.
* `update`: Update a mailbox routing configuration.
* `get`: Get mailbox details.
* `list`: List mailboxes for the project.
* `delete`: Delete a mailbox.

### `meshagent mailbox create`

Create a mailbox attached to the project.

**Usage**:

```console theme={null}
$ meshagent mailbox create [OPTIONS]
```

**Options**:

* `--project-id TEXT`: A MeshAgent project id. If empty, the activated project will be used.  \[default: (dynamic)]
* `-a, --address TEXT`: Mailbox email address (unique per project)  \[required]
* `--room TEXT`: Room name
* `-q, --queue TEXT`: Queue name to deliver inbound messages to  \[required]
* `--public`: Queue name to deliver inbound messages to
* `-n, --annotations TEXT`: annotations in json format \{"name":"value"}
* `--help`: Show this message and exit.

### `meshagent mailbox update`

Update a mailbox routing configuration.

**Usage**:

```console theme={null}
$ meshagent mailbox update [OPTIONS] ADDRESS
```

**Arguments**:

* `ADDRESS`: Mailbox email address to update  \[required]

**Options**:

* `--project-id TEXT`: A MeshAgent project id. If empty, the activated project will be used.  \[default: (dynamic)]
* `-r, --room TEXT`: Room name to route inbound mail into
* `-q, --queue TEXT`: Queue name to deliver inbound messages to
* `--public`: Queue name to deliver inbound messages to
* `-n, --annotations TEXT`: annotations in json format \{"name":"value"}
* `--help`: Show this message and exit.

### `meshagent mailbox get`

Get mailbox details.

**Usage**:

```console theme={null}
$ meshagent mailbox get [OPTIONS] ADDRESS
```

**Arguments**:

* `ADDRESS`: Mailbox address to get  \[required]

**Options**:

* `--project-id TEXT`: A MeshAgent project id. If empty, the activated project will be used.  \[default: (dynamic)]
* `--help`: Show this message and exit.

### `meshagent mailbox list`

List mailboxes for the project.

**Usage**:

```console theme={null}
$ meshagent mailbox list [OPTIONS]
```

**Options**:

* `--project-id TEXT`: A MeshAgent project id. If empty, the activated project will be used.  \[default: (dynamic)]
* `--room TEXT`: Room name
* `--filter TEXT`: Lowercase contains filter
* `--count INTEGER RANGE`: Maximum number of mailboxes to return  \[default: 100; x>=1]
* `--offset INTEGER RANGE`: Row offset for pagination  \[default: 0; x>=0]
* `-o, --output TEXT`: output format   \[default: table]
* `--help`: Show this message and exit.

### `meshagent mailbox delete`

Delete a mailbox.

**Usage**:

```console theme={null}
$ meshagent mailbox delete [OPTIONS] ADDRESS
```

**Arguments**:

* `ADDRESS`: Mailbox address to delete  \[required]

**Options**:

* `--project-id TEXT`: A MeshAgent project id. If empty, the activated project will be used.  \[default: (dynamic)]
* `--help`: Show this message and exit.

## `meshagent feed`

Manage feeds for your project

**Usage**:

```console theme={null}
$ meshagent feed [OPTIONS] COMMAND [ARGS]...
```

**Options**:

* `--install-completion`: Install completion for the current shell.
* `--show-completion`: Show completion for the current shell, to copy it or customize the installation.
* `--help`: Show this message and exit.

**Commands**:

* `create`: Create a feed.
* `update`: Update a feed.
* `get`: Get feed details.
* `list`: List feeds for the project.
* `delete`: Delete a feed.
* `send`: Publish a single JSON message to a feed.
* `send-batch`: Publish a JSONL file to a feed.

### `meshagent feed create`

Create a feed.

**Usage**:

```console theme={null}
$ meshagent feed create [OPTIONS]
```

**Options**:

* `--project-id TEXT`: A MeshAgent project id. If empty, the activated project will be used.  \[default: (dynamic)]
* `-n, --name TEXT`: Feed name  \[required]
* `-d, --description TEXT`: Feed description
* `--visibility TEXT`: Feed visibility   \[default: private]
* `--paused`: Create the feed in a paused state
* `--annotations TEXT`: annotations in json format \{"name":"value"}
* `--message-schema TEXT`: JSON schema as inline JSON
* `--message-schema-file PATH`: Path to a JSON schema file
* `--help`: Show this message and exit.

### `meshagent feed update`

Update a feed.

**Usage**:

```console theme={null}
$ meshagent feed update [OPTIONS] FEED_ID
```

**Arguments**:

* `FEED_ID`: Feed id to update  \[required]

**Options**:

* `--project-id TEXT`: A MeshAgent project id. If empty, the activated project will be used.  \[default: (dynamic)]
* `-n, --name TEXT`: Feed name
* `-d, --description TEXT`: Feed description
* `--paused`: Pause the feed
* `--resume`: Resume a paused feed
* `--annotations TEXT`: annotations in json format \{"name":"value"}
* `--message-schema TEXT`: JSON schema as inline JSON
* `--message-schema-file PATH`: Path to a JSON schema file
* `--clear-message-schema`: Remove the existing message schema
* `--help`: Show this message and exit.

### `meshagent feed get`

Get feed details.

**Usage**:

```console theme={null}
$ meshagent feed get [OPTIONS] FEED_ID
```

**Arguments**:

* `FEED_ID`: Feed id to get  \[required]

**Options**:

* `--project-id TEXT`: A MeshAgent project id. If empty, the activated project will be used.  \[default: (dynamic)]
* `--help`: Show this message and exit.

### `meshagent feed list`

List feeds for the project.

**Usage**:

```console theme={null}
$ meshagent feed list [OPTIONS]
```

**Options**:

* `--project-id TEXT`: A MeshAgent project id. If empty, the activated project will be used.  \[default: (dynamic)]
* `--room TEXT`: Room name to filter feeds by
* `--filter TEXT`: Lowercase contains filter
* `--count INTEGER`: Maximum number of feeds to return  \[default: 100]
* `--offset INTEGER`: Row offset for pagination  \[default: 0]
* `-o, --output TEXT`: output format   \[default: table]
* `--help`: Show this message and exit.

### `meshagent feed delete`

Delete a feed.

**Usage**:

```console theme={null}
$ meshagent feed delete [OPTIONS] FEED_ID
```

**Arguments**:

* `FEED_ID`: Feed id to delete  \[required]

**Options**:

* `--project-id TEXT`: A MeshAgent project id. If empty, the activated project will be used.  \[default: (dynamic)]
* `--help`: Show this message and exit.

### `meshagent feed send`

Publish a single JSON message to a feed.

**Usage**:

```console theme={null}
$ meshagent feed send [OPTIONS] FEED_ID
```

**Arguments**:

* `FEED_ID`: Feed id to publish to  \[required]

**Options**:

* `--project-id TEXT`: A MeshAgent project id. If empty, the activated project will be used.  \[default: (dynamic)]
* `--message TEXT`: Inline JSON message
* `--message-file PATH`: Path to a JSON file
* `--help`: Show this message and exit.

### `meshagent feed send-batch`

Publish a JSONL file to a feed.

**Usage**:

```console theme={null}
$ meshagent feed send-batch [OPTIONS] FEED_ID
```

**Arguments**:

* `FEED_ID`: Feed id to publish to  \[required]

**Options**:

* `--project-id TEXT`: A MeshAgent project id. If empty, the activated project will be used.  \[default: (dynamic)]
* `--jsonl-file PATH`: Path to a JSONL file  \[required]
* `--help`: Show this message and exit.

## `meshagent subscription`

Manage feed subscriptions for your project

**Usage**:

```console theme={null}
$ meshagent subscription [OPTIONS] COMMAND [ARGS]...
```

**Options**:

* `--install-completion`: Install completion for the current shell.
* `--show-completion`: Show completion for the current shell, to copy it or customize the installation.
* `--help`: Show this message and exit.

**Commands**:

* `create`: Create a feed subscription.
* `update`: Update a feed subscription.
* `get`: Get feed subscription details.
* `list`: List subscriptions for a feed.
* `delete`: Delete a feed subscription.

### `meshagent subscription create`

Create a feed subscription.

**Usage**:

```console theme={null}
$ meshagent subscription create [OPTIONS]
```

**Options**:

* `--project-id TEXT`: A MeshAgent project id. If empty, the activated project will be used.  \[default: (dynamic)]
* `--feed-id TEXT`: Feed id  \[required]
* `--room TEXT`: Room name  \[required]
* `--path TEXT`: Storage path prefix  \[required]
* `--filename-datetime-format TEXT`: GCP Cloud Storage filename datetime format. Use slashes to bucket files, for example YYYY/MM/DD/hh\_mm\_ssZ.
* `--annotations TEXT`: annotations in json format \{"name":"value"}
* `--help`: Show this message and exit.

### `meshagent subscription update`

Update a feed subscription.

**Usage**:

```console theme={null}
$ meshagent subscription update [OPTIONS] SUBSCRIPTION_ID
```

**Arguments**:

* `SUBSCRIPTION_ID`: Subscription id to update  \[required]

**Options**:

* `--project-id TEXT`: A MeshAgent project id. If empty, the activated project will be used.  \[default: (dynamic)]
* `--feed-id TEXT`: Feed id  \[required]
* `--filename-datetime-format TEXT`: GCP Cloud Storage filename datetime format. Pass an empty string to restore the default.
* `--annotations TEXT`: annotations in json format \{"name":"value"}
* `--help`: Show this message and exit.

### `meshagent subscription get`

Get feed subscription details.

**Usage**:

```console theme={null}
$ meshagent subscription get [OPTIONS] SUBSCRIPTION_ID
```

**Arguments**:

* `SUBSCRIPTION_ID`: Subscription id to get  \[required]

**Options**:

* `--project-id TEXT`: A MeshAgent project id. If empty, the activated project will be used.  \[default: (dynamic)]
* `--feed-id TEXT`: Feed id  \[required]
* `--help`: Show this message and exit.

### `meshagent subscription list`

List subscriptions for a feed.

**Usage**:

```console theme={null}
$ meshagent subscription list [OPTIONS]
```

**Options**:

* `--project-id TEXT`: A MeshAgent project id. If empty, the activated project will be used.  \[default: (dynamic)]
* `--feed-id TEXT`: Feed id  \[required]
* `-o, --output TEXT`: output format   \[default: table]
* `--help`: Show this message and exit.

### `meshagent subscription delete`

Delete a feed subscription.

**Usage**:

```console theme={null}
$ meshagent subscription delete [OPTIONS] SUBSCRIPTION_ID
```

**Arguments**:

* `SUBSCRIPTION_ID`: Subscription id to delete  \[required]

**Options**:

* `--project-id TEXT`: A MeshAgent project id. If empty, the activated project will be used.  \[default: (dynamic)]
* `--feed-id TEXT`: Feed id  \[required]
* `--help`: Show this message and exit.

## `meshagent route`

Manage routes for your project

**Usage**:

```console theme={null}
$ meshagent route [OPTIONS] COMMAND [ARGS]...
```

**Options**:

* `--install-completion`: Install completion for the current shell.
* `--show-completion`: Show completion for the current shell, to copy it or customize the installation.
* `--help`: Show this message and exit.

**Commands**:

* `create`: Create a route attached to the project.
* `update`: Update a route configuration.
* `get`: Get route details.
* `list`: List routes for the project.
* `delete`: Delete a route.

### `meshagent route create`

Create a route attached to the project.

Use a short, DNS-safe domain name that matches the suffix accepted by your
environment. When routing to a room service, include the
meshagent.service.id annotation so the route targets the created service.

**Usage**:

```console theme={null}
$ meshagent route create [OPTIONS]
```

**Options**:

* `--project-id TEXT`: A MeshAgent project id. If empty, the activated project will be used.  \[default: (dynamic)]
* `-d, --domain TEXT`: Domain name to route (unique per project). Keep it short and DNS-safe; long room-name-derived domains may be rejected.
* `-f, --file TEXT`: Path to a RouteSpec YAML or JSON file
* `--room TEXT`: Room name
* `-p, --port TEXT`: Published port to route to
* `-n, --annotations TEXT`: annotations in json format \{"name":"value"}. When routing to a room service, include meshagent.service.id.
* `--help`: Show this message and exit.

### `meshagent route update`

Update a route configuration.

**Usage**:

```console theme={null}
$ meshagent route update [OPTIONS] DOMAIN
```

**Arguments**:

* `DOMAIN`: Domain name to update  \[required]

**Options**:

* `--project-id TEXT`: A MeshAgent project id. If empty, the activated project will be used.  \[default: (dynamic)]
* `-f, --file TEXT`: Path to a RouteSpec YAML or JSON file
* `-r, --room TEXT`: Room name to route traffic into
* `-p, --port TEXT`: Published port to route to
* `-n, --annotations TEXT`: annotations in json format \{"name":"value"}
* `--help`: Show this message and exit.

### `meshagent route get`

Get route details.

**Usage**:

```console theme={null}
$ meshagent route get [OPTIONS] DOMAIN
```

**Arguments**:

* `DOMAIN`: Domain name to get  \[required]

**Options**:

* `--project-id TEXT`: A MeshAgent project id. If empty, the activated project will be used.  \[default: (dynamic)]
* `--help`: Show this message and exit.

### `meshagent route list`

List routes for the project.

**Usage**:

```console theme={null}
$ meshagent route list [OPTIONS]
```

**Options**:

* `--project-id TEXT`: A MeshAgent project id. If empty, the activated project will be used.  \[default: (dynamic)]
* `--room TEXT`: Room name
* `--filter TEXT`: Lowercase contains filter
* `--count INTEGER`: Maximum number of routes to return  \[default: 100]
* `--offset INTEGER`: Row offset for pagination  \[default: 0]
* `-o, --output TEXT`: output format   \[default: table]
* `--help`: Show this message and exit.

### `meshagent route delete`

Delete a route.

**Usage**:

```console theme={null}
$ meshagent route delete [OPTIONS] DOMAIN
```

**Arguments**:

* `DOMAIN`: Domain name to delete  \[required]

**Options**:

* `--project-id TEXT`: A MeshAgent project id. If empty, the activated project will be used.  \[default: (dynamic)]
* `--help`: Show this message and exit.

## `meshagent registry`

Manage registries for your project

**Usage**:

```console theme={null}
$ meshagent registry [OPTIONS] COMMAND [ARGS]...
```

**Options**:

* `--install-completion`: Install completion for the current shell.
* `--show-completion`: Show completion for the current shell, to copy it or customize the installation.
* `--help`: Show this message and exit.

**Commands**:

* `create`: Create a project registry repository.
* `update`: Update a project registry repository.
* `get`: Get registry details.
* `list`: List registries for the project.
* `delete`: Delete a project registry repository by id...

### `meshagent registry create`

Create a project registry repository.

**Usage**:

```console theme={null}
$ meshagent registry create [OPTIONS]
```

**Options**:

* `--project-id TEXT`: A MeshAgent project id. If empty, the activated project will be used.  \[default: (dynamic)]
* `-n, --name TEXT`: Repository path in the public registry, for example 'apps/demo'  \[required]
* `-d, --description TEXT`: Human-readable description
* `-a, --annotations TEXT`: annotations in json format \{"name":"value"}
* `--help`: Show this message and exit.

### `meshagent registry update`

Update a project registry repository.

**Usage**:

```console theme={null}
$ meshagent registry update [OPTIONS] REPOSITORY_ID
```

**Arguments**:

* `REPOSITORY_ID`: Repository id to update  \[required]

**Options**:

* `--project-id TEXT`: A MeshAgent project id. If empty, the activated project will be used.  \[default: (dynamic)]
* `-n, --name TEXT`: Updated repository path
* `-d, --description TEXT`: Updated description
* `-a, --annotations TEXT`: annotations in json format \{"name":"value"}
* `--help`: Show this message and exit.

### `meshagent registry get`

Get registry details.

**Usage**:

```console theme={null}
$ meshagent registry get [OPTIONS] REPOSITORY_ID
```

**Arguments**:

* `REPOSITORY_ID`: Repository id to get  \[required]

**Options**:

* `--project-id TEXT`: A MeshAgent project id. If empty, the activated project will be used.  \[default: (dynamic)]
* `--help`: Show this message and exit.

### `meshagent registry list`

List registries for the project.

**Usage**:

```console theme={null}
$ meshagent registry list [OPTIONS]
```

**Options**:

* `--project-id TEXT`: A MeshAgent project id. If empty, the activated project will be used.  \[default: (dynamic)]
* `-o, --output TEXT`: output format   \[default: table]
* `--help`: Show this message and exit.

### `meshagent registry delete`

Delete a project registry repository by id or name.

**Usage**:

```console theme={null}
$ meshagent registry delete [OPTIONS] [REPOSITORY]
```

**Arguments**:

* `[REPOSITORY]`: Repository id or name to delete

**Options**:

* `--project-id TEXT`: A MeshAgent project id. If empty, the activated project will be used.  \[default: (dynamic)]
* `--name TEXT`: Repository name to delete
* `--help`: Show this message and exit.

## `meshagent build`

Build a container image inside a room.

**Usage**:

```console theme={null}
$ meshagent build [OPTIONS] PATH
```

**Arguments**:

* `PATH`: Local directory to stream as the build context. Format '\<path>\[:\<mount>]'. Defaults mount to /context.  \[required]

**Options**:

* `--project-id TEXT`: A MeshAgent project id. If empty, the activated project will be used.
* `--room TEXT`: Existing room name.
* `--tag TEXT`: Image tag to build. Supports \<repository>:\<tag>, \<project-key>/\<repository>:\<tag>, or \<registry>/\<project-key>/\<repository>:\<tag>. Shorthand forms resolve against the configured MeshAgent registry.  \[required]
* `--context-path TEXT`: Build context path inside the streamed build context (absolute path). Defaults to the PATH mount path.
* `--dockerfile-path TEXT`: Optional Dockerfile path inside the streamed build context (absolute path).
* `--builder-name TEXT`: Optional reusable builder name for streamed local builds.
* `--private / --public`: Whether the build container is private to the participant  \[default: public]
* `--optimize / --no-optimize`: Whether to optimize room image outputs with Nydus before publishing. Enabled by default.  \[default: optimize]
* `--cred TEXT`: Docker creds (username,password) or (registry,username,password)
* `--latest`: Also publish the built image as :latest in the same repository.
* `--help`: Show this message and exit.

## `meshagent deploy`

Create or update a room service from an image, optionally building it first. The target room must already exist. If .meshagent/deploy.yaml exists, deploy prompts for template values in TUI mode and saves them to .meshagent/values.yaml. Use `meshagent deploy describe` to inspect the local deploy spec. Happy path for a Dockerfile app: run 'meshagent deploy PATH --room \<room> --tag \<tag> --public --domain \<domain>'. Use 'meshagent config get domains.pages' to find the pages domain for --domain. If PATH does not include a Dockerfile yet, create a minimal Dockerfile in the app directory first or create one elsewhere in PATH and pass it with --dockerfile-path.

**Usage**:

```console theme={null}
$ meshagent deploy [OPTIONS] [PATH]
```

**Arguments**:

* `[PATH]`: Local directory to stream as the build context before deploy. Format '\<path>\[:\<mount>]'. Defaults mount to /context. PATH is typically the app directory you want to deploy.

**Options**:

* `--project-id TEXT`: A MeshAgent project id. If empty, the activated project will be used.
* `--room TEXT`: Existing room name.
* `--tag TEXT`: Image tag to deploy, e.g. repo/name:tag. When used with PATH, shorthand \<repository>:\<tag> and \<project-key>/\<repository>:\<tag> resolve against the configured MeshAgent registry.  \[required]
* `--context-path TEXT`: Build context path inside the packed build context (absolute path). Only used with PATH.
* `--dockerfile-path TEXT`: Optional Dockerfile path inside the packed build context (absolute path). Only used with PATH. Use this when the app directory has no top-level Dockerfile or when you create the Dockerfile under a different path.
* `--optimize / --no-optimize`: Whether to optimize room image outputs with Nydus during the build stage. Enabled by default. Only used with PATH.  \[default: optimize]
* `--cred TEXT`: Docker creds (username,password) or (registry,username,password)
* `--builder-name TEXT`: Optional reusable builder name for streamed local pack builds.
* `--latest`: Also publish the built PATH image as :latest in the same repository. Only used with PATH.
* `--domain TEXT`: Create or update a room route for the deployed service and return a public URL. Use this with --public when you need an external URL from deploy. Use 'meshagent config get domains.pages' to find the pages domain for --domain. Requires exactly one published service port.
* `--email TEXT`: Create or update a public mailbox for the deployed service. When a local deploy template has an email variable, that value is used unless --email is passed.
* `-f, --values TEXT`: YAML file containing deploy template values. Can be passed multiple times; later files override earlier files.
* `--set TEXT`: Set a deploy template value as KEY=VALUE. Can be passed multiple times.
* `--extra-port TEXT`: Add an extra route path to DOMAIN as TARGET:/path. TARGET can be PORT, SERVICE, or SERVICE:PORT. Can be passed multiple times. The target must already be published by a room service.
* `--validation-mode TEXT`: Request validation annotation mode for private published service ports: default, cookie, or none.  \[default: default]
* `--template TEXT`: Allowed values: agent, none. agent: MeshAgent mounts room storage at /data, sets MESHAGENT\_TOKEN, OPENAI\_API\_KEY, and ANTHROPIC\_API\_KEY to a container-scoped MeshAgent token. agent also sets SMTP\_PASSWORD to that token, SMTP\_USERNAME to the container name, SMTP\_PORT to 587, SMTP\_HOSTNAME from MESHAGENT\_MAIL\_DOMAIN when available, plus OPENAI\_BASE\_URL, ANTHROPIC\_BASE\_URL, MESHAGENT\_API\_URL, MESHAGENT\_ROOM\_URL, MESHAGENT\_ROOM, MESHAGENT\_PROJECT\_ID, MESHAGENT\_SESSION\_ID, OTEL\_ENDPOINT, OTEL\_PYTHON\_LOG\_LEVEL, and MESHAGENT\_MAIL\_DOMAIN from the room runtime when available. Manual env values win. none: MeshAgent applies no template defaults.  \[default: agent]
* `--liveness TEXT`: HTTP path to use for service liveness checks. Defaults to / for new or missing HTTP liveness paths.
* `--room-mount TEXT`: Mount room storage as \<source>:\<mount>\[:ro|rw]
* `--empty-dir-mount TEXT`: Mount empty dir at \<mount>\[:ro|rw]
* `--image-mount TEXT`: Mount image as \<image>=\<mount>\[:ro|rw]
* `-e, --env TEXT`: Set environment variable as KEY=VALUE
* `--env-secret TEXT`: Set environment variable from a service account secret as NAME=SECRET\_ID
* `--identity TEXT`: Identity name to use for --meshagent-token. Defaults to the current token identity or the derived service name.
* `--run-as TEXT`: Service account email the deployed container runs as. Required when using --env-secret.
* `--meshagent-token TEXT`: Inject MESHAGENT\_TOKEN using userDefault, agentDefault, full, or a JSON ApiScope object.
* `--private / --public`: Whether published service ports should stay private or be public when they are created or updated. Defaults to private.  \[default: private]
* `--wait / --no-wait`: Wait for the deployed service to start, stream container logs, and verify the route liveness URL when --domain is provided.  \[default: wait]
* `--help`: Show this message and exit.

## `meshagent scheduled-task`

Manage scheduled tasks for your project

**Usage**:

```console theme={null}
$ meshagent scheduled-task [OPTIONS] COMMAND [ARGS]...
```

**Options**:

* `--install-completion`: Install completion for the current shell.
* `--show-completion`: Show completion for the current shell, to copy it or customize the installation.
* `--help`: Show this message and exit.

**Commands**:

* `add`: Add a scheduled task.
* `list`: List scheduled tasks.
* `update`: Update a scheduled task.
* `runs`: List runs for a scheduled task.
* `delete`: Delete a scheduled task.

### `meshagent scheduled-task add`

Add a scheduled task.

**Usage**:

```console theme={null}
$ meshagent scheduled-task add [OPTIONS]
```

**Options**:

* `--project-id TEXT`: A MeshAgent project id. If empty, the activated project will be used.  \[default: (dynamic)]
* `-r, --room TEXT`: Room name
* `-f, --file TEXT`: Path to a ScheduledTaskSpec YAML file  \[required]
* `--help`: Show this message and exit.

### `meshagent scheduled-task list`

List scheduled tasks.

**Usage**:

```console theme={null}
$ meshagent scheduled-task list [OPTIONS]
```

**Options**:

* `--project-id TEXT`: A MeshAgent project id. If empty, the activated project will be used.  \[default: (dynamic)]
* `-r, --room TEXT`: Filter by room name
* `--id, --task-id TEXT`: Filter by scheduled task id
* `--active`: Filter to active tasks only
* `--inactive`: Filter to inactive tasks only
* `--filter TEXT`: Lowercase contains filter
* `--count INTEGER`: Maximum number of tasks to return  \[default: 100]
* `--offset INTEGER`: Row offset for pagination  \[default: 0]
* `-o, --output TEXT`: output format   \[default: table]
* `--help`: Show this message and exit.

### `meshagent scheduled-task update`

Update a scheduled task.

**Usage**:

```console theme={null}
$ meshagent scheduled-task update [OPTIONS] TASK_ID
```

**Arguments**:

* `TASK_ID`: Scheduled task id to update  \[required]

**Options**:

* `--project-id TEXT`: A MeshAgent project id. If empty, the activated project will be used.  \[default: (dynamic)]
* `-f, --file TEXT`: Path to a replacement ScheduledTaskSpec YAML file  \[required]
* `--help`: Show this message and exit.

### `meshagent scheduled-task runs`

List runs for a scheduled task.

**Usage**:

```console theme={null}
$ meshagent scheduled-task runs [OPTIONS] TASK_ID
```

**Arguments**:

* `TASK_ID`: Scheduled task id  \[required]

**Options**:

* `--project-id TEXT`: A MeshAgent project id. If empty, the activated project will be used.  \[default: (dynamic)]
* `--count INTEGER`: Maximum number of runs to return  \[default: 100]
* `--offset INTEGER`: Row offset for pagination  \[default: 0]
* `-o, --output TEXT`: output format   \[default: table]
* `--help`: Show this message and exit.

### `meshagent scheduled-task delete`

Delete a scheduled task.

**Usage**:

```console theme={null}
$ meshagent scheduled-task delete [OPTIONS] TASK_ID
```

**Arguments**:

* `TASK_ID`: Scheduled task id to delete  \[required]

**Options**:

* `--project-id TEXT`: A MeshAgent project id. If empty, the activated project will be used.  \[default: (dynamic)]
* `--help`: Show this message and exit.

## `meshagent meeting-transcriber`

Join a meeting transcriber to a room

**Usage**:

```console theme={null}
$ meshagent meeting-transcriber [OPTIONS] COMMAND [ARGS]...
```

**Options**:

* `--install-completion`: Install completion for the current shell.
* `--show-completion`: Show completion for the current shell, to copy it or customize the installation.
* `--help`: Show this message and exit.

**Commands**:

* `join`: Join a room and run the meeting...
* `service`

### `meshagent meeting-transcriber join`

Join a room and run the meeting transcriber agent.

**Usage**:

```console theme={null}
$ meshagent meeting-transcriber join [OPTIONS]
```

**Options**:

* `--project-id TEXT`: A MeshAgent project id. If empty, the activated project will be used.  \[default: (dynamic)]
* `--room TEXT`: Room name  \[default: (dynamic)]
* `--agent-name TEXT`: Name of the agent
* `--key TEXT`: an api key to sign the token with
* `--help`: Show this message and exit.

### `meshagent meeting-transcriber service`

**Usage**:

```console theme={null}
$ meshagent meeting-transcriber service [OPTIONS]
```

**Options**:

* `--agent-name TEXT`: Name of the agent  \[required]
* `--host TEXT`: Host to bind the service on
* `--port INTEGER`: Port to bind the service on
* `--path TEXT`: HTTP path to mount the service at  \[default: /agent]
* `--help`: Show this message and exit.

## `meshagent port`

Forward a container port to localhost

**Usage**:

```console theme={null}
$ meshagent port [OPTIONS]
```

**Options**:

* `--project-id TEXT`: A MeshAgent project id. If empty, the activated project will be used.  \[default: (dynamic)]
* `-r, --room TEXT`: Room name containing the target container  \[required]
* `-n, --name TEXT`: Container name to port-forward into
* `-c, --container-id TEXT`: Container ID to port-forward into
* `-p, --port TEXT`: Port mapping in the form LOCAL:REMOTE  \[required]
* `--install-completion`: Install completion for the current shell.
* `--show-completion`: Show completion for the current shell, to copy it or customize the installation.
* `--help`: Show this message and exit.

## `meshagent voicebot`

Join a voicebot to a room

**Usage**:

```console theme={null}
$ meshagent voicebot [OPTIONS] COMMAND [ARGS]...
```

**Options**:

* `--install-completion`: Install completion for the current shell.
* `--show-completion`: Show completion for the current shell, to copy it or customize the installation.
* `--help`: Show this message and exit.

**Commands**:

* `join`: Join a room and run a voicebot agent.
* `service`
* `spec`: Generate a service spec for deploying a...
* `deploy`: Deploy a voicebot service to a project or...

### `meshagent voicebot join`

Join a room and run a voicebot agent.

**Usage**:

```console theme={null}
$ meshagent voicebot join [OPTIONS]
```

**Options**:

* `--project-id TEXT`: A MeshAgent project id. If empty, the activated project will be used.  \[default: (dynamic)]
* `--room TEXT`: Room name  \[default: (dynamic)]
* `--agent-name TEXT`: Name of the agent to call
* `--token-from-env TEXT`: Name of environment variable containing a MeshAgent token
* `-r, --rule TEXT`: a system rule
* `--rules-file TEXT`
* `-rt, --require-toolkit TEXT`: the name or url of a required toolkit
* `-rs, --require-schema TEXT`: the name or url of a required schema
* `--auto-greet-message TEXT`: Message to send automatically when the bot joins
* `--auto-greet-prompt TEXT`: Prompt to generate an auto-greet message
* `--voice TEXT`: OpenAI Realtime voice preset to use
* `--key TEXT`: an api key to sign the token with
* `-rr, --room-rules TEXT`: a path to a rules file within the room that can be used to customize the agent's behavior
* `--help`: Show this message and exit.

### `meshagent voicebot service`

**Usage**:

```console theme={null}
$ meshagent voicebot service [OPTIONS]
```

**Options**:

* `--agent-name TEXT`: Name of the agent to call  \[required]
* `-r, --rule TEXT`: a system rule
* `--rules-file TEXT`
* `-rt, --require-toolkit TEXT`: the name or url of a required toolkit
* `-rs, --require-schema TEXT`: the name or url of a required schema
* `--auto-greet-message TEXT`: Message to send automatically when the bot joins
* `--auto-greet-prompt TEXT`: Prompt to generate an auto-greet message
* `--voice TEXT`: OpenAI Realtime voice preset to use
* `--host TEXT`: Host to bind the service on
* `--port INTEGER`: Port to bind the service on
* `--path TEXT`: HTTP path to mount the service at
* `-rr, --room-rules TEXT`: a path to a rules file within the room that can be used to customize the agent's behavior
* `--help`: Show this message and exit.

### `meshagent voicebot spec`

Generate a service spec for deploying a voicebot.

**Usage**:

```console theme={null}
$ meshagent voicebot spec [OPTIONS]
```

**Options**:

* `--service-name TEXT`: service name
* `--service-description TEXT`: service description
* `--service-title TEXT`: a display name for the service
* `--agent-name TEXT`: Name of the agent to call  \[required]
* `-r, --rule TEXT`: a system rule
* `--rules-file TEXT`
* `-rt, --require-toolkit TEXT`: the name or url of a required toolkit
* `-rs, --require-schema TEXT`: the name or url of a required schema
* `--auto-greet-message TEXT`: Message to send automatically when the bot joins
* `--auto-greet-prompt TEXT`: Prompt to generate an auto-greet message
* `--voice TEXT`: OpenAI Realtime voice preset to use
* `-rr, --room-rules TEXT`: a path to a rules file within the room that can be used to customize the agent's behavior
* `--help`: Show this message and exit.

### `meshagent voicebot deploy`

Deploy a voicebot service to a project or room.

**Usage**:

```console theme={null}
$ meshagent voicebot deploy [OPTIONS]
```

**Options**:

* `--service-name TEXT`: service name
* `--service-description TEXT`: service description
* `--service-title TEXT`: a display name for the service
* `--agent-name TEXT`: Name of the agent to call  \[required]
* `-r, --rule TEXT`: a system rule
* `--rules-file TEXT`
* `-rt, --require-toolkit TEXT`: the name or url of a required toolkit
* `-rs, --require-schema TEXT`: the name or url of a required schema
* `--auto-greet-message TEXT`: Message to send automatically when the bot joins
* `--auto-greet-prompt TEXT`: Prompt to generate an auto-greet message
* `--voice TEXT`: OpenAI Realtime voice preset to use
* `-rr, --room-rules TEXT`: a path to a rules file within the room that can be used to customize the agent's behavior
* `--project-id TEXT`: A MeshAgent project id. If empty, the activated project will be used.  \[default: (dynamic)]
* `--room TEXT`: The name of a room to create the service for
* `--help`: Show this message and exit.

## `meshagent process`

Run process-backed agents

**Usage**:

```console theme={null}
$ meshagent process [OPTIONS] COMMAND [ARGS]...
```

**Options**:

* `--install-completion`: Install completion for the current shell.
* `--show-completion`: Show completion for the current shell, to copy it or customize the installation.
* `--help`: Show this message and exit.

**Commands**:

* `join`: Join a room and run a process-backed agent.
* `service`: Add a process-backed agent service to the...
* `spec`: Generate a service spec for deploying a...
* `deploy`: Deploy a process-backed agent service.
* `run`: Run a process-backed agent and wait for...
* `threads`: List threads for a process-backed agent.
* `messages`: List messages in a process-backed agent...
* `grep`: Search coalesced messages in a...
* `use`: Send a one-shot or interactive message to...

### `meshagent process join`

Join a room and run a process-backed agent.

**Usage**:

```console theme={null}
$ meshagent process join [OPTIONS]
```

**Options**:

* `--project-id TEXT`: A MeshAgent project id. If empty, the activated project will be used.  \[default: (dynamic)]
* `--room TEXT`: Room name  \[default: (dynamic)]
* `--role TEXT`: \[default: agent]
* `--agent-name TEXT`: Name of the agent to call
* `--token-from-env TEXT`: Name of environment variable containing a MeshAgent token
* `-r, --rule TEXT`: a system rule
* `-rr, --room-rules TEXT`: a path to a rules file within the room that can be used to customize the agent's behavior
* `--rules-file TEXT`
* `--instructions TEXT`: a path in the configured storage toolkit to a rules file that will be loaded at runtime
* `--preamble-rule / --no-preamble-rule`: Include the default rule asking the model to send concise pre-tool preambles when no custom rules are configured.  \[default: preamble-rule]
* `-rt, --require-toolkit TEXT`: the name or url of a required toolkit
* `--tool-search [room|agent|none]`: Expose required toolkits through OpenAI Responses tool search. Use agent for statically configured non-OpenAI builtin tools, room for those plus annotated room toolkits, or none.  \[default: none]
* `-s, --schema TEXT`: the name or url of a required schema
* `--model TEXT`: Name of an LLM model to make available. Can be repeated.  \[default: gpt-5.6-sol]
* `--backend TEXT`: Process backend to make available. Can be repeated. Supported: llm, codex, chat.
* `--image-generation TEXT`: Name of an image gen model
* `--computer-use / --no-computer-use`: Enable computer use  \[default: no-computer-use]
* `--shell / --no-shell`: Enable function shell tool calling  \[default: no-shell]
* `--apply-patch / --no-apply-patch`: Enable apply patch tool  \[default: no-apply-patch]
* `--web-search / --no-web-search`: Enable web search tool calling  \[default: no-web-search]
* `--web-fetch / --no-web-fetch`: Enable web fetch tool calling  \[default: no-web-fetch]
* `--script-tool / --no-script-tool`: Enable script tool calling  \[default: no-script-tool]
* `--discover-script-tools / --no-discover-script-tools`: Automatically add script tools from the room  \[default: no-discover-script-tools]
* `--mcp / --no-mcp`: Enable mcp tool calling  \[default: no-mcp]
* `--storage / --no-storage`: Enable storage toolkit  \[default: no-storage]
* `--storage-tool-local-path TEXT`: Mount local path as \<source>:\<mount>\[:ro|rw]
* `--storage-tool-room-path TEXT`: Mount room path as \<source>:\<mount>\[:ro|rw]
* `--shell-room-mount TEXT`: Mount room storage as \<source>:\<mount>\[:ro|rw]
* `--shell-empty-dir-mount TEXT`: Mount empty dir at \<mount>\[:ro|rw]
* `--shell-tool-config-mount TEXT`: Mount meshagent runtime config files read-only into \<mount>
* `--shell-image-mount TEXT`: Mount image as \<image>=\<mount>\[:ro|rw]
* `--starting-url TEXT`: Initial URL to open when starting a computer-use browser session
* `--allow-goto-url`: Expose the goto URL helper tool for computer use
* `--advanced-shell`: Enable the managed container toolkit with start/list/stop/run tools.
* `--dataset-namespace TEXT`: Use a specific dataset namespace
* `--table-read TEXT`: Enable table read tools for a specific table
* `--table-write TEXT`: Enable table write tools for a specific table
* `--read-only-storage`: Enable read only storage toolkit
* `--time / --no-time`: Enable time/datetime tools  \[default: time]
* `--uuid`: Enable UUID generation tools
* `--use-memory TEXT`: Use memories toolkit for \<name> or \<namespace>/\<name>
* `--memory-model TEXT`: Model name for memory LLM ingestion
* `--document-authoring`: Enable MeshDocument authoring
* `--discovery`: Enable discovery of agents and tools
* `--working-dir TEXT`: The default working directory for shell commands
* `--key TEXT`: an api key to sign the token with
* `--llm-participant TEXT`: Delegate LLM interactions to a remote participant
* `--decision-model TEXT`: Model used for thread naming and other secondary LLM decisions
* `--transcription-model TEXT`: Realtime input audio transcription model.  \[default: gpt-realtime-whisper]
* `--voice TEXT`: Default OpenAI Realtime voice preset.
* `--turn-detection [none|automatic]`: OpenAI Realtime audio turn detection mode: none or automatic.  \[default: none]
* `--realtime-protocol TEXT`: Realtime connection protocol to advertise for OpenAI Realtime. Pass multiple times to set an ordered preference list.
* `--output-modality TEXT`: Restrict supported response output modalities to text or audio. Pass multiple times to allow multiple output modalities; omit to allow all.
* `--input-audio-format TEXT`: Realtime input audio MIME type.  \[default: audio/pcm]
* `--input-audio-sample-rate INTEGER`: Realtime input audio sample rate.  \[default: 24000]
* `--input-audio-bitrate INTEGER`: Realtime input audio bitrate.
* `--output-audio-format TEXT`: Realtime output audio MIME type.  \[default: audio/pcm]
* `--output-audio-sample-rate INTEGER`: Realtime output audio sample rate.  \[default: 24000]
* `--output-audio-bitrate INTEGER`: Realtime output audio bitrate.
* `--host TEXT`: Host to bind the service on
* `--port INTEGER`: Port to bind the service on
* `--path TEXT`: HTTP path to mount the service at
* `--always-reply / --no-always-reply`: Always reply
* `--threading-mode [none|default-new]`: Threading mode for thread UIs. Use 'default-new' to show a new-thread composer before loading a thread.  \[default: default-new]
* `--thread-dir TEXT`: Thread directory for agent thread files. Defaults to /agents/\<agent-name>/threads for process agents when threading mode is enabled.
* `--thread-storage TEXT`: Thread storage backend for process agents. Can be repeated; the first value is the default. Defaults to dataset.
* `--context-management [auto|standalone|none]`: Context compaction mode for OpenAI Responses process agents: auto, standalone, or none.  \[default: auto]
* `--compaction-threshold INTEGER`: Token threshold for OpenAI Responses context compaction.
* `--max-output-tokens INTEGER`: Maximum output tokens to request from OpenAI Responses models.
* `--reasoning-effort TEXT`: Reasoning effort to request from OpenAI Responses models.
* `--channel TEXT`: Attach a channel to the agent process. Can be repeated. Currently supported: chat, mail:EMAIL\_ADDRESS\[?reply-all=true|false], memory, queue:QUEUE\_NAME, toolkit:NAME, command:EXECUTABLE, command:\["COMMAND","ARG"], websocket:PORT, websocket://HOST:PORT.
* `--websocket-auth [iap|jwt|none]`: Authentication mode for websocket channels: jwt, iap, or none.  \[default: jwt]
* `--skill-dir TEXT`: an agent skills directory
* `--shell-image TEXT`: an image tag to use to run shell commands in
* `--delegate-shell-token / --no-delegate-shell-token`: log all requests to the llm  \[default: no-delegate-shell-token]
* `--shell-copy-env TEXT`: Copy local env vars into shell tool env. Accepts comma-separated names and can be repeated.
* `--shell-set-env TEXT`: Set env vars in shell tool env as NAME=VALUE. Can be repeated.
* `--log-llm-requests / --no-log-llm-requests`: log all requests to the llm  \[default: no-log-llm-requests]
* `--profile`: Print OpenTelemetry span timings for process startup and turns.
* `--verbose-dataset`: Persist streaming delta events to dataset thread storage for debugging
* `--save-audio-input`: Persist realtime audio input chunks to dataset thread storage as binary attachments.
* `--help`: Show this message and exit.

### `meshagent process service`

Add a process-backed agent service to the host.

**Usage**:

```console theme={null}
$ meshagent process service [OPTIONS]
```

**Options**:

* `--agent-name TEXT`: Name of the agent to call  \[required]
* `-r, --rule TEXT`: a system rule
* `--rules-file TEXT`
* `--instructions TEXT`: a path in the configured storage toolkit to a rules file that will be loaded at runtime
* `-rr, --room-rules TEXT`: a path to a rules file within the room that can be used to customize the agent's behavior
* `-rt, --require-toolkit TEXT`: the name or url of a required toolkit
* `--tool-search [room|agent|none]`: Expose required toolkits through OpenAI Responses tool search. Use agent for statically configured non-OpenAI builtin tools, room for those plus annotated room toolkits, or none.  \[default: none]
* `-s, --schema TEXT`: the name or url of a required schema
* `--model TEXT`: Name of an LLM model to make available. Can be repeated.  \[default: gpt-5.6-sol]
* `--backend TEXT`: Process backend to make available. Can be repeated. Supported: llm, codex, chat.
* `--image-generation TEXT`: Name of an image gen model
* `--shell / --no-shell`: Enable function shell tool calling  \[default: no-shell]
* `--apply-patch / --no-apply-patch`: Enable apply patch tool  \[default: no-apply-patch]
* `--computer-use / --no-computer-use`: Enable computer use  \[default: no-computer-use]
* `--web-search / --no-web-search`: Enable web search tool calling  \[default: no-web-search]
* `--web-fetch / --no-web-fetch`: Enable web fetch tool calling  \[default: no-web-fetch]
* `--script-tool / --no-script-tool`: Enable script tool calling  \[default: no-script-tool]
* `--discover-script-tools / --no-discover-script-tools`: Automatically add script tools from the room  \[default: no-discover-script-tools]
* `--mcp / --no-mcp`: Enable mcp tool calling  \[default: no-mcp]
* `--storage / --no-storage`: Enable storage toolkit  \[default: no-storage]
* `--storage-tool-local-path TEXT`: Mount local path as \<source>:\<mount>\[:ro|rw]
* `--storage-tool-room-path TEXT`: Mount room path as \<source>:\<mount>\[:ro|rw]
* `--shell-room-mount TEXT`: Mount room storage as \<source>:\<mount>\[:ro|rw]
* `--shell-empty-dir-mount TEXT`: Mount empty dir at \<mount>\[:ro|rw]
* `--shell-tool-config-mount TEXT`: Mount meshagent runtime config files read-only into \<mount>
* `--shell-image-mount TEXT`: Mount image as \<image>=\<mount>\[:ro|rw]
* `--starting-url TEXT`: Initial URL to open when starting a computer-use browser session
* `--allow-goto-url`: Expose the goto URL helper tool for computer use
* `--advanced-shell`: Enable the managed container toolkit with start/list/stop/run tools.
* `--dataset-namespace TEXT`: Use a specific dataset namespace
* `--table-read TEXT`: Enable table read tools for a specific table
* `--table-write TEXT`: Enable table write tools for a specific table
* `--read-only-storage`: Enable read only storage toolkit
* `--time / --no-time`: Enable time/datetime tools  \[default: time]
* `--uuid`: Enable UUID generation tools
* `--use-memory TEXT`: Use memories toolkit for \<name> or \<namespace>/\<name>
* `--memory-model TEXT`: Model name for memory LLM ingestion
* `--working-dir TEXT`: The default working directory for shell commands
* `--require-document-authoring / --no-require-document-authoring`: Enable document authoring  \[default: no-require-document-authoring]
* `--discovery`: Enable discovery of agents and tools
* `--llm-participant TEXT`: Delegate LLM interactions to a remote participant
* `--decision-model TEXT`: Model used for thread naming and other secondary LLM decisions
* `--transcription-model TEXT`: Realtime input audio transcription model.  \[default: gpt-realtime-whisper]
* `--voice TEXT`: Default OpenAI Realtime voice preset.
* `--turn-detection [none|automatic]`: OpenAI Realtime audio turn detection mode: none or automatic.  \[default: none]
* `--realtime-protocol TEXT`: Realtime connection protocol to advertise for OpenAI Realtime. Pass multiple times to set an ordered preference list.
* `--output-modality TEXT`: Restrict supported response output modalities to text or audio. Pass multiple times to allow multiple output modalities; omit to allow all.
* `--input-audio-format TEXT`: Realtime input audio MIME type.  \[default: audio/pcm]
* `--input-audio-sample-rate INTEGER`: Realtime input audio sample rate.  \[default: 24000]
* `--input-audio-bitrate INTEGER`: Realtime input audio bitrate.
* `--output-audio-format TEXT`: Realtime output audio MIME type.  \[default: audio/pcm]
* `--output-audio-sample-rate INTEGER`: Realtime output audio sample rate.  \[default: 24000]
* `--output-audio-bitrate INTEGER`: Realtime output audio bitrate.
* `--host TEXT`: Host to bind the service on
* `--port INTEGER`: Port to bind the service on
* `--path TEXT`: HTTP path to mount the service at
* `--always-reply / --no-always-reply`: Always reply
* `--threading-mode [none|default-new]`: Threading mode for thread UIs. Use 'default-new' to show a new-thread composer before loading a thread.  \[default: default-new]
* `--thread-dir TEXT`: Thread directory for agent thread files. Defaults to /agents/\<agent-name>/threads for process agents when threading mode is enabled.
* `--thread-storage TEXT`: Thread storage backend for process agents. Can be repeated; the first value is the default. Defaults to dataset.
* `--context-management [auto|standalone|none]`: Context compaction mode for OpenAI Responses process agents: auto, standalone, or none.  \[default: auto]
* `--compaction-threshold INTEGER`: Token threshold for OpenAI Responses context compaction.
* `--max-output-tokens INTEGER`: Maximum output tokens to request from OpenAI Responses models.
* `--reasoning-effort TEXT`: Reasoning effort to request from OpenAI Responses models.
* `--channel TEXT`: Attach a channel to the agent process. Can be repeated. Currently supported: chat, mail:EMAIL\_ADDRESS\[?reply-all=true|false], memory, queue:QUEUE\_NAME, toolkit:NAME, command:EXECUTABLE, command:\["COMMAND","ARG"], websocket:PORT, websocket://HOST:PORT.
* `--skill-dir TEXT`: an agent skills directory
* `--shell-image TEXT`: an image tag to use to run shell commands in
* `--delegate-shell-token / --no-delegate-shell-token`: log all requests to the llm  \[default: no-delegate-shell-token]
* `--shell-copy-env TEXT`: Copy local env vars into shell tool env. Accepts comma-separated names and can be repeated.
* `--shell-set-env TEXT`: Set env vars in shell tool env as NAME=VALUE. Can be repeated.
* `--log-llm-requests / --no-log-llm-requests`: log all requests to the llm  \[default: no-log-llm-requests]
* `--verbose-dataset`: Persist streaming delta events to dataset thread storage for debugging
* `--save-audio-input`: Persist realtime audio input chunks to dataset thread storage as binary attachments.
* `--help`: Show this message and exit.

### `meshagent process spec`

Generate a service spec for deploying a process-backed agent.

**Usage**:

```console theme={null}
$ meshagent process spec [OPTIONS]
```

**Options**:

* `--service-name TEXT`: service name
* `--service-description TEXT`: service description
* `--service-title TEXT`: a display name for the service
* `--agent-name TEXT`: Name of the agent to call  \[required]
* `-r, --rule TEXT`: a system rule
* `--rules-file TEXT`
* `--instructions TEXT`: a path in the configured storage toolkit to a rules file that will be loaded at runtime
* `-rr, --room-rules TEXT`: a path to a rules file within the room that can be used to customize the agent's behavior
* `-rt, --require-toolkit TEXT`: the name or url of a required toolkit
* `--tool-search [room|agent|none]`: Expose required toolkits through OpenAI Responses tool search. Use agent for statically configured non-OpenAI builtin tools, room for those plus annotated room toolkits, or none.  \[default: none]
* `-s, --schema TEXT`: the name or url of a required schema
* `--model TEXT`: Name of an LLM model to make available. Can be repeated.  \[default: gpt-5.6-sol]
* `--backend TEXT`: Process backend to make available. Can be repeated. Supported: llm, codex, chat.
* `--image-generation TEXT`: Name of an image gen model
* `--shell / --no-shell`: Enable function shell tool calling  \[default: no-shell]
* `--apply-patch / --no-apply-patch`: Enable apply patch tool  \[default: no-apply-patch]
* `--computer-use / --no-computer-use`: Enable computer use  \[default: no-computer-use]
* `--web-search / --no-web-search`: Enable web search tool calling  \[default: no-web-search]
* `--web-fetch / --no-web-fetch`: Enable web fetch tool calling  \[default: no-web-fetch]
* `--script-tool / --no-script-tool`: Enable script tool calling  \[default: no-script-tool]
* `--discover-script-tools / --no-discover-script-tools`: Automatically add script tools from the room  \[default: no-discover-script-tools]
* `--mcp / --no-mcp`: Enable mcp tool calling  \[default: no-mcp]
* `--storage / --no-storage`: Enable storage toolkit  \[default: no-storage]
* `--storage-tool-local-path TEXT`: Mount local path as \<source>:\<mount>\[:ro|rw]
* `--storage-tool-room-path TEXT`: Mount room path as \<source>:\<mount>\[:ro|rw]
* `--shell-room-mount TEXT`: Mount room storage as \<source>:\<mount>\[:ro|rw]
* `--shell-empty-dir-mount TEXT`: Mount empty dir at \<mount>\[:ro|rw]
* `--shell-tool-config-mount TEXT`: Mount meshagent runtime config files read-only into \<mount>
* `--starting-url TEXT`: Initial URL to open when starting a computer-use browser session
* `--allow-goto-url`: Expose the goto URL helper tool for computer use
* `--advanced-shell`: Enable the managed container toolkit with start/list/stop/run tools.
* `--dataset-namespace TEXT`: Use a specific dataset namespace
* `--table-read TEXT`: Enable table read tools for a specific table
* `--table-write TEXT`: Enable table write tools for a specific table
* `--read-only-storage`: Enable read only storage toolkit
* `--time / --no-time`: Enable time/datetime tools  \[default: time]
* `--uuid`: Enable UUID generation tools
* `--use-memory TEXT`: Use memories toolkit for \<name> or \<namespace>/\<name>
* `--memory-model TEXT`: Model name for memory LLM ingestion
* `--working-dir TEXT`: The default working directory for shell commands
* `--require-document-authoring / --no-require-document-authoring`: Enable document authoring  \[default: no-require-document-authoring]
* `--discovery`: Enable discovery of agents and tools
* `--llm-participant TEXT`: Delegate LLM interactions to a remote participant
* `--decision-model TEXT`: Model used for thread naming and other secondary LLM decisions
* `--transcription-model TEXT`: Realtime input audio transcription model.  \[default: gpt-realtime-whisper]
* `--voice TEXT`: Default OpenAI Realtime voice preset.
* `--turn-detection [none|automatic]`: OpenAI Realtime audio turn detection mode: none or automatic.  \[default: none]
* `--realtime-protocol TEXT`: Realtime connection protocol to advertise for OpenAI Realtime. Pass multiple times to set an ordered preference list.
* `--output-modality TEXT`: Restrict supported response output modalities to text or audio. Pass multiple times to allow multiple output modalities; omit to allow all.
* `--input-audio-format TEXT`: Realtime input audio MIME type.  \[default: audio/pcm]
* `--input-audio-sample-rate INTEGER`: Realtime input audio sample rate.  \[default: 24000]
* `--input-audio-bitrate INTEGER`: Realtime input audio bitrate.
* `--output-audio-format TEXT`: Realtime output audio MIME type.  \[default: audio/pcm]
* `--output-audio-sample-rate INTEGER`: Realtime output audio sample rate.  \[default: 24000]
* `--output-audio-bitrate INTEGER`: Realtime output audio bitrate.
* `--always-reply / --no-always-reply`: Always reply
* `--threading-mode [none|default-new]`: Threading mode for thread UIs. Use 'default-new' to show a new-thread composer before loading a thread.  \[default: default-new]
* `--thread-dir TEXT`: Thread directory for agent thread files. Defaults to /agents/\<agent-name>/threads for process agents when threading mode is enabled.
* `--thread-storage TEXT`: Thread storage backend for process agents. Can be repeated; the first value is the default. Defaults to dataset.
* `--context-management [auto|standalone|none]`: Context compaction mode for OpenAI Responses process agents: auto, standalone, or none.  \[default: auto]
* `--compaction-threshold INTEGER`: Token threshold for OpenAI Responses context compaction.
* `--max-output-tokens INTEGER`: Maximum output tokens to request from OpenAI Responses models.
* `--reasoning-effort TEXT`: Reasoning effort to request from OpenAI Responses models.
* `--channel TEXT`: Attach a channel to the agent process. Can be repeated. Currently supported: chat, mail:EMAIL\_ADDRESS\[?reply-all=true|false], memory, queue:QUEUE\_NAME, toolkit:NAME, command:EXECUTABLE, command:\["COMMAND","ARG"], websocket:PORT, websocket://HOST:PORT.
* `--skill-dir TEXT`: an agent skills directory
* `--shell-image TEXT`: an image tag to use to run shell commands in
* `--delegate-shell-token / --no-delegate-shell-token`: log all requests to the llm  \[default: no-delegate-shell-token]
* `--shell-copy-env TEXT`: Copy local env vars into shell tool env. Accepts comma-separated names and can be repeated.
* `--shell-set-env TEXT`: Set env vars in shell tool env as NAME=VALUE. Can be repeated.
* `--log-llm-requests / --no-log-llm-requests`: log all requests to the llm  \[default: no-log-llm-requests]
* `--help`: Show this message and exit.

### `meshagent process deploy`

Deploy a process-backed agent service.

**Usage**:

```console theme={null}
$ meshagent process deploy [OPTIONS]
```

**Options**:

* `--service-name TEXT`: service name
* `--service-description TEXT`: service description
* `--service-title TEXT`: a display name for the service
* `--agent-name TEXT`: Name of the agent to call  \[required]
* `-r, --rule TEXT`: a system rule
* `--rules-file TEXT`
* `--instructions TEXT`: a path in the configured storage toolkit to a rules file that will be loaded at runtime
* `-rr, --room-rules TEXT`: a path to a rules file within the room that can be used to customize the agent's behavior
* `-rt, --require-toolkit TEXT`: the name or url of a required toolkit
* `--tool-search [room|agent|none]`: Expose required toolkits through OpenAI Responses tool search. Use agent for statically configured non-OpenAI builtin tools, room for those plus annotated room toolkits, or none.  \[default: none]
* `-s, --schema TEXT`: the name or url of a required schema
* `--model TEXT`: Name of an LLM model to make available. Can be repeated.  \[default: gpt-5.6-sol]
* `--backend TEXT`: Process backend to make available. Can be repeated. Supported: llm, codex, chat.
* `--image-generation TEXT`: Name of an image gen model
* `--shell / --no-shell`: Enable function shell tool calling  \[default: no-shell]
* `--apply-patch / --no-apply-patch`: Enable apply patch tool  \[default: no-apply-patch]
* `--computer-use / --no-computer-use`: Enable computer use  \[default: no-computer-use]
* `--web-search / --no-web-search`: Enable web search tool calling  \[default: no-web-search]
* `--web-fetch / --no-web-fetch`: Enable web fetch tool calling  \[default: no-web-fetch]
* `--script-tool / --no-script-tool`: Enable script tool calling  \[default: no-script-tool]
* `--discover-script-tools / --no-discover-script-tools`: Automatically add script tools from the room  \[default: no-discover-script-tools]
* `--mcp / --no-mcp`: Enable mcp tool calling  \[default: no-mcp]
* `--storage / --no-storage`: Enable storage toolkit  \[default: no-storage]
* `--storage-tool-local-path TEXT`: Mount local path as \<source>:\<mount>\[:ro|rw]
* `--storage-tool-room-path TEXT`: Mount room path as \<source>:\<mount>\[:ro|rw]
* `--shell-room-mount TEXT`: Mount room storage as \<source>:\<mount>\[:ro|rw]
* `--shell-empty-dir-mount TEXT`: Mount empty dir at \<mount>\[:ro|rw]
* `--shell-tool-config-mount TEXT`: Mount meshagent runtime config files read-only into \<mount>
* `--starting-url TEXT`: Initial URL to open when starting a computer-use browser session
* `--allow-goto-url`: Expose the goto URL helper tool for computer use
* `--advanced-shell`: Enable the managed container toolkit with start/list/stop/run tools.
* `--dataset-namespace TEXT`: Use a specific dataset namespace
* `--table-read TEXT`: Enable table read tools for a specific table
* `--table-write TEXT`: Enable table write tools for a specific table
* `--read-only-storage`: Enable read only storage toolkit
* `--time / --no-time`: Enable time/datetime tools  \[default: time]
* `--uuid`: Enable UUID generation tools
* `--use-memory TEXT`: Use memories toolkit for \<name> or \<namespace>/\<name>
* `--memory-model TEXT`: Model name for memory LLM ingestion
* `--working-dir TEXT`: The default working directory for shell commands
* `--require-document-authoring / --no-require-document-authoring`: Enable document authoring  \[default: no-require-document-authoring]
* `--discovery`: Enable discovery of agents and tools
* `--llm-participant TEXT`: Delegate LLM interactions to a remote participant
* `--decision-model TEXT`: Model used for thread naming and other secondary LLM decisions
* `--transcription-model TEXT`: Realtime input audio transcription model.  \[default: gpt-realtime-whisper]
* `--voice TEXT`: Default OpenAI Realtime voice preset.
* `--turn-detection [none|automatic]`: OpenAI Realtime audio turn detection mode: none or automatic.  \[default: none]
* `--realtime-protocol TEXT`: Realtime connection protocol to advertise for OpenAI Realtime. Pass multiple times to set an ordered preference list.
* `--output-modality TEXT`: Restrict supported response output modalities to text or audio. Pass multiple times to allow multiple output modalities; omit to allow all.
* `--input-audio-format TEXT`: Realtime input audio MIME type.  \[default: audio/pcm]
* `--input-audio-sample-rate INTEGER`: Realtime input audio sample rate.  \[default: 24000]
* `--input-audio-bitrate INTEGER`: Realtime input audio bitrate.
* `--output-audio-format TEXT`: Realtime output audio MIME type.  \[default: audio/pcm]
* `--output-audio-sample-rate INTEGER`: Realtime output audio sample rate.  \[default: 24000]
* `--output-audio-bitrate INTEGER`: Realtime output audio bitrate.
* `--always-reply / --no-always-reply`: Always reply
* `--threading-mode [none|default-new]`: Threading mode for thread UIs. Use 'default-new' to show a new-thread composer before loading a thread.  \[default: default-new]
* `--thread-dir TEXT`: Thread directory for agent thread files. Defaults to /agents/\<agent-name>/threads for process agents when threading mode is enabled.
* `--thread-storage TEXT`: Thread storage backend for process agents. Can be repeated; the first value is the default. Defaults to dataset.
* `--context-management [auto|standalone|none]`: Context compaction mode for OpenAI Responses process agents: auto, standalone, or none.  \[default: auto]
* `--compaction-threshold INTEGER`: Token threshold for OpenAI Responses context compaction.
* `--max-output-tokens INTEGER`: Maximum output tokens to request from OpenAI Responses models.
* `--reasoning-effort TEXT`: Reasoning effort to request from OpenAI Responses models.
* `--channel TEXT`: Attach a channel to the agent process. Can be repeated. Currently supported: chat, mail:EMAIL\_ADDRESS\[?reply-all=true|false], memory, queue:QUEUE\_NAME, toolkit:NAME, command:EXECUTABLE, command:\["COMMAND","ARG"], websocket:PORT, websocket://HOST:PORT.
* `--skill-dir TEXT`: an agent skills directory
* `--shell-image TEXT`: an image tag to use to run shell commands in
* `--delegate-shell-token / --no-delegate-shell-token`: log all requests to the llm  \[default: no-delegate-shell-token]
* `--shell-copy-env TEXT`: Copy local env vars into shell tool env. Accepts comma-separated names and can be repeated.
* `--shell-set-env TEXT`: Set env vars in shell tool env as NAME=VALUE. Can be repeated.
* `--log-llm-requests / --no-log-llm-requests`: log all requests to the llm  \[default: no-log-llm-requests]
* `--project-id TEXT`: A MeshAgent project id. If empty, the activated project will be used.  \[default: (dynamic)]
* `--room TEXT`: The name of a room to create the service for
* `--help`: Show this message and exit.

### `meshagent process run`

Run a process-backed agent and wait for messages.

**Usage**:

```console theme={null}
$ meshagent process run [OPTIONS]
```

**Options**:

* `--project-id TEXT`: A MeshAgent project id. If empty, the activated project will be used.  \[default: (dynamic)]
* `--room TEXT`: Room name  \[default: (dynamic)]
* `--role TEXT`: \[default: agent]
* `--agent-name TEXT`: Name of the agent to call
* `-r, --rule TEXT`: a system rule
* `-rr, --room-rules TEXT`: a path to a rules file within the room that can be used to customize the agent's behavior
* `--rules-file TEXT`
* `--instructions TEXT`: a path in the configured storage toolkit to a rules file that will be loaded at runtime
* `--preamble-rule / --no-preamble-rule`: Include the default rule asking the model to send concise pre-tool preambles when no custom rules are configured.  \[default: preamble-rule]
* `-rt, --require-toolkit TEXT`: the name or url of a required toolkit
* `--tool-search [room|agent|none]`: Expose required toolkits through OpenAI Responses tool search. Use agent for statically configured non-OpenAI builtin tools, room for those plus annotated room toolkits, or none.  \[default: none]
* `-s, --schema TEXT`: the name or url of a required schema
* `--model TEXT`: Name of an LLM model to make available. Can be repeated.  \[default: gpt-5.6-sol]
* `--backend TEXT`: Process backend to make available. Can be repeated. Supported: llm, codex, chat.
* `--image-generation TEXT`: Name of an image gen model
* `--computer-use / --no-computer-use`: Enable computer use  \[default: no-computer-use]
* `--shell / --no-shell`: Enable function shell tool calling  \[default: no-shell]
* `--apply-patch / --no-apply-patch`: Enable apply patch tool  \[default: no-apply-patch]
* `--web-search / --no-web-search`: Enable web search tool calling  \[default: no-web-search]
* `--web-fetch / --no-web-fetch`: Enable web fetch tool calling  \[default: no-web-fetch]
* `--script-tool / --no-script-tool`: Enable script tool calling  \[default: no-script-tool]
* `--discover-script-tools / --no-discover-script-tools`: Automatically add script tools from the room  \[default: no-discover-script-tools]
* `--mcp / --no-mcp`: Enable mcp tool calling  \[default: no-mcp]
* `--storage / --no-storage`: Enable storage toolkit  \[default: no-storage]
* `--storage-tool-local-path TEXT`: Mount local path as \<source>:\<mount>\[:ro|rw]
* `--storage-tool-room-path TEXT`: Mount room path as \<source>:\<mount>\[:ro|rw]
* `--shell-room-mount TEXT`: Mount room storage as \<source>:\<mount>\[:ro|rw]
* `--shell-empty-dir-mount TEXT`: Mount empty dir at \<mount>\[:ro|rw]
* `--shell-tool-config-mount TEXT`: Mount meshagent runtime config files read-only into \<mount>
* `--starting-url TEXT`: Initial URL to open when starting a computer-use browser session
* `--allow-goto-url`: Expose the goto URL helper tool for computer use
* `--advanced-shell`: Enable the managed container toolkit with start/list/stop/run tools.
* `--dataset-namespace TEXT`: Use a specific dataset namespace
* `--table-read TEXT`: Enable table read tools for a specific table
* `--table-write TEXT`: Enable table write tools for a specific table
* `--read-only-storage`: Enable read only storage toolkit
* `--time / --no-time`: Enable time/datetime tools  \[default: time]
* `--uuid`: Enable UUID generation tools
* `--use-memory TEXT`: Use memories toolkit for \<name> or \<namespace>/\<name>
* `--memory-model TEXT`: Model name for memory LLM ingestion
* `--document-authoring`: Enable MeshDocument authoring
* `--discovery`: Enable discovery of agents and tools
* `--working-dir TEXT`: The default working directory for shell commands
* `--key TEXT`: an api key to sign the token with
* `--llm-participant TEXT`: Delegate LLM interactions to a remote participant
* `--decision-model TEXT`: Model used for thread naming and other secondary LLM decisions
* `--transcription-model TEXT`: Realtime input audio transcription model.  \[default: gpt-realtime-whisper]
* `--voice TEXT`: Default OpenAI Realtime voice preset.
* `--turn-detection [none|automatic]`: OpenAI Realtime audio turn detection mode: none or automatic.  \[default: none]
* `--realtime-protocol TEXT`: Realtime connection protocol to advertise for OpenAI Realtime. Pass multiple times to set an ordered preference list.
* `--output-modality TEXT`: Restrict supported response output modalities to text or audio. Pass multiple times to allow multiple output modalities; omit to allow all.
* `--input-audio-format TEXT`: Realtime input audio MIME type.  \[default: audio/pcm]
* `--input-audio-sample-rate INTEGER`: Realtime input audio sample rate.  \[default: 24000]
* `--input-audio-bitrate INTEGER`: Realtime input audio bitrate.
* `--output-audio-format TEXT`: Realtime output audio MIME type.  \[default: audio/pcm]
* `--output-audio-sample-rate INTEGER`: Realtime output audio sample rate.  \[default: 24000]
* `--output-audio-bitrate INTEGER`: Realtime output audio bitrate.
* `--always-reply / --no-always-reply`: Always reply
* `--threading-mode [none|default-new]`: Threading mode for thread UIs. Use 'default-new' to show a new-thread composer before loading a thread.  \[default: default-new]
* `--thread-dir TEXT`: Thread directory for agent thread files. Defaults to /agents/\<agent-name>/threads for process agents when threading mode is enabled.
* `--thread-storage TEXT`: Thread storage backend for process agents. Can be repeated; the first value is the default. Defaults to dataset with a room, or none with --no-room.
* `--context-management [auto|standalone|none]`: Context compaction mode for OpenAI Responses process agents: auto, standalone, or none.  \[default: auto]
* `--compaction-threshold INTEGER`: Token threshold for OpenAI Responses context compaction.
* `--max-output-tokens INTEGER`: Maximum output tokens to request from OpenAI Responses models.
* `--reasoning-effort TEXT`: Reasoning effort to request from OpenAI Responses models.
* `--channel TEXT`: Attach a channel to the agent process. Can be repeated. Currently supported: chat, mail:EMAIL\_ADDRESS\[?reply-all=true|false], memory, queue:QUEUE\_NAME, toolkit:NAME, command:EXECUTABLE, command:\["COMMAND","ARG"], websocket:PORT, websocket://HOST:PORT.
* `--skill-dir TEXT`: an agent skills directory
* `--shell-image TEXT`: an image tag to use to run shell commands in
* `--delegate-shell-token / --no-delegate-shell-token`: log all requests to the llm  \[default: no-delegate-shell-token]
* `--shell-copy-env TEXT`: Copy local env vars into shell tool env. Accepts comma-separated names and can be repeated.
* `--shell-set-env TEXT`: Set env vars in shell tool env as NAME=VALUE. Can be repeated.
* `--log-llm-requests / --no-log-llm-requests`: log all requests to the llm  \[default: no-log-llm-requests]
* `--verbose`: Enable verbose logging and disable default log suppression
* `--profile`: Print OpenTelemetry span timings for process startup and turns.
* `--verbose-dataset`: Persist streaming delta events to dataset thread storage for debugging
* `--save-audio-input`: Persist realtime audio input chunks to dataset thread storage as binary attachments.
* `--no-room`: Run locally without connecting to a room. Fails if room-backed storage, channels, or tools are configured.
* `--websocket-auth [iap|jwt|none]`: Authentication mode for websocket channels: jwt, iap, or none.  \[default: jwt]
* `--user TEXT`: User name for the local websocket process run client.  \[default: you]
* `--thread-id TEXT`: Thread id to open
* `--message TEXT`: the input message to use
* `--use-web-search / --no-use-web-search`: request the web search tool
* `--use-image-gen / --no-use-image-gen`: request the image gen tool
* `--use-storage / --no-use-storage`: request the storage tool
* `--help`: Show this message and exit.

### `meshagent process threads`

List threads for a process-backed agent.

**Usage**:

```console theme={null}
$ meshagent process threads [OPTIONS]
```

**Options**:

* `--project-id TEXT`: A MeshAgent project id. If empty, the activated project will be used.  \[default: (dynamic)]
* `--room TEXT`: Room name  \[default: (dynamic)]
* `--agent-name TEXT`: Name of the agent to list threads for
* `--thread-dir TEXT`: Thread directory for agent thread files. Defaults to /agents/\<agent-name>/threads for process agents when threading mode is enabled.
* `--thread-storage TEXT`: Thread storage backend for process agents. Can be repeated; the first value is the default. Defaults to dataset.
* `--limit INTEGER`: Maximum threads to show  \[default: 20]
* `--offset INTEGER`: Thread list offset  \[default: 0]
* `-o, --output [json|table|text]`: Output format: json, table, or text.  \[default: text]
* `--help`: Show this message and exit.

### `meshagent process messages`

List messages in a process-backed agent thread.

**Usage**:

```console theme={null}
$ meshagent process messages [OPTIONS]
```

**Options**:

* `--project-id TEXT`: A MeshAgent project id. If empty, the activated project will be used.  \[default: (dynamic)]
* `--room TEXT`: Room name  \[default: (dynamic)]
* `--agent-name TEXT`: Name of the agent to inspect
* `--thread-dir TEXT`: Thread directory for agent thread files. Defaults to /agents/\<agent-name>/threads for process agents when threading mode is enabled.
* `--thread-storage TEXT`: Thread storage backend for process agents. Can be repeated; the first value is the default. Defaults to dataset.
* `--thread-id TEXT`: Thread id to inspect  \[required]
* `-o, --output [json|table|text]`: Output format: json, table, or text.  \[default: text]
* `--help`: Show this message and exit.

### `meshagent process grep`

Search coalesced messages in a process-backed agent thread.

**Usage**:

```console theme={null}
$ meshagent process grep [OPTIONS] PATTERN
```

**Arguments**:

* `PATTERN`: Regex pattern to search for  \[required]

**Options**:

* `--project-id TEXT`: A MeshAgent project id. If empty, the activated project will be used.  \[default: (dynamic)]
* `--room TEXT`: Room name  \[default: (dynamic)]
* `--thread-id TEXT`: Thread id to inspect  \[required]
* `-o, --output [json|table|text]`: Output format: json, table, or text.  \[default: text]
* `--help`: Show this message and exit.

### `meshagent process use`

Send a one-shot or interactive message to a running process-backed agent.

**Usage**:

```console theme={null}
$ meshagent process use [OPTIONS]
```

**Options**:

* `--project-id TEXT`: A MeshAgent project id. If empty, the activated project will be used.  \[default: (dynamic)]
* `--room TEXT`: Room name  \[default: (dynamic)]
* `--agent-name TEXT`: Name of the agent to call
* `--thread-id TEXT`: Thread id to open
* `--message TEXT`: the input message to use
* `--websocket-url TEXT`: Connect to a process websocket channel instead of room chat.
* `--websocket-auth [iap|jwt|none]`: Authentication mode for --websocket-url: jwt, iap, or none.  \[default: iap]
* `--user TEXT`: User name for the websocket process use client.  \[default: you]
* `--help`: Show this message and exit.

## `meshagent room`

Operate within a room

**Usage**:

```console theme={null}
$ meshagent room [OPTIONS] COMMAND [ARGS]...
```

**Options**:

* `--install-completion`: Install completion for the current shell.
* `--show-completion`: Show completion for the current shell, to copy it or customize the installation.
* `--help`: Show this message and exit.

**Commands**:

* `agents`: Interact with agents and toolkits in a room
* `queue`: Use queues in a room
* `messaging`: Send and receive messages in a room
* `storage`: Manage storage for a room
* `service`: Manage services inside a room
* `developer`: Stream developer logs from a room
* `dataset`: Manage dataset tables in a room
* `sqlite`: Manage SQLite databases and tables in a room
* `memory`: Manage room memories
* `container`: Manage containers and images inside a room
* `sync`: Inspect and update mesh documents in a room
* `connect`: Connect to a room and run a local command...

### `meshagent room agents`

Interact with agents and toolkits in a room

**Usage**:

```console theme={null}
$ meshagent room agents [OPTIONS] COMMAND [ARGS]...
```

**Options**:

* `--install-completion`: Install completion for the current shell.
* `--show-completion`: Show completion for the current shell, to copy it or customize the installation.
* `--help`: Show this message and exit.

**Commands**:

* `call`: Trigger agent/tool calls in a room
* `invoke-tool`: Invoke a specific tool from a toolkit
* `list-toolkits`: List toolkits (and tools) available in the...

#### `meshagent room agents call`

Trigger agent/tool calls in a room

**Usage**:

```console theme={null}
$ meshagent room agents call [OPTIONS] COMMAND [ARGS]...
```

**Options**:

* `--install-completion`: Install completion for the current shell.
* `--show-completion`: Show completion for the current shell, to copy it or customize the installation.
* `--help`: Show this message and exit.

**Commands**:

* `tool`: Send a call request to a tool webhook URL
* `agent`: Send a call request to an agent webhook URL
* `toolkit`: Send a call request to a toolkit webhook URL
* `schema`: Send a call request to a schema webhook URL

##### `meshagent room agents call tool`

Send a call request to a tool webhook URL

**Usage**:

```console theme={null}
$ meshagent room agents call tool [OPTIONS]
```

**Options**:

* `--project-id TEXT`: A MeshAgent project id. If empty, the activated project will be used.  \[default: (dynamic)]
* `--room TEXT`: Room name  \[default: (dynamic)]
* `--role TEXT`: \[default: agent]
* `--local / --no-local`
* `--participant-name TEXT`: the participant name to be used by the callee
* `--url TEXT`: URL the agent should call  \[required]
* `--arguments TEXT`: JSON string with arguments for the call  \[default: \{}]
* `-p, --permissions TEXT`: File path to a token definition, if not specified default agent permissions will be used
* `--key TEXT`: an api key to sign the token with
* `--help`: Show this message and exit.

##### `meshagent room agents call agent`

Send a call request to an agent webhook URL

**Usage**:

```console theme={null}
$ meshagent room agents call agent [OPTIONS]
```

**Options**:

* `--project-id TEXT`: A MeshAgent project id. If empty, the activated project will be used.  \[default: (dynamic)]
* `--room TEXT`: Room name  \[default: (dynamic)]
* `--role TEXT`: \[default: agent]
* `--local / --no-local`
* `--participant-name TEXT`: the participant name to be used by the callee
* `--url TEXT`: URL the agent should call  \[required]
* `--arguments TEXT`: JSON string with arguments for the call  \[default: \{}]
* `-p, --permissions TEXT`: File path to a token definition, if not specified default agent permissions will be used
* `--key TEXT`: an api key to sign the token with
* `--help`: Show this message and exit.

##### `meshagent room agents call toolkit`

Send a call request to a toolkit webhook URL

**Usage**:

```console theme={null}
$ meshagent room agents call toolkit [OPTIONS]
```

**Options**:

* `--project-id TEXT`: A MeshAgent project id. If empty, the activated project will be used.  \[default: (dynamic)]
* `--room TEXT`: Room name  \[default: (dynamic)]
* `--role TEXT`: \[default: agent]
* `--local / --no-local`
* `--participant-name TEXT`: the participant name to be used by the callee
* `--url TEXT`: URL the agent should call  \[required]
* `--arguments TEXT`: JSON string with arguments for the call  \[default: \{}]
* `-p, --permissions TEXT`: File path to a token definition, if not specified default agent permissions will be used
* `--key TEXT`: an api key to sign the token with
* `--help`: Show this message and exit.

##### `meshagent room agents call schema`

Send a call request to a schema webhook URL

**Usage**:

```console theme={null}
$ meshagent room agents call schema [OPTIONS]
```

**Options**:

* `--project-id TEXT`: A MeshAgent project id. If empty, the activated project will be used.  \[default: (dynamic)]
* `--room TEXT`: Room name  \[default: (dynamic)]
* `--role TEXT`: \[default: agent]
* `--local / --no-local`
* `--participant-name TEXT`: the participant name to be used by the callee
* `--url TEXT`: URL the agent should call  \[required]
* `--arguments TEXT`: JSON string with arguments for the call  \[default: \{}]
* `-p, --permissions TEXT`: File path to a token definition, if not specified default agent permissions will be used
* `--key TEXT`: an api key to sign the token with
* `--help`: Show this message and exit.

#### `meshagent room agents invoke-tool`

Invoke a specific tool from a toolkit

**Usage**:

```console theme={null}
$ meshagent room agents invoke-tool [OPTIONS]
```

**Options**:

* `--project-id TEXT`: A MeshAgent project id. If empty, the activated project will be used.  \[default: (dynamic)]
* `--room TEXT`: Room name  \[default: (dynamic)]
* `--toolkit TEXT`: Toolkit name  \[required]
* `--tool TEXT`: Tool name  \[required]
* `--arguments TEXT`: JSON string with arguments for the tool  \[required]
* `--participant-id TEXT`: Optional participant ID to invoke the tool on
* `--on-behalf-of-id TEXT`: Optional 'on\_behalf\_of' participant ID
* `--timeout INTEGER`: How long to wait for the toolkit if the toolkit is not in the room  \[default: 30]
* `--help`: Show this message and exit.

#### `meshagent room agents list-toolkits`

List toolkits (and tools) available in the room

**Usage**:

```console theme={null}
$ meshagent room agents list-toolkits [OPTIONS]
```

**Options**:

* `--project-id TEXT`: A MeshAgent project id. If empty, the activated project will be used.  \[default: (dynamic)]
* `--room TEXT`: Room name  \[default: (dynamic)]
* `--role TEXT`: \[default: user]
* `--participant-id TEXT`: Optional participant ID
* `--help`: Show this message and exit.

### `meshagent room queue`

Use queues in a room

**Usage**:

```console theme={null}
$ meshagent room queue [OPTIONS] COMMAND [ARGS]...
```

**Options**:

* `--install-completion`: Install completion for the current shell.
* `--show-completion`: Show completion for the current shell, to copy it or customize the installation.
* `--help`: Show this message and exit.

**Commands**:

* `list`: List queues in a room.
* `send`: Send a JSON message to a room queue.
* `send-mail`: Create an email message and send it to a...
* `receive`: Receive a message from a room queue.
* `size`: Show the current size of a room queue.

#### `meshagent room queue list`

List queues in a room.

**Usage**:

```console theme={null}
$ meshagent room queue list [OPTIONS]
```

**Options**:

* `--project-id TEXT`: A MeshAgent project id. If empty, the activated project will be used.  \[default: (dynamic)]
* `--room TEXT`: Room name  \[default: (dynamic)]
* `-o, --output TEXT`: output format   \[default: table]
* `--help`: Show this message and exit.

#### `meshagent room queue send`

Send a JSON message to a room queue.

**Usage**:

```console theme={null}
$ meshagent room queue send [OPTIONS]
```

**Options**:

* `--project-id TEXT`: A MeshAgent project id. If empty, the activated project will be used.  \[default: (dynamic)]
* `--room TEXT`: Room name  \[default: (dynamic)]
* `--queue TEXT`: Queue name  \[required]
* `--json TEXT`: a JSON message to send to the queue  \[required]
* `-f, --file TEXT`: File path to a JSON file
* `--help`: Show this message and exit.

#### `meshagent room queue send-mail`

Create an email message and send it to a room queue.

**Usage**:

```console theme={null}
$ meshagent room queue send-mail [OPTIONS]
```

**Options**:

* `--project-id TEXT`: A MeshAgent project id. If empty, the activated project will be used.  \[default: (dynamic)]
* `--room TEXT`: Room name  \[default: (dynamic)]
* `--queue TEXT`: Queue name  \[required]
* `--subject TEXT`: Email subject  \[required]
* `--body TEXT`: Email body
* `--from TEXT`: Sender email address  \[required]
* `--attachment TEXT`: Attachment file path. May be provided multiple times.
* `--help`: Show this message and exit.

#### `meshagent room queue receive`

Receive a message from a room queue.

**Usage**:

```console theme={null}
$ meshagent room queue receive [OPTIONS]
```

**Options**:

* `--project-id TEXT`: A MeshAgent project id. If empty, the activated project will be used.  \[default: (dynamic)]
* `--room TEXT`: Room name  \[default: (dynamic)]
* `--queue TEXT`: Queue name  \[required]
* `--help`: Show this message and exit.

#### `meshagent room queue size`

Show the current size of a room queue.

**Usage**:

```console theme={null}
$ meshagent room queue size [OPTIONS]
```

**Options**:

* `--project-id TEXT`: A MeshAgent project id. If empty, the activated project will be used.  \[default: (dynamic)]
* `--room TEXT`: Room name  \[default: (dynamic)]
* `--queue TEXT`: Queue name  \[required]
* `--help`: Show this message and exit.

### `meshagent room messaging`

Send and receive messages in a room

**Usage**:

```console theme={null}
$ meshagent room messaging [OPTIONS] COMMAND [ARGS]...
```

**Options**:

* `--install-completion`: Install completion for the current shell.
* `--show-completion`: Show completion for the current shell, to copy it or customize the installation.
* `--help`: Show this message and exit.

**Commands**:

* `list`: List messaging-enabled participants
* `send`: Send a direct message to a participant
* `broadcast`: Broadcast a message to all participants

#### `meshagent room messaging list`

List messaging-enabled participants

**Usage**:

```console theme={null}
$ meshagent room messaging list [OPTIONS]
```

**Options**:

* `--project-id TEXT`: A MeshAgent project id. If empty, the activated project will be used.  \[default: (dynamic)]
* `--room TEXT`: Room name  \[default: (dynamic)]
* `--help`: Show this message and exit.

#### `meshagent room messaging send`

Send a direct message to a participant

**Usage**:

```console theme={null}
$ meshagent room messaging send [OPTIONS]
```

**Options**:

* `--project-id TEXT`: A MeshAgent project id. If empty, the activated project will be used.  \[default: (dynamic)]
* `--room TEXT`: Room name  \[default: (dynamic)]
* `--to-participant-id TEXT`: Participant ID to send a message to  \[required]
* `--type TEXT`: type of the message to send  \[required]
* `--data TEXT`: JSON message to send  \[required]
* `--help`: Show this message and exit.

#### `meshagent room messaging broadcast`

Broadcast a message to all participants

**Usage**:

```console theme={null}
$ meshagent room messaging broadcast [OPTIONS]
```

**Options**:

* `--project-id TEXT`: A MeshAgent project id. If empty, the activated project will be used.  \[default: (dynamic)]
* `--room TEXT`: Room name  \[default: (dynamic)]
* `--data TEXT`: JSON message to broadcast  \[required]
* `--help`: Show this message and exit.

### `meshagent room storage`

Manage storage for a room

**Usage**:

```console theme={null}
$ meshagent room storage [OPTIONS] COMMAND [ARGS]...
```

**Options**:

* `--install-completion`: Install completion for the current shell.
* `--show-completion`: Show completion for the current shell, to copy it or customize the installation.
* `--help`: Show this message and exit.

**Commands**:

* `exists`: Check whether a path exists in room storage.
* `cp`: Copy files between local paths and room...
* `get`: Print file contents from local disk or...
* `rm`: Remove files or directories from local...
* `ls`: List files and directories locally or in...

#### `meshagent room storage exists`

Check whether a path exists in room storage.

**Usage**:

```console theme={null}
$ meshagent room storage exists [OPTIONS] PATH
```

**Arguments**:

* `PATH`: \[required]

**Options**:

* `--project-id TEXT`: A MeshAgent project id. If empty, the activated project will be used.  \[default: (dynamic)]
* `--room TEXT`: Room name  \[default: (dynamic)]
* `--help`: Show this message and exit.

#### `meshagent room storage cp`

Copy files between local paths and room storage.

**Usage**:

```console theme={null}
$ meshagent room storage cp [OPTIONS] SOURCE_PATH DEST_PATH
```

**Arguments**:

* `SOURCE_PATH`: \[required]
* `DEST_PATH`: \[required]

**Options**:

* `--project-id TEXT`: A MeshAgent project id. If empty, the activated project will be used.  \[default: (dynamic)]
* `--room TEXT`: Room name  \[default: (dynamic)]
* `--help`: Show this message and exit.

#### `meshagent room storage get`

Print file contents from local disk or room storage.

**Usage**:

```console theme={null}
$ meshagent room storage get [OPTIONS] PATH
```

**Arguments**:

* `PATH`: \[required]

**Options**:

* `--project-id TEXT`: A MeshAgent project id. If empty, the activated project will be used.  \[default: (dynamic)]
* `--room TEXT`: Room name  \[default: (dynamic)]
* `--encoding TEXT`: Text encoding  \[default: utf-8]
* `--help`: Show this message and exit.

#### `meshagent room storage rm`

Remove files or directories from local disk or room storage.

**Usage**:

```console theme={null}
$ meshagent room storage rm [OPTIONS] PATH
```

**Arguments**:

* `PATH`: \[required]

**Options**:

* `--project-id TEXT`: A MeshAgent project id. If empty, the activated project will be used.  \[default: (dynamic)]
* `--room TEXT`: Room name  \[default: (dynamic)]
* `-r`: Remove directories/folders recursively
* `--help`: Show this message and exit.

#### `meshagent room storage ls`

List files and directories locally or in room storage.

**Usage**:

```console theme={null}
$ meshagent room storage ls [OPTIONS] PATH
```

**Arguments**:

* `PATH`: Path to list (local or room://...)  \[required]

**Options**:

* `--project-id TEXT`: A MeshAgent project id. If empty, the activated project will be used.  \[default: (dynamic)]
* `--room TEXT`: Room name  \[default: (dynamic)]
* `-r`: List subfolders/files recursively
* `--help`: Show this message and exit.

### `meshagent room service`

Manage services inside a room

**Usage**:

```console theme={null}
$ meshagent room service [OPTIONS] COMMAND [ARGS]...
```

**Options**:

* `--install-completion`: Install completion for the current shell.
* `--show-completion`: Show completion for the current shell, to copy it or customize the installation.
* `--help`: Show this message and exit.

**Commands**:

* `list`: List services running in a room
* `describe`: Show service runtime state and lifecycle...
* `restart`: Restart a running room service by stopping...

#### `meshagent room service list`

List services running in a room

**Usage**:

```console theme={null}
$ meshagent room service list [OPTIONS]
```

**Options**:

* `--project-id TEXT`: A MeshAgent project id. If empty, the activated project will be used.  \[default: (dynamic)]
* `--room TEXT`: Room name  \[default: (dynamic)]
* `-o, --output TEXT`: output format   \[default: table]
* `--help`: Show this message and exit.

#### `meshagent room service describe`

Show service runtime state and lifecycle events for troubleshooting.

**Usage**:

```console theme={null}
$ meshagent room service describe [OPTIONS]
```

**Options**:

* `--project-id TEXT`: A MeshAgent project id. If empty, the activated project will be used.  \[default: (dynamic)]
* `--room TEXT`: Room name  \[default: (dynamic)]
* `--id TEXT`: Service ID to describe
* `--name TEXT`: Service name to describe
* `-o, --output TEXT`: output format   \[default: table]
* `--help`: Show this message and exit.

#### `meshagent room service restart`

Restart a running room service by stopping its current container.

**Usage**:

```console theme={null}
$ meshagent room service restart [OPTIONS]
```

**Options**:

* `--project-id TEXT`: A MeshAgent project id. If empty, the activated project will be used.  \[default: (dynamic)]
* `--room TEXT`: Room name  \[default: (dynamic)]
* `--id TEXT`: Service ID to restart
* `--name TEXT`: Service name to restart
* `--help`: Show this message and exit.

### `meshagent room developer`

Stream developer logs from a room

**Usage**:

```console theme={null}
$ meshagent room developer [OPTIONS]
```

**Options**:

* `--project-id TEXT`: A MeshAgent project id. If empty, the activated project will be used.  \[default: (dynamic)]
* `--room TEXT`: Room name  \[default: (dynamic)]
* `--format [plain|json]`: Output format  \[default: plain]
* `--install-completion`: Install completion for the current shell.
* `--show-completion`: Show completion for the current shell, to copy it or customize the installation.
* `--help`: Show this message and exit.

### `meshagent room dataset`

Manage dataset tables in a room

**Usage**:

```console theme={null}
$ meshagent room dataset [OPTIONS] COMMAND [ARGS]...
```

**Options**:

* `--install-completion`: Install completion for the current shell.
* `--show-completion`: Show completion for the current shell, to copy it or customize the installation.
* `--help`: Show this message and exit.

**Commands**:

* `branch`: Manage dataset branches in a room namespace.
* `table`: List dataset tables in a room.
* `inspect`: Inspect a table schema in a room dataset.
* `install`: Install required tables from a...
* `create`: Create a room dataset table with optional...
* `import`: Import a local Arrow, CSV, TSV, Parquet,...
* `drop`: Drop a room dataset table.
* `add-columns`: Add columns to a room dataset table.
* `drop-columns`: Drop columns from a room dataset table.
* `insert`: Insert records into a room dataset table.
* `merge`: Upsert records into a room dataset table.
* `update`: Update rows in a room dataset table.
* `delete`: Delete rows from a room dataset table.
* `search`: Search rows in a room dataset table.
* `sql`: Execute SQL against room dataset tables.
* `optimize`: Optimize a room dataset table.
* `stats`: Show statistics for a room dataset table.
* `version`: List versions for a room dataset table.
* `restore`: Restore a room dataset table to a specific...
* `index`: List indexes on a room dataset table.
* `index-create`: Create an index on a room dataset table.
* `index-drop`: Drop an index from a room dataset table.

#### `meshagent room dataset branch`

Manage dataset branches in a room namespace.

**Usage**:

```console theme={null}
$ meshagent room dataset branch [OPTIONS] COMMAND [ARGS]...
```

**Options**:

* `--help`: Show this message and exit.

**Commands**:

* `list`: List dataset branches in a room namespace.
* `get`: Get a dataset branch.
* `create`: Create a dataset branch.
* `delete`: Delete a dataset branch.

##### `meshagent room dataset branch list`

List dataset branches in a room namespace.

**Usage**:

```console theme={null}
$ meshagent room dataset branch list [OPTIONS]
```

**Options**:

* `--project-id TEXT`: A MeshAgent project id. If empty, the activated project will be used.  \[default: (dynamic)]
* `--room TEXT`: Room name  \[default: (dynamic)]
* `-n, --namespace TEXT`: Namespace path segments (repeatable). Example: -n prod -n analytics
* `--pretty / --no-pretty`: Pretty-print JSON  \[default: pretty]
* `--help`: Show this message and exit.

##### `meshagent room dataset branch get`

Get a dataset branch.

**Usage**:

```console theme={null}
$ meshagent room dataset branch get [OPTIONS]
```

**Options**:

* `--project-id TEXT`: A MeshAgent project id. If empty, the activated project will be used.  \[default: (dynamic)]
* `--room TEXT`: Room name  \[default: (dynamic)]
* `--branch TEXT`: Branch name  \[required]
* `-n, --namespace TEXT`: Namespace path segments (repeatable). Example: -n prod -n analytics
* `--pretty / --no-pretty`: Pretty-print JSON  \[default: pretty]
* `--help`: Show this message and exit.

##### `meshagent room dataset branch create`

Create a dataset branch.

**Usage**:

```console theme={null}
$ meshagent room dataset branch create [OPTIONS]
```

**Options**:

* `--project-id TEXT`: A MeshAgent project id. If empty, the activated project will be used.  \[default: (dynamic)]
* `--room TEXT`: Room name  \[default: (dynamic)]
* `--branch TEXT`: New branch name  \[required]
* `--from-branch TEXT`: Source branch to branch from
* `-n, --namespace TEXT`: Namespace path segments (repeatable). Example: -n prod -n analytics
* `--help`: Show this message and exit.

##### `meshagent room dataset branch delete`

Delete a dataset branch.

**Usage**:

```console theme={null}
$ meshagent room dataset branch delete [OPTIONS]
```

**Options**:

* `--project-id TEXT`: A MeshAgent project id. If empty, the activated project will be used.  \[default: (dynamic)]
* `--room TEXT`: Room name  \[default: (dynamic)]
* `--branch TEXT`: Branch name  \[required]
* `-n, --namespace TEXT`: Namespace path segments (repeatable). Example: -n prod -n analytics
* `--help`: Show this message and exit.

#### `meshagent room dataset table`

List dataset tables in a room.

**Usage**:

```console theme={null}
$ meshagent room dataset table [OPTIONS]
```

**Options**:

* `--project-id TEXT`: A MeshAgent project id. If empty, the activated project will be used.  \[default: (dynamic)]
* `--room TEXT`: Room name  \[default: (dynamic)]
* `-n, --namespace TEXT`: Namespace path segments (repeatable). Example: -n prod -n analytics
* `--branch TEXT`: Dataset branch name (defaults to main)
* `--help`: Show this message and exit.

#### `meshagent room dataset inspect`

Inspect a table schema in a room dataset.

**Usage**:

```console theme={null}
$ meshagent room dataset inspect [OPTIONS]
```

**Options**:

* `--project-id TEXT`: A MeshAgent project id. If empty, the activated project will be used.  \[default: (dynamic)]
* `--room TEXT`: Room name  \[default: (dynamic)]
* `-t, --table TEXT`: Table name  \[required]
* `-n, --namespace TEXT`: Namespace path segments (repeatable). Example: -n prod -n analytics
* `--branch TEXT`: Dataset branch name (defaults to main)
* `-v, --version INTEGER`: Historical table version to read (defaults to latest on the branch)
* `--json`: Output raw schema JSON
* `--help`: Show this message and exit.

#### `meshagent room dataset install`

Install required tables from a requirements JSON file.

**Usage**:

```console theme={null}
$ meshagent room dataset install [OPTIONS]
```

**Options**:

* `--project-id TEXT`: A MeshAgent project id. If empty, the activated project will be used.  \[default: (dynamic)]
* `--room TEXT`: Room name  \[default: (dynamic)]
* `--file TEXT`: Path to requirements JSON file
* `--help`: Show this message and exit.

#### `meshagent room dataset create`

Create a room dataset table with optional Arrow schema and seed data.

**Usage**:

```console theme={null}
$ meshagent room dataset create [OPTIONS]
```

**Options**:

* `--project-id TEXT`: A MeshAgent project id. If empty, the activated project will be used.  \[default: (dynamic)]
* `--room TEXT`: Room name  \[default: (dynamic)]
* `-t, --table TEXT`: Table name  \[required]
* `--mode TEXT`: create | overwrite | create\_if\_not\_exists  \[default: create]
* `-n, --namespace TEXT`: Namespace path segments (repeatable). Example: -n prod -n analytics
* `--branch TEXT`: Dataset branch name (defaults to main)
* `-c, --columns TEXT`: Comma-separated column definitions. Example: "names vector(20) null, tags list(text), meta struct(owner text, score float)". CLI shorthand types: int, bool, date, timestamp, float, text, json, uuid, binary, vector, list, struct. Vector syntax: vector(size\[, element\_type]). List syntax: list(element\_type). Struct syntax: struct(field\_name type\[, ...]).
* `--data-json TEXT`: Initial rows (JSON list)
* `--data-file TEXT`: Path to JSON file with initial rows
* `--help`: Show this message and exit.

#### `meshagent room dataset import`

Import a local Arrow, CSV, TSV, Parquet, JSON, or Excel file into a table.

**Usage**:

```console theme={null}
$ meshagent room dataset import [OPTIONS]
```

**Options**:

* `--project-id TEXT`: A MeshAgent project id. If empty, the activated project will be used.  \[default: (dynamic)]
* `--room TEXT`: Room name  \[default: (dynamic)]
* `-t, --table TEXT`: Table name  \[required]
* `-f, --file TEXT`: Local file to import  \[required]
* `--mode TEXT`: Import mode: create, replace, merge  \[default: create]
* `--format TEXT`: Input format: auto, json, arrow, csv, tsv, parquet, excel  \[default: auto]
* `--on TEXT`: Column to match when --mode merge
* `--sheet TEXT`: Excel worksheet name for --format excel
* `--batch-size INTEGER`: Rows per imported batch for Parquet, JSON, and Excel  \[default: 8192]
* `-n, --namespace TEXT`: Namespace path segments (repeatable). Example: -n prod -n analytics
* `--branch TEXT`: Dataset branch name (defaults to main)
* `--help`: Show this message and exit.

#### `meshagent room dataset drop`

Drop a room dataset table.

**Usage**:

```console theme={null}
$ meshagent room dataset drop [OPTIONS]
```

**Options**:

* `--project-id TEXT`: A MeshAgent project id. If empty, the activated project will be used.  \[default: (dynamic)]
* `--room TEXT`: Room name  \[default: (dynamic)]
* `-t, --table TEXT`: Table name  \[required]
* `-n, --namespace TEXT`: Namespace path segments (repeatable). Example: -n prod -n analytics
* `--branch TEXT`: Dataset branch name (defaults to main)
* `--ignore-missing`: Ignore missing table
* `--help`: Show this message and exit.

#### `meshagent room dataset add-columns`

Add columns to a room dataset table.

**Usage**:

```console theme={null}
$ meshagent room dataset add-columns [OPTIONS]
```

**Options**:

* `--project-id TEXT`: A MeshAgent project id. If empty, the activated project will be used.  \[default: (dynamic)]
* `--room TEXT`: Room name  \[default: (dynamic)]
* `-t, --table TEXT`: Table name  \[required]
* `-n, --namespace TEXT`: Namespace path segments (repeatable). Example: -n prod -n analytics
* `--branch TEXT`: Dataset branch name (defaults to main)
* `-c, --columns TEXT`: Comma-separated column definitions. Example: "names vector(20) null, tags list(text), meta struct(owner text, score float)". CLI shorthand types: int, bool, date, timestamp, float, text, json, uuid, binary, vector, list, struct. Vector syntax: vector(size\[, element\_type]). List syntax: list(element\_type). Struct syntax: struct(field\_name type\[, ...]).
* `--columns-json TEXT`: JSON object of new columns mapped to SQL default expressions (e.g. '\{"created\_at":"now()"}').
* `--help`: Show this message and exit.

#### `meshagent room dataset drop-columns`

Drop columns from a room dataset table.

**Usage**:

```console theme={null}
$ meshagent room dataset drop-columns [OPTIONS]
```

**Options**:

* `--project-id TEXT`: A MeshAgent project id. If empty, the activated project will be used.  \[default: (dynamic)]
* `--room TEXT`: Room name  \[default: (dynamic)]
* `-t, --table TEXT`: Table name  \[required]
* `-n, --namespace TEXT`: Namespace path segments (repeatable). Example: -n prod -n analytics
* `--branch TEXT`: Dataset branch name (defaults to main)
* `-c, --column TEXT`: Column to drop (repeatable)
* `--help`: Show this message and exit.

#### `meshagent room dataset insert`

Insert records into a room dataset table.

**Usage**:

```console theme={null}
$ meshagent room dataset insert [OPTIONS]
```

**Options**:

* `--project-id TEXT`: A MeshAgent project id. If empty, the activated project will be used.  \[default: (dynamic)]
* `--room TEXT`: Room name  \[default: (dynamic)]
* `-t, --table TEXT`: Table name  \[required]
* `-n, --namespace TEXT`: Namespace path segments (repeatable). Example: -n prod -n analytics
* `--branch TEXT`: Dataset branch name (defaults to main)
* `--json TEXT`: JSON list of records
* `-f, --file TEXT`: Path to JSON file (list of records)
* `--help`: Show this message and exit.

#### `meshagent room dataset merge`

Upsert records into a room dataset table.

**Usage**:

```console theme={null}
$ meshagent room dataset merge [OPTIONS]
```

**Options**:

* `--project-id TEXT`: A MeshAgent project id. If empty, the activated project will be used.  \[default: (dynamic)]
* `--room TEXT`: Room name  \[default: (dynamic)]
* `-t, --table TEXT`: Table name  \[required]
* `--on TEXT`: Column to match for upsert  \[required]
* `-n, --namespace TEXT`: Namespace path segments (repeatable). Example: -n prod -n analytics
* `--branch TEXT`: Dataset branch name (defaults to main)
* `--json TEXT`: JSON records (list)
* `-f, --file TEXT`: Path to JSON file (list)
* `--help`: Show this message and exit.

#### `meshagent room dataset update`

Update rows in a room dataset table.

**Usage**:

```console theme={null}
$ meshagent room dataset update [OPTIONS]
```

**Options**:

* `--project-id TEXT`: A MeshAgent project id. If empty, the activated project will be used.  \[default: (dynamic)]
* `--room TEXT`: Room name  \[default: (dynamic)]
* `-t, --table TEXT`: Table name  \[required]
* `--where TEXT`: SQL WHERE clause, e.g. "id = 1"  \[required]
* `-n, --namespace TEXT`: Namespace path segments (repeatable). Example: -n prod -n analytics
* `--branch TEXT`: Dataset branch name (defaults to main)
* `--values-json TEXT`: JSON object of update values; use \{"column":\{"expression":"..."}} for expressions  \[required]
* `--help`: Show this message and exit.

#### `meshagent room dataset delete`

Delete rows from a room dataset table.

**Usage**:

```console theme={null}
$ meshagent room dataset delete [OPTIONS]
```

**Options**:

* `--project-id TEXT`: A MeshAgent project id. If empty, the activated project will be used.  \[default: (dynamic)]
* `--room TEXT`: Room name  \[default: (dynamic)]
* `-t, --table TEXT`: Table name  \[required]
* `--where TEXT`: SQL WHERE clause  \[required]
* `-n, --namespace TEXT`: Namespace path segments (repeatable). Example: -n prod -n analytics
* `--branch TEXT`: Dataset branch name (defaults to main)
* `--help`: Show this message and exit.

#### `meshagent room dataset search`

Search rows in a room dataset table.

**Usage**:

```console theme={null}
$ meshagent room dataset search [OPTIONS]
```

**Options**:

* `--project-id TEXT`: A MeshAgent project id. If empty, the activated project will be used.  \[default: (dynamic)]
* `--room TEXT`: Room name  \[default: (dynamic)]
* `-t, --table TEXT`: Table name  \[required]
* `-n, --namespace TEXT`: Namespace path segments (repeatable). Example: -n prod -n analytics
* `--branch TEXT`: Dataset branch name (defaults to main)
* `-v, --version INTEGER`: Historical table version to read (defaults to latest on the branch)
* `--text TEXT`: Full-text query
* `--vector-json TEXT`: Vector JSON array
* `--where TEXT`: SQL WHERE clause
* `--where-json TEXT`: JSON object converted to equality ANDs
* `--select TEXT`: Columns to select (repeatable)
* `--limit INTEGER`: Max rows to return
* `--offset INTEGER`: Rows to skip
* `--pretty / --no-pretty`: Pretty-print JSON  \[default: pretty]
* `--help`: Show this message and exit.

#### `meshagent room dataset sql`

Execute SQL against room dataset tables.

**Usage**:

```console theme={null}
$ meshagent room dataset sql [OPTIONS]
```

**Options**:

* `--project-id TEXT`: A MeshAgent project id. If empty, the activated project will be used.  \[default: (dynamic)]
* `--room TEXT`: Room name  \[default: (dynamic)]
* `-q, --query TEXT`: SQL query to execute  \[required]
* `-t, --table TEXT`: Table name to register in SQL context (repeatable)
* `-n, --namespace TEXT`: Namespace path segments (repeatable). Example: -n prod -n analytics
* `--tables-json TEXT`: JSON array of table refs (e.g. '\[\{"name":"users","alias":"u","namespace":\["prod"]}]')
* `--tables-file TEXT`: Path/URL to JSON array of table refs (same format as --tables-json)
* `--params-json TEXT`: JSON object of SQL parameters for DataFusion param binding
* `--params-file TEXT`: Path/URL to JSON object of SQL parameters
* `--branch TEXT`: Dataset branch name (defaults to main)
* `-v, --version INTEGER`: Historical table version to read (defaults to latest on the branch)
* `--pretty / --no-pretty`: Pretty-print JSON  \[default: pretty]
* `--format TEXT`: Output format: table, json, arrow, csv, tsv, parquet, excel  \[default: table]
* `-o, --output TEXT`: Write output to this file path instead of stdout
* `--help`: Show this message and exit.

#### `meshagent room dataset optimize`

Optimize a room dataset table.

**Usage**:

```console theme={null}
$ meshagent room dataset optimize [OPTIONS]
```

**Options**:

* `--project-id TEXT`: A MeshAgent project id. If empty, the activated project will be used.  \[default: (dynamic)]
* `--room TEXT`: Room name  \[default: (dynamic)]
* `-t, --table TEXT`: Table name  \[required]
* `--compact-files / --no-compact-files`
* `--optimize-indices / --no-optimize-indices`
* `--cleanup-old-versions / --no-cleanup-old-versions`
* `--target-rows-per-fragment INTEGER`
* `--max-rows-per-group INTEGER`
* `--max-bytes-per-file INTEGER`
* `--materialize-deletions / --no-materialize-deletions`
* `--materialize-deletions-threshold FLOAT`
* `--defer-index-remap / --no-defer-index-remap`
* `--num-threads INTEGER`
* `--batch-size INTEGER`
* `--compaction-mode TEXT`: Compaction mode: reencode, try\_binary\_copy, or force\_binary\_copy
* `--binary-copy-read-batch-bytes INTEGER`
* `--num-indices-to-merge INTEGER`
* `--index-name TEXT`: Index name to optimize. Repeatable.
* `--retrain / --no-retrain`
* `--older-than-seconds FLOAT`
* `--retain-versions INTEGER`
* `--delete-unverified / --keep-unverified`
* `--error-if-tagged-old-versions / --ignore-tagged-old-versions`
* `--delete-rate-limit INTEGER`
* `--config-json TEXT`: JSON object with optimization fields.
* `-n, --namespace TEXT`: Namespace path segments (repeatable). Example: -n prod -n analytics
* `--branch TEXT`: Dataset branch name (defaults to main)
* `-o, --output TEXT`: output format   \[default: table]
* `--help`: Show this message and exit.

#### `meshagent room dataset stats`

Show statistics for a room dataset table.

**Usage**:

```console theme={null}
$ meshagent room dataset stats [OPTIONS]
```

**Options**:

* `--project-id TEXT`: A MeshAgent project id. If empty, the activated project will be used.  \[default: (dynamic)]
* `--room TEXT`: Room name  \[default: (dynamic)]
* `-t, --table TEXT`: Table name  \[required]
* `-n, --namespace TEXT`: Namespace path segments (repeatable). Example: -n prod -n analytics
* `--branch TEXT`: Dataset branch name (defaults to main)
* `-v, --version INTEGER`: Historical table version to read (defaults to latest on the branch)
* `--max-rows-per-group INTEGER`
* `-o, --output TEXT`: output format   \[default: table]
* `--help`: Show this message and exit.

#### `meshagent room dataset version`

List versions for a room dataset table.

**Usage**:

```console theme={null}
$ meshagent room dataset version [OPTIONS]
```

**Options**:

* `--project-id TEXT`: A MeshAgent project id. If empty, the activated project will be used.  \[default: (dynamic)]
* `--room TEXT`: Room name  \[default: (dynamic)]
* `-t, --table TEXT`: Table name  \[required]
* `-n, --namespace TEXT`: Namespace path segments (repeatable). Example: -n prod -n analytics
* `--branch TEXT`: Dataset branch name (defaults to main)
* `--pretty / --no-pretty`: Pretty-print JSON  \[default: pretty]
* `--help`: Show this message and exit.

#### `meshagent room dataset restore`

Restore a room dataset table to a specific version.

**Usage**:

```console theme={null}
$ meshagent room dataset restore [OPTIONS]
```

**Options**:

* `--project-id TEXT`: A MeshAgent project id. If empty, the activated project will be used.  \[default: (dynamic)]
* `--room TEXT`: Room name  \[default: (dynamic)]
* `-t, --table TEXT`: Table name  \[required]
* `-v, --version INTEGER`: Table version  \[required]
* `-n, --namespace TEXT`: Namespace path segments (repeatable). Example: -n prod -n analytics
* `--branch TEXT`: Dataset branch name (defaults to main)
* `--help`: Show this message and exit.

#### `meshagent room dataset index`

List indexes on a room dataset table.

**Usage**:

```console theme={null}
$ meshagent room dataset index [OPTIONS]
```

**Options**:

* `--project-id TEXT`: A MeshAgent project id. If empty, the activated project will be used.  \[default: (dynamic)]
* `--room TEXT`: Room name  \[default: (dynamic)]
* `-t, --table TEXT`: Table name  \[required]
* `-n, --namespace TEXT`: Namespace path segments (repeatable). Example: -n prod -n analytics
* `--branch TEXT`: Dataset branch name (defaults to main)
* `-v, --version INTEGER`: Historical table version to read (defaults to latest on the branch)
* `--pretty / --no-pretty`: Pretty-print JSON  \[default: pretty]
* `--help`: Show this message and exit.

#### `meshagent room dataset index-create`

Create an index on a room dataset table.

**Usage**:

```console theme={null}
$ meshagent room dataset index-create [OPTIONS]
```

**Options**:

* `--project-id TEXT`: A MeshAgent project id. If empty, the activated project will be used.  \[default: (dynamic)]
* `--room TEXT`: Room name  \[default: (dynamic)]
* `-t, --table TEXT`: Table name  \[required]
* `-c, --column TEXT`: Column name. Repeat this option to pass multiple columns.
* `--index-type TEXT`: Lance index type, such as IVF\_PQ, IVF\_HNSW\_PQ, IVF\_HNSW\_SQ, IVF\_RQ, BTREE, BITMAP, LABEL\_LIST, NGRAM, ZONEMAP, INVERTED, FTS, BLOOMFILTER, or RTREE.
* `--name TEXT`: Index name
* `--metric TEXT`: Vector distance metric, such as L2, cosine, or dot
* `--replace / --no-replace`: Replace existing index if it already exists
* `--train / --no-train`: Train the index on existing data
* `--num-partitions INTEGER`
* `--target-partition-size INTEGER`
* `--num-sub-vectors INTEGER`
* `--num-bits INTEGER`
* `--accelerator TEXT`
* `--index-cache-size INTEGER`
* `--shuffle-partition-batches INTEGER`
* `--shuffle-partition-concurrency INTEGER`
* `--ivf-centroids-file TEXT`
* `--precomputed-partition-dataset TEXT`
* `--filter-nan / --no-filter-nan`: Filter null or NaN vector values
* `--index-uuid TEXT`
* `--skip-transpose / --no-skip-transpose`: Skip vector index transposition
* `--index-file-version TEXT`
* `--max-level INTEGER`
* `--m INTEGER`
* `--ef-construction INTEGER`
* `--with-position / --no-with-position`: Store token positions for text indexes
* `--memory-limit INTEGER`
* `--num-workers INTEGER`
* `--skip-merge / --no-skip-merge`: Skip text index partition merge
* `--base-tokenizer TEXT`
* `--language TEXT`
* `--max-token-length INTEGER`
* `--lower-case / --no-lower-case`: Lowercase text index tokens
* `--stem / --no-stem`: Stem text index tokens
* `--remove-stop-words / --keep-stop-words`: Remove text index stop words
* `--custom-stop-word TEXT`: Custom stop word. Repeat to pass multiple words.
* `--ascii-folding / --no-ascii-folding`: Fold text index tokens to ASCII
* `--config-json TEXT`: JSON object with Lance index configuration fields.
* `-n, --namespace TEXT`: Namespace path segments (repeatable). Example: -n prod -n analytics
* `--branch TEXT`: Dataset branch name (defaults to main)
* `--help`: Show this message and exit.

#### `meshagent room dataset index-drop`

Drop an index from a room dataset table.

**Usage**:

```console theme={null}
$ meshagent room dataset index-drop [OPTIONS]
```

**Options**:

* `--project-id TEXT`: A MeshAgent project id. If empty, the activated project will be used.  \[default: (dynamic)]
* `--room TEXT`: Room name  \[default: (dynamic)]
* `-t, --table TEXT`: Table name  \[required]
* `--name TEXT`: Index name  \[required]
* `-n, --namespace TEXT`: Namespace path segments (repeatable). Example: -n prod -n analytics
* `--branch TEXT`: Dataset branch name (defaults to main)
* `--help`: Show this message and exit.

### `meshagent room sqlite`

Manage SQLite databases and tables in a room

**Usage**:

```console theme={null}
$ meshagent room sqlite [OPTIONS] COMMAND [ARGS]...
```

**Options**:

* `--install-completion`: Install completion for the current shell.
* `--show-completion`: Show completion for the current shell, to copy it or customize the installation.
* `--help`: Show this message and exit.

**Commands**:

* `database`: Manage SQLite databases in a room
* `table`: List SQLite tables in a room database.
* `inspect`: Inspect a SQLite table schema in a room...
* `create`: Create a SQLite table with optional Arrow\...
* `import`: Import a local Arrow, CSV, TSV, Parquet,...
* `drop`: Drop a SQLite table.
* `rename`: Rename a SQLite table.
* `add-columns`: Add columns to a SQLite table.
* `drop-columns`: Drop columns from a SQLite table.
* `insert`: Insert records into a SQLite table.
* `update`: Update rows in a SQLite table.
* `delete`: Delete rows from a SQLite table.
* `search`: Search rows in a SQLite table.
* `count`: Count rows in a SQLite table.
* `sql`: Execute SQL against a room SQLite database.

#### `meshagent room sqlite database`

Manage SQLite databases in a room

**Usage**:

```console theme={null}
$ meshagent room sqlite database [OPTIONS] COMMAND [ARGS]...
```

**Options**:

* `--help`: Show this message and exit.

**Commands**:

* `list`: List SQLite databases in a room namespace.
* `create`: Create a SQLite database in a room.
* `drop`: Drop a SQLite database in a room.
* `inspect`: Inspect a SQLite database in a room.

##### `meshagent room sqlite database list`

List SQLite databases in a room namespace.

**Usage**:

```console theme={null}
$ meshagent room sqlite database list [OPTIONS]
```

**Options**:

* `--project-id TEXT`: A MeshAgent project id. If empty, the activated project will be used.  \[default: (dynamic)]
* `--room TEXT`: Room name  \[default: (dynamic)]
* `-n, --namespace TEXT`: Namespace path segments (repeatable). Example: -n prod -n analytics
* `--help`: Show this message and exit.

##### `meshagent room sqlite database create`

Create a SQLite database in a room.

**Usage**:

```console theme={null}
$ meshagent room sqlite database create [OPTIONS]
```

**Options**:

* `--project-id TEXT`: A MeshAgent project id. If empty, the activated project will be used.  \[default: (dynamic)]
* `--room TEXT`: Room name  \[default: (dynamic)]
* `-d, --database TEXT`: Database name  \[required]
* `--mode TEXT`: create | overwrite | create\_if\_not\_exists  \[default: create]
* `-n, --namespace TEXT`: Namespace path segments (repeatable). Example: -n prod -n analytics
* `--help`: Show this message and exit.

##### `meshagent room sqlite database drop`

Drop a SQLite database in a room.

**Usage**:

```console theme={null}
$ meshagent room sqlite database drop [OPTIONS]
```

**Options**:

* `--project-id TEXT`: A MeshAgent project id. If empty, the activated project will be used.  \[default: (dynamic)]
* `--room TEXT`: Room name  \[default: (dynamic)]
* `-d, --database TEXT`: Database name  \[required]
* `-n, --namespace TEXT`: Namespace path segments (repeatable). Example: -n prod -n analytics
* `--ignore-missing`: Ignore missing database
* `--help`: Show this message and exit.

##### `meshagent room sqlite database inspect`

Inspect a SQLite database in a room.

**Usage**:

```console theme={null}
$ meshagent room sqlite database inspect [OPTIONS]
```

**Options**:

* `--project-id TEXT`: A MeshAgent project id. If empty, the activated project will be used.  \[default: (dynamic)]
* `--room TEXT`: Room name  \[default: (dynamic)]
* `-d, --database TEXT`: Database name  \[required]
* `-n, --namespace TEXT`: Namespace path segments (repeatable). Example: -n prod -n analytics
* `-o, --output TEXT`: output format   \[default: table]
* `--help`: Show this message and exit.

#### `meshagent room sqlite table`

List SQLite tables in a room database.

**Usage**:

```console theme={null}
$ meshagent room sqlite table [OPTIONS]
```

**Options**:

* `--project-id TEXT`: A MeshAgent project id. If empty, the activated project will be used.  \[default: (dynamic)]
* `--room TEXT`: Room name  \[default: (dynamic)]
* `-d, --database TEXT`: Database name  \[required]
* `-n, --namespace TEXT`: Namespace path segments (repeatable). Example: -n prod -n analytics
* `--help`: Show this message and exit.

#### `meshagent room sqlite inspect`

Inspect a SQLite table schema in a room database.

**Usage**:

```console theme={null}
$ meshagent room sqlite inspect [OPTIONS]
```

**Options**:

* `--project-id TEXT`: A MeshAgent project id. If empty, the activated project will be used.  \[default: (dynamic)]
* `--room TEXT`: Room name  \[default: (dynamic)]
* `-d, --database TEXT`: Database name  \[required]
* `-t, --table TEXT`: Table name  \[required]
* `-n, --namespace TEXT`: Namespace path segments (repeatable). Example: -n prod -n analytics
* `--json`: Output raw schema JSON
* `--help`: Show this message and exit.

#### `meshagent room sqlite create`

Create a SQLite table with optional Arrow schema and seed data.

**Usage**:

```console theme={null}
$ meshagent room sqlite create [OPTIONS]
```

**Options**:

* `--project-id TEXT`: A MeshAgent project id. If empty, the activated project will be used.  \[default: (dynamic)]
* `--room TEXT`: Room name  \[default: (dynamic)]
* `-d, --database TEXT`: Database name  \[required]
* `-t, --table TEXT`: Table name  \[required]
* `--mode TEXT`: create | overwrite | create\_if\_not\_exists  \[default: create]
* `-n, --namespace TEXT`: Namespace path segments (repeatable). Example: -n prod -n analytics
* `-c, --columns TEXT`: Comma-separated column definitions. Example: "names vector(20) null, tags list(text), meta struct(owner text, score float)". CLI shorthand types: int, bool, date, timestamp, float, text, json, uuid, binary, vector, list, struct. Vector syntax: vector(size\[, element\_type]). List syntax: list(element\_type). Struct syntax: struct(field\_name type\[, ...]).
* `--data-json TEXT`: Initial rows (JSON list)
* `--data-file TEXT`: Path to JSON file with initial rows
* `--help`: Show this message and exit.

#### `meshagent room sqlite import`

Import a local Arrow, CSV, TSV, Parquet, JSON, or Excel file into a SQLite table.

**Usage**:

```console theme={null}
$ meshagent room sqlite import [OPTIONS]
```

**Options**:

* `--project-id TEXT`: A MeshAgent project id. If empty, the activated project will be used.  \[default: (dynamic)]
* `--room TEXT`: Room name  \[default: (dynamic)]
* `-d, --database TEXT`: Database name  \[required]
* `-t, --table TEXT`: Table name  \[required]
* `-f, --file TEXT`: Local file to import  \[required]
* `--mode TEXT`: Import mode: create, replace  \[default: create]
* `--format TEXT`: Input format: auto, json, arrow, csv, tsv, parquet, excel  \[default: auto]
* `--sheet TEXT`: Excel worksheet name
* `--batch-size INTEGER`: Rows per imported batch for Parquet, JSON, and Excel  \[default: 8192]
* `-n, --namespace TEXT`: Namespace path segments (repeatable). Example: -n prod -n analytics
* `--help`: Show this message and exit.

#### `meshagent room sqlite drop`

Drop a SQLite table.

**Usage**:

```console theme={null}
$ meshagent room sqlite drop [OPTIONS]
```

**Options**:

* `--project-id TEXT`: A MeshAgent project id. If empty, the activated project will be used.  \[default: (dynamic)]
* `--room TEXT`: Room name  \[default: (dynamic)]
* `-d, --database TEXT`: Database name  \[required]
* `-t, --table TEXT`: Table name  \[required]
* `-n, --namespace TEXT`: Namespace path segments (repeatable). Example: -n prod -n analytics
* `--ignore-missing`: Ignore missing table
* `--help`: Show this message and exit.

#### `meshagent room sqlite rename`

Rename a SQLite table.

**Usage**:

```console theme={null}
$ meshagent room sqlite rename [OPTIONS]
```

**Options**:

* `--project-id TEXT`: A MeshAgent project id. If empty, the activated project will be used.  \[default: (dynamic)]
* `--room TEXT`: Room name  \[default: (dynamic)]
* `-d, --database TEXT`: Database name  \[required]
* `-t, --table TEXT`: Table name  \[required]
* `--new-name TEXT`: New table name  \[required]
* `-n, --namespace TEXT`: Namespace path segments (repeatable). Example: -n prod -n analytics
* `--help`: Show this message and exit.

#### `meshagent room sqlite add-columns`

Add columns to a SQLite table.

**Usage**:

```console theme={null}
$ meshagent room sqlite add-columns [OPTIONS]
```

**Options**:

* `--project-id TEXT`: A MeshAgent project id. If empty, the activated project will be used.  \[default: (dynamic)]
* `--room TEXT`: Room name  \[default: (dynamic)]
* `-d, --database TEXT`: Database name  \[required]
* `-t, --table TEXT`: Table name  \[required]
* `-c, --columns TEXT`: Comma-separated column definitions. Example: "names vector(20) null, tags list(text), meta struct(owner text, score float)". CLI shorthand types: int, bool, date, timestamp, float, text, json, uuid, binary, vector, list, struct. Vector syntax: vector(size\[, element\_type]). List syntax: list(element\_type). Struct syntax: struct(field\_name type\[, ...]).  \[required]
* `-n, --namespace TEXT`: Namespace path segments (repeatable). Example: -n prod -n analytics
* `--help`: Show this message and exit.

#### `meshagent room sqlite drop-columns`

Drop columns from a SQLite table.

**Usage**:

```console theme={null}
$ meshagent room sqlite drop-columns [OPTIONS]
```

**Options**:

* `--project-id TEXT`: A MeshAgent project id. If empty, the activated project will be used.  \[default: (dynamic)]
* `--room TEXT`: Room name  \[default: (dynamic)]
* `-d, --database TEXT`: Database name  \[required]
* `-t, --table TEXT`: Table name  \[required]
* `-c, --column TEXT`: Column to drop (repeatable)
* `-n, --namespace TEXT`: Namespace path segments (repeatable). Example: -n prod -n analytics
* `--help`: Show this message and exit.

#### `meshagent room sqlite insert`

Insert records into a SQLite table.

**Usage**:

```console theme={null}
$ meshagent room sqlite insert [OPTIONS]
```

**Options**:

* `--project-id TEXT`: A MeshAgent project id. If empty, the activated project will be used.  \[default: (dynamic)]
* `--room TEXT`: Room name  \[default: (dynamic)]
* `-d, --database TEXT`: Database name  \[required]
* `-t, --table TEXT`: Table name  \[required]
* `-n, --namespace TEXT`: Namespace path segments (repeatable). Example: -n prod -n analytics
* `--json TEXT`: JSON list of records
* `-f, --file TEXT`: Path to JSON file (list of records)
* `--help`: Show this message and exit.

#### `meshagent room sqlite update`

Update rows in a SQLite table.

**Usage**:

```console theme={null}
$ meshagent room sqlite update [OPTIONS]
```

**Options**:

* `--project-id TEXT`: A MeshAgent project id. If empty, the activated project will be used.  \[default: (dynamic)]
* `--room TEXT`: Room name  \[default: (dynamic)]
* `-d, --database TEXT`: Database name  \[required]
* `-t, --table TEXT`: Table name  \[required]
* `--where TEXT`: SQL WHERE clause, e.g. "id = ?"  \[required]
* `--values-json TEXT`: JSON object of update values  \[required]
* `--params-json TEXT`: JSON SQL parameters
* `-n, --namespace TEXT`: Namespace path segments (repeatable). Example: -n prod -n analytics
* `--help`: Show this message and exit.

#### `meshagent room sqlite delete`

Delete rows from a SQLite table.

**Usage**:

```console theme={null}
$ meshagent room sqlite delete [OPTIONS]
```

**Options**:

* `--project-id TEXT`: A MeshAgent project id. If empty, the activated project will be used.  \[default: (dynamic)]
* `--room TEXT`: Room name  \[default: (dynamic)]
* `-d, --database TEXT`: Database name  \[required]
* `-t, --table TEXT`: Table name  \[required]
* `--where TEXT`: SQL WHERE clause  \[required]
* `--params-json TEXT`: JSON SQL parameters
* `-n, --namespace TEXT`: Namespace path segments (repeatable). Example: -n prod -n analytics
* `--help`: Show this message and exit.

#### `meshagent room sqlite search`

Search rows in a SQLite table.

**Usage**:

```console theme={null}
$ meshagent room sqlite search [OPTIONS]
```

**Options**:

* `--project-id TEXT`: A MeshAgent project id. If empty, the activated project will be used.  \[default: (dynamic)]
* `--room TEXT`: Room name  \[default: (dynamic)]
* `-d, --database TEXT`: Database name  \[required]
* `-t, --table TEXT`: Table name  \[required]
* `--where TEXT`: SQL WHERE clause
* `--where-json TEXT`: JSON object converted to equality ANDs
* `--params-json TEXT`: JSON SQL parameters
* `--select TEXT`: Columns to select (repeatable)
* `--limit INTEGER`: Max rows to return
* `--offset INTEGER`: Rows to skip
* `--pretty / --no-pretty`: Pretty-print JSON  \[default: pretty]
* `-n, --namespace TEXT`: Namespace path segments (repeatable). Example: -n prod -n analytics
* `--help`: Show this message and exit.

#### `meshagent room sqlite count`

Count rows in a SQLite table.

**Usage**:

```console theme={null}
$ meshagent room sqlite count [OPTIONS]
```

**Options**:

* `--project-id TEXT`: A MeshAgent project id. If empty, the activated project will be used.  \[default: (dynamic)]
* `--room TEXT`: Room name  \[default: (dynamic)]
* `-d, --database TEXT`: Database name  \[required]
* `-t, --table TEXT`: Table name  \[required]
* `--where TEXT`: SQL WHERE clause
* `--where-json TEXT`: JSON object converted to equality ANDs
* `--params-json TEXT`: JSON SQL parameters
* `-n, --namespace TEXT`: Namespace path segments (repeatable). Example: -n prod -n analytics
* `--help`: Show this message and exit.

#### `meshagent room sqlite sql`

Execute SQL against a room SQLite database.

**Usage**:

```console theme={null}
$ meshagent room sqlite sql [OPTIONS]
```

**Options**:

* `--project-id TEXT`: A MeshAgent project id. If empty, the activated project will be used.  \[default: (dynamic)]
* `--room TEXT`: Room name  \[default: (dynamic)]
* `-d, --database TEXT`: Database name  \[required]
* `-q, --query TEXT`: SQL query to execute  \[required]
* `--params-json TEXT`: JSON SQL parameters
* `--params-file TEXT`: Path/URL to JSON parameters
* `--pretty / --no-pretty`: Pretty-print JSON  \[default: pretty]
* `--format TEXT`: Output format: table, json, arrow, csv, tsv, parquet, excel  \[default: table]
* `-o, --output TEXT`: Write output to this file path instead of stdout
* `-n, --namespace TEXT`: Namespace path segments (repeatable). Example: -n prod -n analytics
* `--help`: Show this message and exit.

### `meshagent room memory`

Manage room memories

**Usage**:

```console theme={null}
$ meshagent room memory [OPTIONS] COMMAND [ARGS]...
```

**Options**:

* `--install-completion`: Install completion for the current shell.
* `--show-completion`: Show completion for the current shell, to copy it or customize the installation.
* `--help`: Show this message and exit.

**Commands**:

* `list`: List memories in a room namespace.
* `create`: Create a room memory store.
* `drop`: Drop a room memory store.
* `inspect`: Inspect metadata and datasets for a memory.
* `get`: Get metadata and datasets for a memory.
* `query`: Run a SQL-like query against memory datasets.
* `upsert-table`: Upsert records from JSON into memory tables.
* `upsert-nodes`: Upsert entity nodes into memory.
* `upsert-relationships`: Upsert relationship edges into memory.
* `import`: Import entities and relationships from a...
* `ingest-text`: Extract memory from input text.
* `ingest-image`: Extract memory from an image.
* `ingest-file`: Extract memory from local file/text content.
* `ingest-from-table`: Extract memory from table rows.
* `ingest-from-storage`: Extract memory from room storage paths.
* `recall`: Recall entities and relationships from...
* `delete-entities`: Delete entities (and related edges) from...
* `delete-relationships`: Delete relationship edges from memory.
* `optimize`: Optimize memory datasets.

#### `meshagent room memory list`

List memories in a room namespace.

**Usage**:

```console theme={null}
$ meshagent room memory list [OPTIONS]
```

**Options**:

* `--project-id TEXT`: A MeshAgent project id. If empty, the activated project will be used.  \[default: (dynamic)]
* `--room TEXT`: Room name  \[default: (dynamic)]
* `-n, --namespace TEXT`: Namespace path segments (repeatable). Example: -n prod -n analytics
* `--pretty / --no-pretty`: Pretty-print JSON  \[default: pretty]
* `--help`: Show this message and exit.

#### `meshagent room memory create`

Create a room memory store.

**Usage**:

```console theme={null}
$ meshagent room memory create [OPTIONS]
```

**Options**:

* `--project-id TEXT`: A MeshAgent project id. If empty, the activated project will be used.  \[default: (dynamic)]
* `--room TEXT`: Room name  \[default: (dynamic)]
* `-m, --name TEXT`: Memory name  \[required]
* `-n, --namespace TEXT`: Namespace path segments (repeatable). Example: -n prod -n analytics
* `--overwrite`: Overwrite existing memory
* `--help`: Show this message and exit.

#### `meshagent room memory drop`

Drop a room memory store.

**Usage**:

```console theme={null}
$ meshagent room memory drop [OPTIONS]
```

**Options**:

* `--project-id TEXT`: A MeshAgent project id. If empty, the activated project will be used.  \[default: (dynamic)]
* `--room TEXT`: Room name  \[default: (dynamic)]
* `-m, --name TEXT`: Memory name  \[required]
* `-n, --namespace TEXT`: Namespace path segments (repeatable). Example: -n prod -n analytics
* `--ignore-missing`: Ignore missing memory
* `--help`: Show this message and exit.

#### `meshagent room memory inspect`

Inspect metadata and datasets for a memory.

**Usage**:

```console theme={null}
$ meshagent room memory inspect [OPTIONS]
```

**Options**:

* `--project-id TEXT`: A MeshAgent project id. If empty, the activated project will be used.  \[default: (dynamic)]
* `--room TEXT`: Room name  \[default: (dynamic)]
* `-m, --name TEXT`: Memory name  \[required]
* `-n, --namespace TEXT`: Namespace path segments (repeatable). Example: -n prod -n analytics
* `--pretty / --no-pretty`: Pretty-print JSON  \[default: pretty]
* `--help`: Show this message and exit.

#### `meshagent room memory get`

Get metadata and datasets for a memory.

**Usage**:

```console theme={null}
$ meshagent room memory get [OPTIONS]
```

**Options**:

* `--project-id TEXT`: A MeshAgent project id. If empty, the activated project will be used.  \[default: (dynamic)]
* `--room TEXT`: Room name  \[default: (dynamic)]
* `-m, --name TEXT`: Memory name  \[required]
* `-n, --namespace TEXT`: Namespace path segments (repeatable). Example: -n prod -n analytics
* `--pretty / --no-pretty`: Pretty-print JSON  \[default: pretty]
* `--help`: Show this message and exit.

#### `meshagent room memory query`

Run a SQL-like query against memory datasets.

**Usage**:

```console theme={null}
$ meshagent room memory query [OPTIONS]
```

**Options**:

* `--project-id TEXT`: A MeshAgent project id. If empty, the activated project will be used.  \[default: (dynamic)]
* `--room TEXT`: Room name  \[default: (dynamic)]
* `-m, --name TEXT`: Memory name  \[required]
* `-s, --statement TEXT`: Statement, e.g. "MATCH (e:Entity) RETURN e.name LIMIT 10"  \[required]
* `-n, --namespace TEXT`: Namespace path segments (repeatable). Example: -n prod -n analytics
* `--pretty / --no-pretty`: Pretty-print JSON  \[default: pretty]
* `--help`: Show this message and exit.

#### `meshagent room memory upsert-table`

Upsert records from JSON into memory tables.

**Usage**:

```console theme={null}
$ meshagent room memory upsert-table [OPTIONS]
```

**Options**:

* `--project-id TEXT`: A MeshAgent project id. If empty, the activated project will be used.  \[default: (dynamic)]
* `--room TEXT`: Room name  \[default: (dynamic)]
* `-m, --name TEXT`: Memory name  \[required]
* `-t, --table TEXT`: Table name  \[required]
* `--records-json TEXT`: JSON array of records
* `--records-file TEXT`: Path to JSON file with records
* `-n, --namespace TEXT`: Namespace path segments (repeatable). Example: -n prod -n analytics
* `--merge / --no-merge`: Merge with existing records  \[default: merge]
* `--help`: Show this message and exit.

#### `meshagent room memory upsert-nodes`

Upsert entity nodes into memory.

**Usage**:

```console theme={null}
$ meshagent room memory upsert-nodes [OPTIONS]
```

**Options**:

* `--project-id TEXT`: A MeshAgent project id. If empty, the activated project will be used.  \[default: (dynamic)]
* `--room TEXT`: Room name  \[default: (dynamic)]
* `-m, --name TEXT`: Memory name  \[required]
* `--records-json TEXT`: JSON array of MemoryEntityRecord objects
* `--records-file TEXT`: Path to JSON file with entity records
* `-n, --namespace TEXT`: Namespace path segments (repeatable). Example: -n prod -n analytics
* `--merge / --no-merge`: Merge with existing nodes  \[default: merge]
* `--help`: Show this message and exit.

#### `meshagent room memory upsert-relationships`

Upsert relationship edges into memory.

**Usage**:

```console theme={null}
$ meshagent room memory upsert-relationships [OPTIONS]
```

**Options**:

* `--project-id TEXT`: A MeshAgent project id. If empty, the activated project will be used.  \[default: (dynamic)]
* `--room TEXT`: Room name  \[default: (dynamic)]
* `-m, --name TEXT`: Memory name  \[required]
* `--records-json TEXT`: JSON array of MemoryRelationshipRecord objects
* `--records-file TEXT`: Path to JSON file with relationship records
* `-n, --namespace TEXT`: Namespace path segments (repeatable). Example: -n prod -n analytics
* `--merge / --no-merge`: Merge with existing relationships  \[default: merge]
* `--help`: Show this message and exit.

#### `meshagent room memory import`

Import entities and relationships from a FalkorDB dump.rdb file.

**Usage**:

```console theme={null}
$ meshagent room memory import [OPTIONS]
```

**Options**:

* `--project-id TEXT`: A MeshAgent project id. If empty, the activated project will be used.  \[default: (dynamic)]
* `--room TEXT`: Room name  \[default: (dynamic)]
* `-m, --name TEXT`: Memory name  \[required]
* `-f, --rdb-file PATH`: Path to FalkorDB dump.rdb file  \[required]
* `--graph-name TEXT`: FalkorDB graph key name. Auto-detected when unambiguous.
* `-n, --namespace TEXT`: Namespace path segments (repeatable). Example: -n prod -n analytics
* `--merge / --no-merge`: Merge with existing records  \[default: merge]
* `--batch-size INTEGER RANGE`: Rows per GRAPH.QUERY batch while importing  \[default: 250; x>=1]
* `--docker-image TEXT`: Docker image to use for temporary FalkorDB container  \[default: falkordb/falkordb:latest]
* `--startup-timeout-seconds FLOAT RANGE`: Max seconds to wait for FalkorDB startup  \[default: 30.0; x>=1.0]
* `--create-memory / --no-create-memory`: Create the target memory when missing  \[default: create-memory]
* `--help`: Show this message and exit.

#### `meshagent room memory ingest-text`

Extract memory from input text.

**Usage**:

```console theme={null}
$ meshagent room memory ingest-text [OPTIONS]
```

**Options**:

* `--project-id TEXT`: A MeshAgent project id. If empty, the activated project will be used.  \[default: (dynamic)]
* `--room TEXT`: Room name  \[default: (dynamic)]
* `-m, --name TEXT`: Memory name  \[required]
* `--text TEXT`: Text content to ingest
* `-f, --file TEXT`: Path to UTF-8 text file
* `-n, --namespace TEXT`: Namespace path segments (repeatable). Example: -n prod -n analytics
* `--strategy [heuristic|llm]`: Ingest strategy: heuristic or llm  \[default: heuristic]
* `--llm-model TEXT`: Model name for llm strategy
* `--llm-temperature FLOAT`: Temperature for llm strategy
* `--pretty / --no-pretty`: Pretty-print JSON  \[default: pretty]
* `--help`: Show this message and exit.

#### `meshagent room memory ingest-image`

Extract memory from an image.

**Usage**:

```console theme={null}
$ meshagent room memory ingest-image [OPTIONS]
```

**Options**:

* `--project-id TEXT`: A MeshAgent project id. If empty, the activated project will be used.  \[default: (dynamic)]
* `--room TEXT`: Room name  \[default: (dynamic)]
* `-m, --name TEXT`: Memory name  \[required]
* `-f, --file TEXT`: Path to image file
* `--caption TEXT`: Optional image caption
* `--mime-type TEXT`: Image mime type
* `--source TEXT`: Source identifier/path
* `--annotations-json TEXT`: Optional JSON map of string annotations, e.g. \{"origin":"camera"}
* `-n, --namespace TEXT`: Namespace path segments (repeatable). Example: -n prod -n analytics
* `--strategy [heuristic|llm]`: Ingest strategy: heuristic or llm  \[default: heuristic]
* `--llm-model TEXT`: Model name for llm strategy
* `--llm-temperature FLOAT`: Temperature for llm strategy
* `--pretty / --no-pretty`: Pretty-print JSON  \[default: pretty]
* `--help`: Show this message and exit.

#### `meshagent room memory ingest-file`

Extract memory from local file/text content.

**Usage**:

```console theme={null}
$ meshagent room memory ingest-file [OPTIONS]
```

**Options**:

* `--project-id TEXT`: A MeshAgent project id. If empty, the activated project will be used.  \[default: (dynamic)]
* `--room TEXT`: Room name  \[default: (dynamic)]
* `-m, --name TEXT`: Memory name  \[required]
* `--path TEXT`: File path available to the room server
* `--text TEXT`: Inline text content
* `--text-file TEXT`: Path to local UTF-8 text file
* `--mime-type TEXT`: Optional mime type
* `-n, --namespace TEXT`: Namespace path segments (repeatable). Example: -n prod -n analytics
* `--strategy [heuristic|llm]`: Ingest strategy: heuristic or llm  \[default: heuristic]
* `--llm-model TEXT`: Model name for llm strategy
* `--llm-temperature FLOAT`: Temperature for llm strategy
* `--pretty / --no-pretty`: Pretty-print JSON  \[default: pretty]
* `--help`: Show this message and exit.

#### `meshagent room memory ingest-from-table`

Extract memory from table rows.

**Usage**:

```console theme={null}
$ meshagent room memory ingest-from-table [OPTIONS]
```

**Options**:

* `--project-id TEXT`: A MeshAgent project id. If empty, the activated project will be used.  \[default: (dynamic)]
* `--room TEXT`: Room name  \[default: (dynamic)]
* `-m, --name TEXT`: Memory name  \[required]
* `-t, --table TEXT`: Source table name  \[required]
* `--text-column TEXT`: Source text columns (repeatable)
* `--table-namespace TEXT`: Namespace path segments for the source table (repeatable)
* `--limit INTEGER`: Maximum source rows
* `-n, --namespace TEXT`: Namespace path segments (repeatable). Example: -n prod -n analytics
* `--strategy [heuristic|llm]`: Ingest strategy: heuristic or llm  \[default: heuristic]
* `--llm-model TEXT`: Model name for llm strategy
* `--llm-temperature FLOAT`: Temperature for llm strategy
* `--pretty / --no-pretty`: Pretty-print JSON  \[default: pretty]
* `--help`: Show this message and exit.

#### `meshagent room memory ingest-from-storage`

Extract memory from room storage paths.

**Usage**:

```console theme={null}
$ meshagent room memory ingest-from-storage [OPTIONS]
```

**Options**:

* `--project-id TEXT`: A MeshAgent project id. If empty, the activated project will be used.  \[default: (dynamic)]
* `--room TEXT`: Room name  \[default: (dynamic)]
* `-m, --name TEXT`: Memory name  \[required]
* `-p, --path TEXT`: Room storage path to ingest (repeatable)  \[required]
* `-n, --namespace TEXT`: Namespace path segments (repeatable). Example: -n prod -n analytics
* `--strategy [heuristic|llm]`: Ingest strategy: heuristic or llm  \[default: heuristic]
* `--llm-model TEXT`: Model name for llm strategy
* `--llm-temperature FLOAT`: Temperature for llm strategy
* `--pretty / --no-pretty`: Pretty-print JSON  \[default: pretty]
* `--help`: Show this message and exit.

#### `meshagent room memory recall`

Recall entities and relationships from memory.

**Usage**:

```console theme={null}
$ meshagent room memory recall [OPTIONS]
```

**Options**:

* `--project-id TEXT`: A MeshAgent project id. If empty, the activated project will be used.  \[default: (dynamic)]
* `--room TEXT`: Room name  \[default: (dynamic)]
* `-m, --name TEXT`: Memory name  \[required]
* `-q, --query TEXT`: Recall query text  \[required]
* `--limit INTEGER`: Max entities to return  \[default: 5]
* `--include-relationships / --no-include-relationships`: Include related edges for recalled entities  \[default: include-relationships]
* `-n, --namespace TEXT`: Namespace path segments (repeatable). Example: -n prod -n analytics
* `--pretty / --no-pretty`: Pretty-print JSON  \[default: pretty]
* `--help`: Show this message and exit.

#### `meshagent room memory delete-entities`

Delete entities (and related edges) from memory.

**Usage**:

```console theme={null}
$ meshagent room memory delete-entities [OPTIONS]
```

**Options**:

* `--project-id TEXT`: A MeshAgent project id. If empty, the activated project will be used.  \[default: (dynamic)]
* `--room TEXT`: Room name  \[default: (dynamic)]
* `-m, --name TEXT`: Memory name  \[required]
* `-e, --entity-id TEXT`: Entity ID to delete (repeatable)  \[required]
* `-n, --namespace TEXT`: Namespace path segments (repeatable). Example: -n prod -n analytics
* `--pretty / --no-pretty`: Pretty-print JSON  \[default: pretty]
* `--help`: Show this message and exit.

#### `meshagent room memory delete-relationships`

Delete relationship edges from memory.

**Usage**:

```console theme={null}
$ meshagent room memory delete-relationships [OPTIONS]
```

**Options**:

* `--project-id TEXT`: A MeshAgent project id. If empty, the activated project will be used.  \[default: (dynamic)]
* `--room TEXT`: Room name  \[default: (dynamic)]
* `-m, --name TEXT`: Memory name  \[required]
* `--records-json TEXT`: JSON array of MemoryRelationshipSelector objects
* `--records-file TEXT`: Path to JSON file with relationship selectors
* `-n, --namespace TEXT`: Namespace path segments (repeatable). Example: -n prod -n analytics
* `--pretty / --no-pretty`: Pretty-print JSON  \[default: pretty]
* `--help`: Show this message and exit.

#### `meshagent room memory optimize`

Optimize memory datasets.

**Usage**:

```console theme={null}
$ meshagent room memory optimize [OPTIONS]
```

**Options**:

* `--project-id TEXT`: A MeshAgent project id. If empty, the activated project will be used.  \[default: (dynamic)]
* `--room TEXT`: Room name  \[default: (dynamic)]
* `-m, --name TEXT`: Memory name  \[required]
* `-n, --namespace TEXT`: Namespace path segments (repeatable). Example: -n prod -n analytics
* `--compact / --no-compact`: Compact dataset fragments  \[default: compact]
* `--cleanup / --no-cleanup`: Cleanup old dataset versions  \[default: cleanup]
* `--pretty / --no-pretty`: Pretty-print JSON  \[default: pretty]
* `--help`: Show this message and exit.

### `meshagent room container`

Manage containers and images inside a room

**Usage**:

```console theme={null}
$ meshagent room container [OPTIONS] COMMAND [ARGS]...
```

**Options**:

* `--install-completion`: Install completion for the current shell.
* `--show-completion`: Show completion for the current shell, to copy it or customize the installation.
* `--help`: Show this message and exit.

**Commands**:

* `image`: Image operations
* `list`: List containers in a room.
* `stop`: Stop a running container in a room.
* `log`: Print container logs from a room.
* `exec`: Execute a command inside a running container.
* `run`: Run a container inside a room.

#### `meshagent room container image`

Image operations

**Usage**:

```console theme={null}
$ meshagent room container image [OPTIONS] COMMAND [ARGS]...
```

**Options**:

* `--install-completion`: Install completion for the current shell.
* `--show-completion`: Show completion for the current shell, to copy it or customize the installation.
* `--help`: Show this message and exit.

**Commands**:

* `list`: List container images available in a room.
* `inspect`: Inspect a container image in a room by...
* `delete`: Delete a container image from a room.
* `pull`: Pull a container image into a room.
* `push`: Push a container image from a room.
* `load`: Load an OCI image archive from room...
* `save`: Save an OCI image archive from a room.

##### `meshagent room container image list`

List container images available in a room.

**Usage**:

```console theme={null}
$ meshagent room container image list [OPTIONS]
```

**Options**:

* `--project-id TEXT`: A MeshAgent project id. If empty, the activated project will be used.  \[default: (dynamic)]
* `--room TEXT`: Room name  \[default: (dynamic)]
* `--output TEXT`: table | json  \[default: table]
* `--help`: Show this message and exit.

##### `meshagent room container image inspect`

Inspect a container image in a room by image ID.

**Usage**:

```console theme={null}
$ meshagent room container image inspect [OPTIONS]
```

**Options**:

* `--project-id TEXT`: A MeshAgent project id. If empty, the activated project will be used.  \[default: (dynamic)]
* `--room TEXT`: Room name  \[default: (dynamic)]
* `--image-id TEXT`: Image ID from `meshagent images list`  \[required]
* `--help`: Show this message and exit.

##### `meshagent room container image delete`

Delete a container image from a room.

**Usage**:

```console theme={null}
$ meshagent room container image delete [OPTIONS]
```

**Options**:

* `--project-id TEXT`: A MeshAgent project id. If empty, the activated project will be used.  \[default: (dynamic)]
* `--room TEXT`: Room name  \[default: (dynamic)]
* `--image TEXT`: Image ref/tag to delete  \[required]
* `--help`: Show this message and exit.

##### `meshagent room container image pull`

Pull a container image into a room.

**Usage**:

```console theme={null}
$ meshagent room container image pull [OPTIONS]
```

**Options**:

* `--project-id TEXT`: A MeshAgent project id. If empty, the activated project will be used.  \[default: (dynamic)]
* `--room TEXT`: Room name  \[default: (dynamic)]
* `--tag TEXT`: Image tag/ref to pull  \[required]
* `--cred TEXT`: Docker creds (username,password) or (registry,username,password)
* `--help`: Show this message and exit.

##### `meshagent room container image push`

Push a container image from a room.

**Usage**:

```console theme={null}
$ meshagent room container image push [OPTIONS]
```

**Options**:

* `--project-id TEXT`: A MeshAgent project id. If empty, the activated project will be used.  \[default: (dynamic)]
* `--room TEXT`: Room name  \[default: (dynamic)]
* `--tag TEXT`: Image tag/ref to push  \[required]
* `--private / --public`: Whether the push container is private to the participant  \[default: public]
* `--cred TEXT`: Docker creds (username,password) or (registry,username,password)
* `--help`: Show this message and exit.

##### `meshagent room container image load`

Load an OCI image archive from room storage into a room.

**Usage**:

```console theme={null}
$ meshagent room container image load [OPTIONS]
```

**Options**:

* `--project-id TEXT`: A MeshAgent project id. If empty, the activated project will be used.  \[default: (dynamic)]
* `--room TEXT`: Room name  \[default: (dynamic)]
* `-i, --archive-path, --image TEXT`: Absolute room storage path to the OCI image archive file  \[required]
* `--help`: Show this message and exit.

##### `meshagent room container image save`

Save an OCI image archive from a room.

**Usage**:

```console theme={null}
$ meshagent room container image save [OPTIONS]
```

**Options**:

* `--project-id TEXT`: A MeshAgent project id. If empty, the activated project will be used.  \[default: (dynamic)]
* `--room TEXT`: Room name  \[default: (dynamic)]
* `--tag TEXT`: Image tag/ref to save  \[required]
* `--archive-path TEXT`: Path to write OCI archive inside one of the mounted paths (absolute path)  \[required]
* `--mount-room-path TEXT`: Room storage mount '\<source>:\<mount>\[:ro|rw]'. Example '/images\:/workspace'
* `--mount-image TEXT`: Image mount '\<image>=\<mount>\[:ro|rw]'. Example 'alpine:latest=/toolchain:ro'
* `--private / --public`: Whether the save container is private to the participant  \[default: public]
* `--help`: Show this message and exit.

#### `meshagent room container list`

List containers in a room.

**Usage**:

```console theme={null}
$ meshagent room container list [OPTIONS]
```

**Options**:

* `--project-id TEXT`: A MeshAgent project id. If empty, the activated project will be used.  \[default: (dynamic)]
* `--room TEXT`: Room name  \[default: (dynamic)]
* `-a, --all`: Include exited containers in the listing.
* `--output TEXT`: json | table  \[default: json]
* `--help`: Show this message and exit.

#### `meshagent room container stop`

Stop a running container in a room.

**Usage**:

```console theme={null}
$ meshagent room container stop [OPTIONS]
```

**Options**:

* `--project-id TEXT`: A MeshAgent project id. If empty, the activated project will be used.  \[default: (dynamic)]
* `--room TEXT`: Room name  \[default: (dynamic)]
* `--id TEXT`: Container ID  \[required]
* `--help`: Show this message and exit.

#### `meshagent room container log`

Print container logs from a room.

**Usage**:

```console theme={null}
$ meshagent room container log [OPTIONS]
```

**Options**:

* `--project-id TEXT`: A MeshAgent project id. If empty, the activated project will be used.  \[default: (dynamic)]
* `--room TEXT`: Room name  \[default: (dynamic)]
* `--id TEXT`: Container ID  \[required]
* `--follow / --no-follow`: Stream logs  \[default: no-follow]
* `--help`: Show this message and exit.

#### `meshagent room container exec`

Execute a command inside a running container.

**Usage**:

```console theme={null}
$ meshagent room container exec [OPTIONS]
```

**Options**:

* `--project-id TEXT`: A MeshAgent project id. If empty, the activated project will be used.  \[default: (dynamic)]
* `--room TEXT`: Room name  \[default: (dynamic)]
* `--container-id TEXT`: container id  \[required]
* `--command TEXT`: Command to execute in the container (quoted string)
* `--help`: Show this message and exit.

#### `meshagent room container run`

Run a container inside a room.

**Usage**:

```console theme={null}
$ meshagent room container run [OPTIONS]
```

**Options**:

* `--project-id TEXT`: A MeshAgent project id. If empty, the activated project will be used.  \[default: (dynamic)]
* `--room TEXT`: Room name  \[default: (dynamic)]
* `--image TEXT`: Image to run  \[required]
* `--command TEXT`: Command to execute in the container (quoted string)
* `--working-dir TEXT`: Working directory inside the container (must be an absolute path)
* `-e, --env TEXT`: KEY=VALUE
* `-p, --port TEXT`: CONTAINER:HOST
* `--cred TEXT`: Docker creds (username,password) or (registry,username,password)
* `--mount-path TEXT`: Room storage path to mount into the container
* `--mount-subpath TEXT`: Subpath within `--mount-path` to mount
* `--participant-name TEXT`: Participant name to associate with the run
* `--role TEXT`: Role to run the container as  \[default: user]
* `--container-name TEXT`: Optional container name
* `--template TEXT`: Allowed values: agent, none. agent: MeshAgent mounts room storage at /data, sets MESHAGENT\_TOKEN, OPENAI\_API\_KEY, and ANTHROPIC\_API\_KEY to a container-scoped MeshAgent token. agent also sets SMTP\_PASSWORD to that token, SMTP\_USERNAME to the container name, SMTP\_PORT to 587, SMTP\_HOSTNAME from MESHAGENT\_MAIL\_DOMAIN when available, plus OPENAI\_BASE\_URL, ANTHROPIC\_BASE\_URL, MESHAGENT\_API\_URL, MESHAGENT\_ROOM\_URL, MESHAGENT\_ROOM, MESHAGENT\_PROJECT\_ID, MESHAGENT\_SESSION\_ID, OTEL\_ENDPOINT, OTEL\_PYTHON\_LOG\_LEVEL, and MESHAGENT\_MAIL\_DOMAIN from the room runtime when available. Manual env values win. none: MeshAgent applies no template defaults.  \[default: none]
* `--help`: Show this message and exit.

### `meshagent room sync`

Inspect and update mesh documents in a room

**Usage**:

```console theme={null}
$ meshagent room sync [OPTIONS] COMMAND [ARGS]...
```

**Options**:

* `--install-completion`: Install completion for the current shell.
* `--show-completion`: Show completion for the current shell, to copy it or customize the installation.
* `--help`: Show this message and exit.

**Commands**:

* `import`: Import Anthropic Claude GDPR conversations...
* `get`: Print the full document JSON
* `grep`: Search the document for matching content
* `inspect`: Print the document schema JSON
* `create`: Create a new document at a path
* `update`: Apply a JSON patch to a document

#### `meshagent room sync import`

Import Anthropic Claude GDPR conversations into room thread documents.

**Usage**:

```console theme={null}
$ meshagent room sync import [OPTIONS]
```

**Options**:

* `--project-id TEXT`: A MeshAgent project id. If empty, the activated project will be used.  \[default: (dynamic)]
* `--room TEXT`: Room name  \[default: (dynamic)]
* `-f, --file PATH`: Path to Claude GDPR conversations.json  \[required]
* `--thread-dir TEXT`: Directory where imported .thread files will be stored  \[default: .threads/anthropic]
* `--overwrite`: Overwrite existing imported thread files
* `--limit INTEGER RANGE`: Maximum number of conversations to import  \[x>=1]
* `--user-name, --human-name TEXT`: Author name used for user/human messages  \[default: human]
* `--assistant-name TEXT`: Author name used for assistant messages  \[default: assistant]
* `--include-empty-messages`: Include messages that normalize to empty text
* `--install-completion`: Install completion for the current shell.
* `--show-completion`: Show completion for the current shell, to copy it or customize the installation.
* `--help`: Show this message and exit.

#### `meshagent room sync get`

Print the full document JSON

**Usage**:

```console theme={null}
$ meshagent room sync get [OPTIONS] PATH
```

**Arguments**:

* `PATH`: \[required]

**Options**:

* `--project-id TEXT`: A MeshAgent project id. If empty, the activated project will be used.  \[default: (dynamic)]
* `--room TEXT`: Room name  \[default: (dynamic)]
* `--include-ids`: Include \$id attributes in output
* `--pretty / --compact`: Pretty-print JSON  \[default: pretty]
* `--help`: Show this message and exit.

#### `meshagent room sync grep`

Search the document for matching content

**Usage**:

```console theme={null}
$ meshagent room sync grep [OPTIONS] PATH PATTERN
```

**Arguments**:

* `PATH`: \[required]
* `PATTERN`: Regex pattern to match  \[required]

**Options**:

* `--project-id TEXT`: A MeshAgent project id. If empty, the activated project will be used.  \[default: (dynamic)]
* `--room TEXT`: Room name  \[default: (dynamic)]
* `--ignore-case`: Ignore case
* `--before INTEGER RANGE`: Include siblings before  \[default: 0; x>=0]
* `--after INTEGER RANGE`: Include siblings after  \[default: 0; x>=0]
* `--include-ids`: Include \$id attributes in output
* `--pretty / --compact`: Pretty-print JSON  \[default: pretty]
* `--help`: Show this message and exit.

#### `meshagent room sync inspect`

Print the document schema JSON

**Usage**:

```console theme={null}
$ meshagent room sync inspect [OPTIONS] PATH
```

**Arguments**:

* `PATH`: \[required]

**Options**:

* `--project-id TEXT`: A MeshAgent project id. If empty, the activated project will be used.  \[default: (dynamic)]
* `--room TEXT`: Room name  \[default: (dynamic)]
* `--pretty / --compact`: Pretty-print JSON  \[default: pretty]
* `--help`: Show this message and exit.

#### `meshagent room sync create`

Create a new document at a path

**Usage**:

```console theme={null}
$ meshagent room sync create [OPTIONS] PATH
```

**Arguments**:

* `PATH`: \[required]

**Options**:

* `--project-id TEXT`: A MeshAgent project id. If empty, the activated project will be used.  \[default: (dynamic)]
* `--room TEXT`: Room name  \[default: (dynamic)]
* `--schema PATH`: Schema JSON file  \[required]
* `--json TEXT`: Initial JSON payload
* `--json-file PATH`: Path to initial JSON payload
* `--help`: Show this message and exit.

#### `meshagent room sync update`

Apply a JSON patch to a document

**Usage**:

```console theme={null}
$ meshagent room sync update [OPTIONS] PATH
```

**Arguments**:

* `PATH`: \[required]

**Options**:

* `--project-id TEXT`: A MeshAgent project id. If empty, the activated project will be used.  \[default: (dynamic)]
* `--room TEXT`: Room name  \[default: (dynamic)]
* `--patch TEXT`: JSON patch array
* `--patch-file PATH`: Path to JSON patch array
* `--help`: Show this message and exit.

### `meshagent room connect`

Connect to a room and run a local command with MESHAGENT\_API\_URL, MESHAGENT\_PROJECT\_ID, MESHAGENT\_TOKEN, OPENAI\_API\_KEY, ANTHROPIC\_API\_KEY, and MESHAGENT\_ROOM set by the default agent template. Use -- before the local command.

**Usage**:

```console theme={null}
$ meshagent room connect [OPTIONS] [COMMAND]...
```

**Arguments**:

* `[COMMAND]...`

**Options**:

* `--project-id TEXT`: A MeshAgent project id. If empty, the activated project will be used.
* `--room TEXT`: Room name
* `-e, --env TEXT`: Set environment variable as KEY=VALUE
* `--identity TEXT`: Identity name to use for the connected token and --meshagent-token. Required with --role and --meshagent-token. When set, room connect mints a participant token locally.
* `--role TEXT`: Participant role for locally minted tokens. Requires --identity and defaults to agent.
* `--meshagent-token TEXT`: Inject MESHAGENT\_TOKEN using userDefault, agentDefault, full, or a JSON ApiScope object.
* `--template TEXT`: Allowed values: agent, none. agent: MeshAgent sets MESHAGENT\_TOKEN, OPENAI\_API\_KEY, and ANTHROPIC\_API\_KEY to a room-scoped MeshAgent token, and sets OPENAI\_BASE\_URL, ANTHROPIC\_BASE\_URL, MESHAGENT\_API\_URL, MESHAGENT\_PROJECT\_ID, and MESHAGENT\_ROOM from the connected room unless manually set. none: MeshAgent applies no template defaults.  \[default: agent]
* `--help`: Show this message and exit.

## `meshagent llm`

Local LLM proxy utilities

**Usage**:

```console theme={null}
$ meshagent llm [OPTIONS] COMMAND [ARGS]...
```

**Options**:

* `--install-completion`: Install completion for the current shell.
* `--show-completion`: Show completion for the current shell, to copy it or customize the installation.
* `--help`: Show this message and exit.

**Commands**:

* `logger`: Manage project LLM loggers
* `proxy`: Expose a local MeshAgent-authenticated LLM...

### `meshagent llm logger`

Manage project LLM loggers

**Usage**:

```console theme={null}
$ meshagent llm logger [OPTIONS] COMMAND [ARGS]...
```

**Options**:

* `--help`: Show this message and exit.

**Commands**:

* `create`: Create an LLM logger.
* `update`: Update an LLM logger.
* `get`: Get an LLM logger.
* `list`: List LLM loggers for the project.
* `delete`: Delete an LLM logger.

#### `meshagent llm logger create`

Create an LLM logger.

**Usage**:

```console theme={null}
$ meshagent llm logger create [OPTIONS]
```

**Options**:

* `--project-id TEXT`: A MeshAgent project id. If empty, the activated project will be used.  \[default: (dynamic)]
* `--destination-feed-id, --feed-id TEXT`: Destination feed id  \[required]
* `-f, --filter-expression TEXT`: JMESPath metadata filter  \[required]
* `--paused`: Create the logger in a paused state
* `--annotations TEXT`: annotations in json format \{"name":"value"}
* `--help`: Show this message and exit.

#### `meshagent llm logger update`

Update an LLM logger.

**Usage**:

```console theme={null}
$ meshagent llm logger update [OPTIONS] LOGGER_ID
```

**Arguments**:

* `LOGGER_ID`: LLM logger id to update  \[required]

**Options**:

* `--project-id TEXT`: A MeshAgent project id. If empty, the activated project will be used.  \[default: (dynamic)]
* `--destination-feed-id, --feed-id TEXT`: Destination feed id
* `-f, --filter-expression TEXT`: JMESPath metadata filter
* `--paused`: Pause the logger
* `--resume`: Resume a paused logger
* `--annotations TEXT`: annotations in json format \{"name":"value"}
* `--help`: Show this message and exit.

#### `meshagent llm logger get`

Get an LLM logger.

**Usage**:

```console theme={null}
$ meshagent llm logger get [OPTIONS] LOGGER_ID
```

**Arguments**:

* `LOGGER_ID`: LLM logger id to get  \[required]

**Options**:

* `--project-id TEXT`: A MeshAgent project id. If empty, the activated project will be used.  \[default: (dynamic)]
* `--help`: Show this message and exit.

#### `meshagent llm logger list`

List LLM loggers for the project.

**Usage**:

```console theme={null}
$ meshagent llm logger list [OPTIONS]
```

**Options**:

* `--project-id TEXT`: A MeshAgent project id. If empty, the activated project will be used.  \[default: (dynamic)]
* `-o, --output TEXT`: output format   \[default: table]
* `--help`: Show this message and exit.

#### `meshagent llm logger delete`

Delete an LLM logger.

**Usage**:

```console theme={null}
$ meshagent llm logger delete [OPTIONS] LOGGER_ID
```

**Arguments**:

* `LOGGER_ID`: LLM logger id to delete  \[required]

**Options**:

* `--project-id TEXT`: A MeshAgent project id. If empty, the activated project will be used.  \[default: (dynamic)]
* `--help`: Show this message and exit.

### `meshagent llm proxy`

Expose a local MeshAgent-authenticated LLM proxy.

**Usage**:

```console theme={null}
$ meshagent llm proxy [OPTIONS]
```

**Options**:

* `--project-id TEXT`: A MeshAgent project id. If empty, the activated project will be used.  \[default: (dynamic)]
* `--host TEXT`: Local host to bind the proxy to.  \[default: 127.0.0.1]
* `--port INTEGER`: Local port to bind the proxy to.  \[default: 8766]
* `--bearer TEXT`: Explicit local bearer token. If omitted, the stored token is reused or generated on first run.
* `--token-from-env TEXT`: Name of environment variable containing a MeshAgent token to forward upstream.
* `--insecure`: Disable local bearer-token enforcement.
* `--tui / --no-tui`: Show the live usage dashboard when attached to a TTY.  \[default: tui]
* `--help`: Show this message and exit.
