Command Reference

Complete documentation for every slcli command group, option, and output format.

Command Groups

slcli organizes commands into logical groups. Every list command supports --format and --take options.

mcp

Model Context Protocol server install and serve commands

slcli mcp install

testmonitor

Test results, products, steps, measurements

slcli testmonitor result list

asset

Hardware assets, calibration, fleet summary

slcli asset list

system

Managed systems, package comparison, jobs, reports

slcli system list

state

Saved software states, .sls import/export, history, versioning

slcli state list

dataframe

DataFrame tables, schema inspection, row queries, CSV export

slcli dataframe schema <table-id>

spec

Product specifications, limits, conditions, bulk import/export

slcli spec list

workitem

Work items, templates, workflows

slcli workitem list

template

Test plan templates

slcli template list

notebook

Jupyter notebooks, execution records

slcli notebook manage list

routine

Event-action routines (v1 & v2)

slcli routine list

feed

NI Package Manager feeds & packages

slcli feed list

file

File upload, download, query, watch

slcli file list

tag

Tags: create, read, set values

slcli tag list

user

User & service account management

slcli user list

auth

Authorization policies & templates

slcli auth policy list

workspace

Workspace listing, info, disable

slcli workspace list

webapp

Static web app lifecycle

slcli webapp list

comment

Comments on any resource

slcli comment list

customfield

Custom field configurations

slcli customfield list

example

Demo environment provisioning

slcli example list

Output Formats

All list and get commands support --format/-f with table (default) or json.

  • Table — colored, paginated (25 rows per page by default), with box-drawing and truncation
  • JSON — complete results without pagination, ideal for scripting and jq processing
# Human-readable table
slcli testmonitor result list

# Machine-readable JSON
slcli testmonitor result list --format json

Flag Conventions

FlagDescription
--format/-fOutput format: table or json
--take/-tNumber of items to return (default: 25)
--output/-oFile path for export operations
--workspace/-wFilter by workspace name or ID
--id/-iResource identifier
--fileInput file for import operations
--filterDynamic LINQ or API filter expression
--yes/-ySkip confirmation prompts
--forceForce overwrite or skip confirmation

mcp

Configure and run the experimental Model Context Protocol server for AI assistants.

Install Client Configuration

# Register with VS Code Copilot Agent mode in the current workspace
    slcli mcp install

    # Register with Claude Desktop
    slcli mcp install --target claude

    # Register with Cursor or Codex CLI
    slcli mcp install --target cursor
    slcli mcp install --target codex

    # Write all supported configs at once
    slcli mcp install --target all

Serve The MCP Endpoint

# Default stdio transport for AI clients that spawn the server directly
    slcli mcp serve

    # Streamable HTTP transport for the MCP Inspector and browser tooling
    slcli mcp serve --transport streamable-http

    # Bind to a custom host and port
    slcli mcp serve --transport streamable-http --host 0.0.0.0 --port 9000

Streamable HTTP serves the MCP endpoint at http://127.0.0.1:8000/mcp by default.

testmonitor

Query test results, products, steps, and measurements from the Test Monitor service.

Results

# List test results with filters
slcli testmonitor result list --status passed --program-name "Calibration"

# Filter by part number and serial number
slcli testmonitor result list --part-number "cRIO-9030" --serial-number "abc-123"

# Advanced filter with substitutions
slcli testmonitor result list \
  --filter '(operator == @0) && (totalTimeInSeconds < @1)' \
  --substitution "user1" \
  --substitution 30

# Summary statistics grouped by status
slcli testmonitor result list --summary --group-by status

# Get result details with steps and measurements
slcli testmonitor result get <result-id> --include-steps --include-measurements

Products

# List products with filters
slcli testmonitor product list --name "cRIO" --family "cRIO"

# Create a product
slcli testmonitor product create --part-number "156502A-11L" \
  --name "cRIO-9030" --family "cRIO" \
  --keyword "embedded" --property "region=us"

# Update a product
slcli testmonitor product update <product-id> --name "cRIO-9030 Rev B"

# Delete products
slcli testmonitor product delete --yes <id1> <id2>

asset

Manage hardware assets with rich filtering, calibration tracking, and location history.

List & Filter

# Filter by model, serial number, bus type
slcli asset list --model "PXI-4071"
slcli asset list --serial-number "01BB877A"
slcli asset list --bus-type PCI_PXI

# Show connected & calibratable assets
slcli asset list --connected --calibratable

# Advanced filter
slcli asset list --filter 'ModelName.Contains("PXI") and BusType = "PCI_PXI"'

# Inline summary statistics
slcli asset list --summary

Get Details

# Detailed view with calibration history
slcli asset get <asset-id> --include-calibration

Fleet Summary

slcli asset summary

Calibration & Location History

# Calibration history
slcli asset calibration <asset-id> --take 10

# Location history with date range
slcli asset location-history <asset-id> \
  --from "2025-12-01T00:00:00Z" \
  --to "2025-12-02T00:00:00Z"

Create, Update, Delete

slcli asset create --model-name "PXI-4071" --serial-number "SN-123" --bus-type PCI_PXI
slcli asset update <asset-id> --name "Updated Name"
slcli asset delete <asset-id> --force

system

Manage registered systems, compare software and assets, inspect packages and jobs, and generate reports.

List & Filter

slcli system list --state CONNECTED --os "Windows"
slcli system list --has-package "ni-daqmx"
slcli system list --has-keyword "production"
    slcli system list --property "Location=Building 5"
    slcli system list -f json --field packages
    slcli system list -f json --all-fields

slcli system list -f json uses a slim schema by default for faster responses. Add repeatable --field options for specific extended fields, or use --all-fields to restore the full legacy JSON schema.

Get System Details

# Basic details
slcli system get <system-id>

# Include all related resources
slcli system get <system-id> --include-all

# Individual includes
slcli system get <system-id> --include-packages --include-feeds
slcli system get <system-id> --include-assets --include-alarms
slcli system get <system-id> --include-jobs --include-results --include-workitems

Compare Systems

# Compare by alias
slcli system compare "PXI Controller A" "PXI Controller B"

# Compare by system ID with JSON output
slcli system compare <system-a> <system-b> --format json

Compares installed software and connected assets across two systems. Accepts system IDs or aliases and highlights package-only differences, version differences, asset count mismatches, and slot differences.

Summary & Reports

slcli system summary
slcli system report --type SOFTWARE --output software_report.csv
slcli system report --type HARDWARE --filter 'connected.data.state = "CONNECTED"' --output hw_report.csv

Job Management

slcli system job list --state FAILED
slcli system job get <job-id>
slcli system job summary
slcli system job cancel <job-id>

Update & Remove

slcli system update <system-id> --alias "New Name" --workspace "Production"
slcli system remove <system-id> --force

state

Manage saved software states, including package and feed definitions, imported .sls files, export workflows, and version history.

List & Inspect

# List saved states
    slcli state list [OPTIONS]

      --workspace, -w TEXT       # Filter by workspace name or ID
      --architecture CHOICE      # ARM, X64, X86, ANY
      --distribution CHOICE      # NI_LINUXRT, NI_LINUXRT_NXG, WINDOWS, ANY
      --take, -t INTEGER         # Default 25
      --format, -f [table|json]  # Output format

    # Get state details or historical versions
    slcli state get <STATE_ID> [-f table|json]
    slcli state history <STATE_ID> [-t INT] [-f table|json]
    slcli state version <STATE_ID> <VERSION> [-f table|json]

Create & Update

# Create a package/feed-defined state
    slcli state create --name TEXT --distribution CHOICE --architecture CHOICE [OPTIONS]
      --workspace, -w TEXT       # Workspace name or ID
      --property KEY=VALUE       # Repeatable custom property
      --feed JSON_OR_@FILE       # Repeatable feed object
      --package JSON_OR_@FILE    # Repeatable package object
      --system-image JSON_OR_@FILE
      --request FILE             # Raw JSON request override

    # Update state metadata or JSON-defined content
    slcli state update <STATE_ID> [OPTIONS]
      --name TEXT
      --description TEXT
      --distribution CHOICE
      --architecture CHOICE
      --workspace, -w TEXT
      --property KEY=VALUE       # Replaces properties when provided
      --request FILE             # Raw JSON patch override

Import, Replace, Export, Capture

# Import a state from an .sls file
    slcli state import --name TEXT --distribution CHOICE --architecture CHOICE --file PATH [OPTIONS]

    # Replace the content of an existing state with a new .sls file
    slcli state replace-content <STATE_ID> --file PATH [--change-description TEXT]

    # Export a saved state as .sls
    slcli state export <STATE_ID> [--version VERSION] [--inline | --output FILE]

    # Capture a system's state as .sls
    slcli state capture <SYSTEM_ID> [--inline | --output FILE]

Delete & Revert

# Delete a state
    slcli state delete <STATE_ID> [--yes]

    # Revert to a specific historical version
    slcli state revert <STATE_ID> <VERSION> [--yes]

dataframe

Inspect DataFrame table shape, query and decimate row data, export CSV, append rows, and manage table metadata.

Discover Tables

# List tables across all workspaces
    slcli dataframe list --workspace all

    # Filter by name, associated test result, or append capability
    slcli dataframe list --name "Battery" --supports-append
    slcli dataframe list --test-result-id <result-id> --format json

    # Apply advanced table filters with substitutions
    slcli dataframe list \
      --filter '(name.Contains(@0)) && (supportsAppend == @1)' \
      --substitution "Battery" \
      --substitution true

Inspect Metadata & Schema

# Summary plus schema preview
    slcli dataframe get <table-id>

    # Schema only
    slcli dataframe schema <table-id>
    slcli dataframe schema <table-id> --properties --format json

Query & Decimate Row Data

# Query selected columns with filters and sorting
    slcli dataframe query <table-id> \
      --columns Time,Voltage,State \
      --where State,EQUALS,FAIL \
      --order-by Time:desc

    # Resume a paged read from a continuation token
    slcli dataframe query <table-id> --continuation-token <token> --format json

    # Use a raw request payload for advanced queries
    slcli dataframe query <table-id> --request query.json --format json

    # Decimate large time-series tables for plotting
    slcli dataframe decimate <table-id> \
      --x-column Time \
      --y-column Voltage \
      --y-column Current \
      --method MAX_MIN \
      --intervals 500

Export & Append

# Export CSV inline or to a file
    slcli dataframe export <table-id> --where Cycle,GREATER_THAN,3
    slcli dataframe export <table-id> --output rows.csv

    # Append JSON frame payloads
    slcli dataframe append <table-id> --input append.json

    # Append Arrow stream payloads and mark the table complete
    slcli dataframe append <table-id> --input rows.arrow --input-format arrow --end-of-data

Create, Update, & Delete

# Create from a definition file
    slcli dataframe create --definition table.json --workspace Production

    # Update metadata and column properties
    slcli dataframe update <table-id> \
      --property owner=qa \
      --column-property Voltage:units=V \
      --metadata-revision 2

    # Batch metadata updates from a raw request payload
    slcli dataframe update-many --definition modify-tables.json

    # Delete one or more tables
    slcli dataframe delete <table-id> --yes
    slcli dataframe delete <id-1> <id-2> --yes

spec

Manage SystemLink product specifications, including parametric limits, conditions, bulk import/export, and filtered query workflows.

List & Query

# List specifications for a product (by name, part number, or ID)
slcli spec list --product <product>

# Query with Dynamic Linq and condition/limit helpers
slcli spec query --product <product> \
  --filter 'category.Contains("Electrical")' \
  --include-limits --include-conditions \
  --condition-name "Temperature" \
  --limit-max-le 2.0

# Continue a paged raw query
slcli spec query --product <product> --continuation-token <token> --format json

Get

slcli spec get --id <specification-id>
slcli spec get --id <specification-id> --format json

Create & Update

# Create from CLI flags
slcli spec create --product <product> --spec-id VSAT01 --type PARAMETRIC \
  --name "Saturation voltage" --limit-min 1.2 --limit-max 1.8 \
  --condition '{"name":"Temperature","value":{"conditionType":"NUMERIC","discrete":[25,85],"unit":"C"}}'

# Update a spec with optimistic versioning
slcli spec update --id <specification-id> --version 0 --limit-typical 1.5

# Create or update from JSON payload files
slcli spec create --file spec.json
slcli spec update --file spec-update.json

When a spec payload omits workspace, the CLI inherits the workspace from the referenced product unless you state a workspace explicitly.

Bulk Import & Export

# Export a filtered spec payload file
slcli spec export --product <product> --include-conditions --output specs.json

# Import one or more specs from JSON
slcli spec import --file specs.json

Repository examples: docs/examples/specifications/import-specs.json and docs/examples/specifications/exported-specs.json.

Delete

slcli spec delete --id <specification-id> --force
slcli spec delete --id <id-1> --id <id-2> --force

workitem

Full work item lifecycle — create, schedule, execute, and manage associated templates and workflows.

CRUD

# List and filter
slcli workitem list --state NEW --workspace "Production"

# Create
slcli workitem create --name "Battery Cycle Test" --type testplan --state NEW \
  --part-number "P-BAT-001"

# Create from a template
slcli workitem create-from-template <template-id> --name "My Test Run"

# Update
slcli workitem update <id> --state IN_PROGRESS

# Delete
slcli workitem delete <id1> <id2> --yes

Execute & Schedule

slcli workitem execute <id> --action START
slcli workitem schedule <id> --start 2026-03-01T09:00:00Z \
  --system <system-id> --fixture <slot-id> --dut <dut-id>

Templates

slcli workitem template list
slcli workitem template create --name "Battery Test" --type testplan --template-group "Functional"
slcli workitem template update <id> --name "Updated Template"
slcli workitem template delete <id> --yes

Workflows

# List, get, export
slcli workitem workflow list
slcli workitem workflow get --name "Battery Test Workflow"
slcli workitem workflow export --id <id> --output workflow.json

# Create scaffold, import, update
slcli workitem workflow init --name "My Workflow"
slcli workitem workflow import --file workflow.json
slcli workitem workflow update --id <id> --file updated.json

# Visual preview (Mermaid diagram)
slcli workitem workflow preview --id <id>
slcli workitem workflow preview --file my-workflow.json --format mmd --output wf.mmd

template

Manage test plan templates — scaffold, list, export, import, and delete.

# Create a template scaffold
slcli template init --name "Battery Test Template" --template-group "Production Tests"

# List and filter
slcli template list --workspace "Production" --filter "battery"

# Get / export
slcli template get --name "My Template" --format json
slcli template export --name "My Template" --output template.json

# Import / delete
slcli template import --file template.json
slcli template delete --id <template-id>

notebook

Manage Jupyter notebooks — create, download, update, and assign interfaces. Execute records can be listed via the execute subgroup.

# Initialize a local notebook
slcli notebook init --name MyLocalNotebook.ipynb

# List remote notebooks
slcli notebook manage list --workspace MyWorkspace

# Download content
slcli notebook manage download --name MyNotebook --output mynotebook.ipynb

# Create from file
slcli notebook manage create --file mynotebook.ipynb --workspace MyWorkspace --name MyNotebook

# Assign an interface
slcli notebook manage set-interface --id <id> --interface "File Analysis"

# List execution records
slcli notebook execute list --status succeeded --format json

Available interfaces: Assets Grid, Data Table Analysis, Data Space Analysis, File Analysis, Periodic Execution, Resource Changed Routine, Specification Analysis, Systems Grid, Test Data Analysis, Test Data Extraction, Work Item Automations, Work Item Operations, Work Item Scheduler.

routine

Manage event-action routines across two API versions (v2 default, v1 for notebook execution).

# List routines
slcli routine list --enabled --event-type tag

# Create v2 event-action routine
slcli routine create --name "Tag alarm" \
  --event '{"type":"tag","triggers":[...]}' \
  --actions '[{"type":"alarm","configuration":{...}}]' \
  --enabled

# Create v1 scheduled notebook routine
slcli routine create --api-version v1 --name "Daily report" \
  --type SCHEDULED --notebook-id <id> \
  --schedule '{"startTime":"2026-01-01T08:00:00Z","repeat":"DAY"}'

# Enable / disable / delete
slcli routine enable <id>
slcli routine disable <id>
slcli routine delete <id> --yes

feed

Manage NI Package Manager feeds and packages for SLE and SLS.

# List feeds
slcli feed list

# Create a feed
slcli feed create --name my-feed --platform windows --workspace Default

# List packages in a feed
slcli feed package list --feed-id <feed-id> --format json

# Upload a package (wait for completion)
slcli feed package upload --feed-id <feed-id> --file mypkg.nipkg --wait

# Delete a feed
slcli feed delete --id <feed-id> --yes

file

Full file lifecycle — upload, download, query, update metadata, and watch directories.

# Upload
slcli file upload /path/to/myfile.txt --workspace <workspace-id>

# Download
slcli file download <file-id> --output /path/to/save/file.txt

# Query with filter
slcli file query --filter 'name:("*report*") AND extension:("pdf")'

# Watch folder for auto-upload
slcli file watch /path/to/watch --pattern "*.csv" --recursive

# Update metadata
slcli file update-metadata <file-id> --name "new-name.txt"

tag

Create, read, update tags and manage their values. All operations are workspace-scoped.

# List and filter
slcli tag list --workspace "Production" --keywords "sensor,temperature"

# Create
slcli tag create "sensor.temp" --type DOUBLE --keywords "lab" --collect-aggregates

# Set / get values
slcli tag set-value "sensor.temp" "42.5"
slcli tag get-value "sensor.temp" --include-aggregates

# View details with aggregates
slcli tag get "sensor.temp" --include-aggregates

# Update and delete
slcli tag update "sensor.temp" --keywords "active" --properties "status=ok" --merge
slcli tag delete "sensor.temp"

Supported types: DOUBLE, INT, STRING, BOOLEAN, U_INT64, DATE_TIME

user

Comprehensive user management — list, create, update, and delete regular users and service accounts.

# List users with filter
slcli user list --filter 'firstName.StartsWith("John")' --type user

# Get user by email
slcli user get --email "john.doe@example.com"

# Create user
slcli user create --first-name "Jane" --last-name "Smith" \
  --email "jane@example.com" --policies "policy1,policy2"

# Create service account
slcli user create --type service --first-name "CI Bot"

# Update and delete
slcli user update --id <user-id> --email "new@example.com"
slcli user delete --id <user-id>

auth

Manage authorization policies and templates for workspace-based access control.

Policies

slcli auth policy list --type custom
slcli auth policy get <policy-id>
slcli auth policy create <template-id> --name "my-policy" --workspace <ws-id>
slcli auth policy update <policy-id> --name "new-name"
slcli auth policy diff <policy-id-1> <policy-id-2>
slcli auth policy delete <policy-id> --force

Templates

slcli auth template list
slcli auth template get <template-id>
slcli auth template delete <template-id>

User Integration

# Create user with workspace-scoped policies
slcli user create --type user --first-name Jane --last-name Doe \
  --email jane@example.com \
  --workspace-policies "DevWorkspace:template-dev,ProdWorkspace:template-prod"

workspace

Workspace listing, details, and administration.

slcli workspace list --filter "prod" --include-disabled
slcli workspace info --name "Production" --format json
slcli workspace disable --id <workspace-id>

webapp

Scaffold, pack, publish, and manage SystemLink web applications.

# Scaffold the Angular starter (installs AI skills automatically)
    slcli webapp init ./fleet-dashboard

    # Create Plugin Manager packaging config
    slcli webapp manifest init ./fleet-dashboard \
      --description "A dashboard for monitoring fleet health and calibration status." \
      --section Dashboard \
      --maintainer "Your Name <you@example.com>" \
      --license MIT \
      --icon-file ./icon.svg

    # Follow START_HERE.md to bootstrap Angular in place, then pack from config
    slcli webapp pack --config ./fleet-dashboard/nipkg.config.json

    # Publish (folder or .nipkg)
    slcli webapp publish ./dist/fleet-dashboard/browser --name MyApp --workspace Default

# List, get, open, delete
slcli webapp list --filter "MyApp"
slcli webapp get --id <id>
slcli webapp open --id <id>
slcli webapp delete --id <id>

comment

Manage comments on any SystemLink resource. Supports Markdown and @-mentions with email notifications.

# List comments on a resource
slcli comment list --resource-type testmonitor:Result --resource-id <result-id>

# Add a comment
slcli comment add -r testmonitor:Result -i <result-id> \
  -w "My Workspace" --message "Calibration looks good."

# Update / delete
slcli comment update <comment-id> --message "Revised: out of spec."
slcli comment delete <id1> <id2>

Supported resource types: testmonitor:Result, niapm:Asset, nisysmgmt:System, workorder:workorder, workitem:workitem, DataSpace

customfield

Manage custom field configurations, groups, and fields. Includes a web-based visual editor.

# List configurations
slcli customfield list --workspace "Production"

# Export / create / update
slcli customfield export --id <config-id> --output config.json
slcli customfield create --file config.json
slcli customfield update --file config.json

# Delete (recursive by default)
slcli customfield delete --id <config-id>

# Launch visual web editor
slcli customfield edit --id <config-id>

# Initialize a new configuration template
slcli customfield init --name "My Config" --workspace "MyWorkspace" \
  --resource-type workorder:workorder

example

Provision complete demo environments for training and evaluation.

# Discover available examples
slcli example list

# Inspect an example
slcli example info demo-complete-workflow

# Install (with audit log)
slcli example install demo-complete-workflow \
  --workspace Training --audit-log install-log.json

# Dry-run
slcli example install demo-complete-workflow --workspace Training --dry-run

# Delete provisioned resources
slcli example delete demo-complete-workflow \
  --workspace Training --audit-log delete-log.json

Available examples:

  • demo-complete-workflow — end-to-end workflow with systems, assets, DUTs, plans, and results
  • demo-test-plans — focused test-plan setup with reusable assets and templates
  • exercise-5-1-parametric-insights — parametric test data for training exercises
  • exercise-7-1-test-plans — test plan creation and scheduling exercises
  • spec-compliance-notebooks — Jupyter notebooks for specification compliance analysis