LMA CLI — Command-Line Interface for AWS Live Meeting Assistant
LMA CLI — Command-Line Interface for AWS Live Meeting Assistant
Section titled “LMA CLI — Command-Line Interface for AWS Live Meeting Assistant”Overview
Section titled “Overview”The LMA CLI (lma-cli) provides a rich command-line interface for building, deploying, and managing AWS Live Meeting Assistant. It uses the LMA SDK under the hood and provides beautiful terminal output via Rich.
Installation
Section titled “Installation”# From the project root — install both SDK and CLIpip install -e lib/lma_sdkpip install -e lib/lma_cli_pkg
# Or use makemake setup-cliAfter installation, the lma command (and alias lma-cli) is available:
lma --helpCommands
Section titled “Commands”lma publish — Build & Upload Artifacts
Section titled “lma publish — Build & Upload Artifacts”Packages all LMA sub-stacks, uploads artifacts to S3, and generates a deployable CloudFormation template URL.
# Standard build and publish (bucket auto-generated from AWS account ID)lma publish
# With custom bucket and prefix, and regionlma publish --bucket-basename my-artifacts --prefix lma --region us-east-1
# Force full rebuild (skip change detection)lma publish --force
# Public artifacts (for shared deployments)lma publish --publicOptions:
| Option | Description |
|---|---|
--source-dir PATH | Path to LMA project root (default: .) |
--bucket-basename TEXT | S3 bucket basename (auto-generated from account ID if omitted) |
--prefix TEXT | S3 key prefix (default: lma) |
--region TEXT | AWS region (default: from AWS CLI profile) |
--public | Make artifacts publicly readable |
--force | Force full rebuild (delete checksums) |
--version TEXT | Override version string |
--no-validate | Skip CloudFormation template validation |
-v, --verbose | Enable verbose build output |
Features:
- Rich progress output with per-stack status
- SHA256-based change detection (skips unchanged stacks)
- Colourized summary panel with template URL and console URL
lma deploy — Deploy/Update Stack
Section titled “lma deploy — Deploy/Update Stack”Deploy or update the LMA CloudFormation stack. If no template source is specified, deploys from the public published LMA template for the current region.
# Deploy from public template (simplest — new stack)lma deploy --stack-name MyLMA --admin-email user@example.com --wait
# Deploy from public template (create new stack or update existing stack)lma deploy --stack-name MyLMA --wait
# Deploy from local code (build, publish, then deploy)lma deploy --stack-name MyLMA --from-code . --admin-email user@example.com --wait
# Deploy from local code with custom bucketlma deploy --stack-name MyLMA --from-code . --bucket-basename my-artifacts --wait
# Deploy from specific S3 template URLlma deploy --stack-name MyLMA --template-url https://s3.us-east-1.amazonaws.com/bucket/lma-main.yaml
# Deploy with parameter overrideslma deploy --stack-name MyLMA -p AdminEmail=admin@example.com -p InstallDemoMode=true --wait
# Deploy from local template filelma deploy --stack-name MyLMA --template-file /tmp/lma-main.yaml --waitOptions:
| Option | Description |
|---|---|
--stack-name TEXT | CloudFormation stack name (default: LMA) |
--admin-email TEXT | Admin user email (required for new stacks) |
--from-code DIRECTORY | Build and publish from local source before deploying |
--template-url TEXT | S3 URL for CloudFormation template |
--template-file FILE | Path to local CloudFormation template file |
-p, --parameter KEY=VALUE | Parameter override (can be repeated) |
--wait | Wait for stack operation to complete with event streaming |
--no-rollback | Disable rollback on stack creation failure |
--role-arn TEXT | CloudFormation service role ARN |
--timeout INTEGER | Max wait time in minutes (default: 120) |
--bucket-basename TEXT | S3 bucket basename (used with --from-code) |
--prefix TEXT | S3 key prefix (default: lma, used with --from-code) |
--public | Make S3 artifacts publicly readable (used with --from-code) |
--clean-build | Force full rebuild (used with --from-code) |
--no-validate-template | Skip CloudFormation template validation (used with --from-code) |
Template Resolution:
- If
--from-codeis specified, builds and publishes artifacts first, then deploys the resulting template - If
--template-urlis specified, uses that URL directly - If
--template-fileis specified, uses the local file - If none specified, auto-selects the public LMA template for the current region:
us-east-1,us-west-2,ap-southeast-2are supported
Smart Features:
- Auto-detects if the stack has an operation in progress and switches to monitoring mode
- Streams CloudFormation events in real-time when
--waitis used - Validates that
--admin-emailis provided for new stack creation - Shows next steps and important outputs upon completion
lma status — Stack Status
Section titled “lma status — Stack Status”Show current CloudFormation stack status, parameters, and outputs.
lma statuslma status --stack-name MyLMAlma outputs — Stack Outputs
Section titled “lma outputs — Stack Outputs”Show stack outputs (CloudFront URL, AppSync endpoint, Cognito pool, etc.).
lma outputslma outputs --jsonlma outputs --stack-name MyLMAlma delete — Delete Stack
Section titled “lma delete — Delete Stack”Delete the LMA stack and all its resources.
lma delete # Interactive confirmationlma delete --yes # Skip confirmationlma delete --stack-name MyLMA --yeslma logs — CloudWatch Logs
Section titled “lma logs — CloudWatch Logs”View CloudWatch logs for Lambda functions and services.
# List available log groupslma logs --list
# View logs from a specific grouplma logs /LMA/lambda/FetchTranscript
# Partial name matchinglma logs FetchTranscript --since 60 --limit 200lma check-prereqs — Prerequisite Check
Section titled “lma check-prereqs — Prerequisite Check”Verify all publish prerequisites are installed (Docker, SAM CLI, Node.js, etc.).
lma check-prereqslma list-stacks — List Sub-Stacks
Section titled “lma list-stacks — List Sub-Stacks”List all publishable LMA sub-stacks with their package types.
lma list-stackslma vp — Virtual Participant Operations
Section titled “lma vp — Virtual Participant Operations”Create, fetch, end, and list Virtual Participants directly from the CLI. These commands talk to the LMA AppSync API and the VP scheduler Step Function via SigV4-signed AWS calls (no Cognito login required — your AWS credentials are used).
# Create + launch a VP, waiting until it leaves INITIALIZINGlma vp create --name "Weekly sync" --platform ZOOM --id 1234567890
# Create with a password and a custom display name; emit JSONlma vp create --name "Standup" --platform TEAMS --id 99999 \ --password "abc" --user-name "lma-bot" --json
# Get a single VP rowlma vp get --id <vp-id>
# End a running VPlma vp end --id <vp-id> --reason "Manual cleanup"
# List all VPs visible to the calling IAM principallma vp listlma vp list --jsonCommon options for every lma vp subcommand:
| Option | Description |
|---|---|
--stack-name TEXT | CloudFormation stack name (env: LMA_STACK_NAME) |
--region TEXT | AWS region (env: AWS_DEFAULT_REGION) |
--json | Emit JSON instead of formatted text |
lma vp create extra options:
| Option | Description |
|---|---|
--name TEXT | Meeting name (required) |
--platform [ZOOM|TEAMS|CHIME|WEBEX] | Meeting platform (required, case-insensitive) |
--id TEXT | Meeting ID (required) |
--password TEXT | Meeting password (default: empty) |
--user-name TEXT | Display name the scribe reports (default: lma-cli@lma) |
--wait / --no-wait | Poll until the VP leaves INITIALIZING (default: --wait) |
--timeout FLOAT | Max seconds to wait for launch (default: 120) |
The underlying SDK methods are documented under
client.vp.
lma load — Load Simulator (plugin)
Section titled “lma load — Load Simulator (plugin)”The lma load subcommand tree is provided by the LMA Load Simulator package (utilities/load-simulator/). It registers itself with the lma CLI through the lma_cli.plugins entry-point group, so once both packages are installed alongside each other it appears as a first-class subcommand of lma.
# Install the load simulator (in addition to lma-sdk + lma-cli)pip install -e utilities/load-simulator
# Or with optional driver extras (websocket audio resampling, upload pipeline)pip install -e 'utilities/load-simulator[all]'
# Verifylma load --helpAvailable scenarios (each tagged with a --run-id for deterministic teardown):
| Subcommand | Purpose |
|---|---|
lma load concurrent | Drive N simultaneous meetings via --driver kinesis|upload|websocket|vp |
lma load backfill | Fabricate N historical meetings spread over the last Y days (synthetic or real Cognito users for RBAC-at-scale testing) |
lma load rbac | Provision N synthetic Cognito users + latency-sweep listCalls / getCallCount |
lma load cleanup | Delete every synthetic resource (meetings, VPs, users, S3 orphans) for a given --target-run-id (or *) |
lma load stack-info | Print the CloudFormation resources the simulator resolved — handy for debugging |
The simulator can also be invoked standalone as lma-load <subcommand> if you have not installed lma-cli.
For the full reference (driver matrix, cost/quota guardrails, observability dashboard, synthetic-user provisioning, safety rails, and example fixtures), see the LMA Load Simulator README.
CLI Plugins
Section titled “CLI Plugins”The lma CLI auto-discovers any installed Python package that declares a Click command under the lma_cli.plugins entry-point group. This is how lma load ... is contributed by the Load Simulator package; the same mechanism can be used for any third-party command tree.
# pyproject.toml of your plugin package[project.entry-points."lma_cli.plugins"]mything = "my_pkg.cli:my_command" # registers `lma mything ...`Plugin failures are logged but never crash the CLI — if a plugin fails to import, its commands simply don’t appear under lma --help.
Global Options
Section titled “Global Options”lma --region us-west-2 status # Override AWS regionlma --profile prod outputs # Use specific AWS profilelma --stack-name MyLMA status # Override stack namelma -v publish --source-dir . --region us-east-1 # Verbose loggingEnvironment Variables
Section titled “Environment Variables”| Variable | Description | Default |
|---|---|---|
LMA_STACK_NAME | CloudFormation stack name | LMA |
AWS_DEFAULT_REGION | AWS region | us-east-1 |
AWS_PROFILE | AWS CLI profile | (default chain) |
Typical Workflows
Section titled “Typical Workflows”Quick Deploy (from public template)
Section titled “Quick Deploy (from public template)”# Deploy the latest published LMA — auto-selects template for your regionlma deploy --stack-name MyLMA --admin-email user@example.com --waitDeveloper Workflow (from local code)
Section titled “Developer Workflow (from local code)”# 1. Check prerequisiteslma check-prereqs
# 2. Build and deploy from local source code in one steplma deploy --stack-name MyLMA --from-code . --admin-email user@example.com --wait
# 3. Get the CloudFront URLlma outputs
# 4. View logslma logs --listlma logs FetchTranscript --since 30Manual Publish + Deploy
Section titled “Manual Publish + Deploy”# 1. Publish artifacts to S3lma publish --source-dir . --region us-east-1
# 2. Deploy using the published template URLlma deploy --stack-name MyLMA --template-url <template-url> --wait
# 3. Monitor statuslma statusMonitor an In-Progress Deployment
Section titled “Monitor an In-Progress Deployment”# If a deploy is already running, this auto-detects and monitors itlma deploy --stack-name MyLMA --waitFuture Commands (Phase 2+)
Section titled “Future Commands (Phase 2+)”| Command | Description | Phase |
|---|---|---|
lma meetings list | List meetings | 2 |
lma meetings get <id> | Get meeting details | 2 |
lma transcript get <id> | Get transcript | 2 |
lma ask "<question>" | Ask meeting assistant | 4 |
lma stream start | Stream audio | 4 |
Virtual Participant join/leave/list is already shipped — see
lma vp. Load testing is provided by thelma loadplugin.
Architecture
Section titled “Architecture”The CLI is built with Click and Rich, following the same patterns as the IDP CLI:
lma_cli/├── cli.py # Main entry point, Click group + plugin loader├── formatters.py # Rich output helpers (tables, panels, colours)└── commands/ ├── publish.py # publish, check-prereqs, list-stacks ├── stack.py # status, outputs, deploy, delete, logs └── vp.py # vp create / get / end / listExternal plugins (e.g. utilities/load-simulator/lma_load/cli.py, which contributes lma load ...) are auto-registered via the lma_cli.plugins entry-point group — see CLI Plugins.
All AWS operations go through the LMA SDK — the CLI only handles UX/formatting.