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 installtestmonitor
Test results, products, steps, measurements
slcli testmonitor result listasset
Hardware assets, calibration, fleet summary
slcli asset listsystem
Managed systems, package comparison, jobs, reports
slcli system liststate
Saved software states, .sls import/export, history, versioning
slcli state listdataframe
DataFrame tables, schema inspection, row queries, CSV export
slcli dataframe schema <table-id>spec
Product specifications, limits, conditions, bulk import/export
slcli spec listworkitem
Work items, templates, workflows
slcli workitem listtemplate
Test plan templates
slcli template listnotebook
Jupyter notebooks, execution records
slcli notebook manage listroutine
Event-action routines (v1 & v2)
slcli routine listfeed
NI Package Manager feeds & packages
slcli feed listfile
File upload, download, query, watch
slcli file listtag
Tags: create, read, set values
slcli tag listuser
User & service account management
slcli user listauth
Authorization policies & templates
slcli auth policy listworkspace
Workspace listing, info, disable
slcli workspace listwebapp
Static web app lifecycle
slcli webapp listcomment
Comments on any resource
slcli comment listcustomfield
Custom field configurations
slcli customfield listexample
Demo environment provisioning
slcli example listOutput 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
jqprocessing
# Human-readable table
slcli testmonitor result list
# Machine-readable JSON
slcli testmonitor result list --format json
Flag Conventions
| Flag | Description |
|---|---|
--format/-f | Output format: table or json |
--take/-t | Number of items to return (default: 25) |
--output/-o | File path for export operations |
--workspace/-w | Filter by workspace name or ID |
--id/-i | Resource identifier |
--file | Input file for import operations |
--filter | Dynamic LINQ or API filter expression |
--yes/-y | Skip confirmation prompts |
--force | Force 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