Skip to content

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”

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.

Terminal window
# From the project root — install both SDK and CLI
pip install -e lib/lma_sdk
pip install -e lib/lma_cli_pkg
# Or use make
make setup-cli

After installation, the lma command (and alias lma-cli) is available:

Terminal window
lma --help

Packages all LMA sub-stacks, uploads artifacts to S3, and generates a deployable CloudFormation template URL.

Terminal window
# Standard build and publish (bucket auto-generated from AWS account ID)
lma publish
# With custom bucket and prefix, and region
lma 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 --public

Options:

OptionDescription
--source-dir PATHPath to LMA project root (default: .)
--bucket-basename TEXTS3 bucket basename (auto-generated from account ID if omitted)
--prefix TEXTS3 key prefix (default: lma)
--region TEXTAWS region (default: from AWS CLI profile)
--publicMake artifacts publicly readable
--forceForce full rebuild (delete checksums)
--version TEXTOverride version string
--no-validateSkip CloudFormation template validation
-v, --verboseEnable 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

Deploy or update the LMA CloudFormation stack. If no template source is specified, deploys from the public published LMA template for the current region.

Terminal window
# 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 bucket
lma deploy --stack-name MyLMA --from-code . --bucket-basename my-artifacts --wait
# Deploy from specific S3 template URL
lma deploy --stack-name MyLMA --template-url https://s3.us-east-1.amazonaws.com/bucket/lma-main.yaml
# Deploy with parameter overrides
lma deploy --stack-name MyLMA -p AdminEmail=admin@example.com -p InstallDemoMode=true --wait
# Deploy from local template file
lma deploy --stack-name MyLMA --template-file /tmp/lma-main.yaml --wait

Options:

OptionDescription
--stack-name TEXTCloudFormation stack name (default: LMA)
--admin-email TEXTAdmin user email (required for new stacks)
--from-code DIRECTORYBuild and publish from local source before deploying
--template-url TEXTS3 URL for CloudFormation template
--template-file FILEPath to local CloudFormation template file
-p, --parameter KEY=VALUEParameter override (can be repeated)
--waitWait for stack operation to complete with event streaming
--no-rollbackDisable rollback on stack creation failure
--role-arn TEXTCloudFormation service role ARN
--timeout INTEGERMax wait time in minutes (default: 120)
--bucket-basename TEXTS3 bucket basename (used with --from-code)
--prefix TEXTS3 key prefix (default: lma, used with --from-code)
--publicMake S3 artifacts publicly readable (used with --from-code)
--clean-buildForce full rebuild (used with --from-code)
--no-validate-templateSkip CloudFormation template validation (used with --from-code)

Template Resolution:

  • If --from-code is specified, builds and publishes artifacts first, then deploys the resulting template
  • If --template-url is specified, uses that URL directly
  • If --template-file is 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-2 are 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 --wait is used
  • Validates that --admin-email is provided for new stack creation
  • Shows next steps and important outputs upon completion

Show current CloudFormation stack status, parameters, and outputs.

Terminal window
lma status
lma status --stack-name MyLMA

Show stack outputs (CloudFront URL, AppSync endpoint, Cognito pool, etc.).

Terminal window
lma outputs
lma outputs --json
lma outputs --stack-name MyLMA

Delete the LMA stack and all its resources.

Terminal window
lma delete # Interactive confirmation
lma delete --yes # Skip confirmation
lma delete --stack-name MyLMA --yes

View CloudWatch logs for Lambda functions and services.

Terminal window
# List available log groups
lma logs --list
# View logs from a specific group
lma logs /LMA/lambda/FetchTranscript
# Partial name matching
lma logs FetchTranscript --since 60 --limit 200

Verify all publish prerequisites are installed (Docker, SAM CLI, Node.js, etc.).

Terminal window
lma check-prereqs

List all publishable LMA sub-stacks with their package types.

Terminal window
lma list-stacks

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).

Terminal window
# Create + launch a VP, waiting until it leaves INITIALIZING
lma vp create --name "Weekly sync" --platform ZOOM --id 1234567890
# Create with a password and a custom display name; emit JSON
lma vp create --name "Standup" --platform TEAMS --id 99999 \
--password "abc" --user-name "lma-bot" --json
# Get a single VP row
lma vp get --id <vp-id>
# End a running VP
lma vp end --id <vp-id> --reason "Manual cleanup"
# List all VPs visible to the calling IAM principal
lma vp list
lma vp list --json

Common options for every lma vp subcommand:

OptionDescription
--stack-name TEXTCloudFormation stack name (env: LMA_STACK_NAME)
--region TEXTAWS region (env: AWS_DEFAULT_REGION)
--jsonEmit JSON instead of formatted text

lma vp create extra options:

OptionDescription
--name TEXTMeeting name (required)
--platform [ZOOM|TEAMS|CHIME|WEBEX]Meeting platform (required, case-insensitive)
--id TEXTMeeting ID (required)
--password TEXTMeeting password (default: empty)
--user-name TEXTDisplay name the scribe reports (default: lma-cli@lma)
--wait / --no-waitPoll until the VP leaves INITIALIZING (default: --wait)
--timeout FLOATMax seconds to wait for launch (default: 120)

The underlying SDK methods are documented under client.vp.

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.

Terminal window
# 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]'
# Verify
lma load --help

Available scenarios (each tagged with a --run-id for deterministic teardown):

SubcommandPurpose
lma load concurrentDrive N simultaneous meetings via --driver kinesis|upload|websocket|vp
lma load backfillFabricate N historical meetings spread over the last Y days (synthetic or real Cognito users for RBAC-at-scale testing)
lma load rbacProvision N synthetic Cognito users + latency-sweep listCalls / getCallCount
lma load cleanupDelete every synthetic resource (meetings, VPs, users, S3 orphans) for a given --target-run-id (or *)
lma load stack-infoPrint 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.

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.

Terminal window
lma --region us-west-2 status # Override AWS region
lma --profile prod outputs # Use specific AWS profile
lma --stack-name MyLMA status # Override stack name
lma -v publish --source-dir . --region us-east-1 # Verbose logging
VariableDescriptionDefault
LMA_STACK_NAMECloudFormation stack nameLMA
AWS_DEFAULT_REGIONAWS regionus-east-1
AWS_PROFILEAWS CLI profile(default chain)
Terminal window
# Deploy the latest published LMA — auto-selects template for your region
lma deploy --stack-name MyLMA --admin-email user@example.com --wait
Terminal window
# 1. Check prerequisites
lma check-prereqs
# 2. Build and deploy from local source code in one step
lma deploy --stack-name MyLMA --from-code . --admin-email user@example.com --wait
# 3. Get the CloudFront URL
lma outputs
# 4. View logs
lma logs --list
lma logs FetchTranscript --since 30
Terminal window
# 1. Publish artifacts to S3
lma publish --source-dir . --region us-east-1
# 2. Deploy using the published template URL
lma deploy --stack-name MyLMA --template-url <template-url> --wait
# 3. Monitor status
lma status
Terminal window
# If a deploy is already running, this auto-detects and monitors it
lma deploy --stack-name MyLMA --wait
CommandDescriptionPhase
lma meetings listList meetings2
lma meetings get <id>Get meeting details2
lma transcript get <id>Get transcript2
lma ask "<question>"Ask meeting assistant4
lma stream startStream audio4

Virtual Participant join/leave/list is already shipped — see lma vp. Load testing is provided by the lma load plugin.

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 / list

External 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.