tlm-cli cs¶
Cybersecurity commands — manage security projects, upload bills of materials, inspect vulnerability metrics, and submit VEX documents.
Subgroups: projects, bom, metrics, vex
projects¶
Commands for managing cybersecurity projects.
projects list¶
List root projects with their subprojects grouped underneath.
Fetches up to 50 root (parentless) projects and expands each one with its direct children. Root projects are shown as group headers (▶) and subprojects are indented below them.
| Option | Type | Description |
|---|---|---|
--name TEXT |
string | Filter root projects by exact name. |
--limit INT |
integer | Maximum number of root projects to fetch (default: 50). |
Example
# List all root projects and their subprojects
tlm-cli cs projects list
# Filter by root project name
tlm-cli cs projects list --name "gateway-model"
# Limit results
tlm-cli cs projects list --limit 10
Output columns: Name, Version, UUID, Tags
projects show¶
Show details and direct subprojects for a project.
| Argument | Description |
|---|---|
UUID |
Project UUID. |
Example
Output includes:
- Detail panel: UUID, Name, Version, Description, Active, Tags, Parent UUID, Parent Name, Last BOM Import, Risk Score
- Subprojects table: Name, Version, UUID, Active
projects create¶
Create a root cybersecurity project from a PMS model.
Requires DAVE level access permissions.
Resolves the model by exact name and creates a versionless root project whose name matches the model. This project acts
as the parent folder for all firmware subprojects uploaded via tlm-cli cs bom upload.
| Argument / Option | Type | Required | Description |
|---|---|---|---|
MODEL |
string | yes | Exact PMS model name. |
--dry-run |
flag | no | Print the request payload without sending it. |
Example
# Create a root project for a model
tlm-cli cs projects create "gateway-v2"
# Preview
tlm-cli cs projects create "gateway-v2" --dry-run
projects clone¶
Clone an existing project to a new version.
Requires DAVE level access permissions.
Cloning is asynchronous — the command queues the operation and returns immediately. The new project appears in
projects list once the service has processed it.
| Argument / Option | Type | Default | Description |
|---|---|---|---|
UUID |
string | — | UUID of the project to clone. |
--version TEXT / -v |
string | — | Version string for the cloned project. |
--include-tags / --no-tags |
flag | --include-tags |
Copy tags. |
--include-components / --no-components |
flag | --include-components |
Copy all components. |
--include-dependencies / --no-dependencies |
flag | --include-dependencies |
Copy the dependency graph. |
--include-properties / --no-properties |
flag | --no-properties |
Copy project properties. |
--include-services / --no-services |
flag | --no-services |
Copy services. |
--include-audit-history / --no-audit-history |
flag | --include-audit-history |
Copy audit and analysis history. |
--include-acl / --no-acl |
flag | --no-acl |
Copy ACL team assignments. |
--make-latest |
flag | off | Mark the clone as the latest version. |
--dry-run |
flag | off | Show the request payload without sending it. |
Example
# Clone to a new version (carries components, dependencies, tags, audit history)
tlm-cli cs projects clone 38640b33-4ba9-4733-bdab-cbfc40c6f8aa --version 2.0.0
# Clone without components
tlm-cli cs projects clone <uuid> --version 1.1.0 --no-components
# Mark the clone as latest
tlm-cli cs projects clone <uuid> --version 2.0.0 --make-latest
# Preview
tlm-cli cs projects clone <uuid> --version 2.0.0 --dry-run
projects move¶
Move a subproject to a different parent project.
Requires DAVE level access permissions.
| Argument / Option | Type | Required | Description |
|---|---|---|---|
UUID |
string | yes | UUID of the project to move. |
--parent-uuid TEXT |
string | yes | UUID of the new parent project. |
--dry-run |
flag | no | Show the request payload without sending it. |
Example
tlm-cli cs projects move <uuid> --parent-uuid <new-parent-uuid>
# Preview
tlm-cli cs projects move <uuid> --parent-uuid <new-parent-uuid> --dry-run
bom¶
Commands for uploading bills of materials.
bom upload¶
Upload a BOM file for a PMS model firmware version.
Resolves the model to determine the project hierarchy (firmware name → subproject, model name → parent project). The subproject is created automatically if it does not yet exist.
| Argument / Option | Type | Required | Description |
|---|---|---|---|
BOM_FILE |
path | yes | Path to a CycloneDX-compatible BOM file. |
--model TEXT / -m |
string | yes | PMS model name (must exist). |
--version TEXT / -v |
string | yes | Firmware version string to associate with the project. |
--dry-run |
flag | no | Show resolved metadata without uploading. |
Example
# Upload a BOM
tlm-cli cs bom upload ./sbom.json --model "gateway-v2" --version "1.2.0"
# Preview what would be uploaded
tlm-cli cs bom upload ./sbom.cdx --model "sensor-x" --version "0.9.1" --dry-run
Note: The firmware name (not the model name) is used as the subproject name. Use
tlm-cli pms models show MODEL_NAMEto check the firmware name before uploading.
metrics¶
Commands for inspecting vulnerability metrics.
metrics cves¶
Show CVE metrics for a project within a date interval.
Retrieves vulnerability datapoints for the project between the start and end dates. Each row represents a daily snapshot with severity-bucketed counts and a total risk score.
| Argument / Option | Type | Required | Description |
|---|---|---|---|
UUID |
string | yes | Project UUID. |
--start TEXT / -s |
string | yes | Interval start date in YYYYMMDD format. |
--end TEXT / -e |
string | yes | Interval end date in YYYYMMDD format. |
Example
Output columns: Date, Critical, High, Medium, Low, Total Vulns, Risk Score
vex¶
Commands for uploading VEX documents.
vex upload¶
Upload a VEX document to an existing project.
tlm-cli cs vex upload VEX_FILE [--project-uuid UUID | --project-name NAME --project-version VERSION] [OPTIONS]
Identify the target project either by UUID or by name and version. Exactly one of these two approaches must be used.
| Argument / Option | Type | Required | Description |
|---|---|---|---|
VEX_FILE |
path | yes | Path to a CycloneDX-compatible VEX file. |
--project-uuid TEXT / -u |
string | exclusive | Target project UUID. |
--project-name TEXT / -n |
string | exclusive | Target project name (requires --project-version). |
--project-version TEXT / -v |
string | exclusive | Target project version (requires --project-name). |
--dry-run |
flag | no | Show resolved metadata without uploading. |
Example
# Upload by project UUID
tlm-cli cs vex upload ./vex.json --project-uuid 38640b33-4ba9-4733-bdab-cbfc40c6f8aa
# Upload by project name and version
tlm-cli cs vex upload ./vex.json --project-name "gateway-fw" --project-version "1.2.0"
# Preview
tlm-cli cs vex upload ./vex.json --project-uuid <uuid> --dry-run