Skip to content

Repository files navigation

SystemLink CLI

Full documentation →

SystemLink CLI (slcli) is a cross-platform Python CLI for SystemLink integrators, providing comprehensive management of SystemLink resources via REST APIs.

Features

  • 20+ resource types — test results, assets, systems, alarms, specifications, work items, notebooks, feeds, tags, files, users, policies, webapps, and more
  • DataFrame tables — inspect schema, query rows, export CSV, append data, and manage DataFrame table metadata
  • Systems state lifecycle — list saved states, inspect versions, and import or export portable .sls content
  • Multi-platform — supports SystemLink Enterprise (SLE) and SystemLink Server (SLS) with automatic detection
  • Multi-profile — manage dev, staging, and prod environments with named profiles
  • AI agent skills — bundled skills for most AI agents (Copilot, Codex, etc.) and Claude
  • Demo provisioning — curated example datasets for training, demos, and evaluation
  • WebApp lifecycle — scaffold Nimble Angular projects, pack, publish, and manage web applications
  • Professional CLI — consistent error handling, colored table/JSON output, shell completion

Quick Install

# pipx (recommended cross-platform Python install)
pipx install systemlink-cli

# Verify the CLI is on your PATH
slcli --help

# macOS / Linux (Homebrew — https://brew.sh)
brew tap ni-kismet/homebrew-ni && brew install slcli

# Windows (Scoop — https://scoop.sh)
scoop bucket add ni-kismet https://github.com/ni-kismet/scoop-ni && scoop install slcli

# Standalone binary — macOS (no package manager needed)
curl -fsSL https://github.com/ni-kismet/systemlink-cli/releases/latest/download/slcli-macos.tar.gz | tar xz
sudo mv slcli/slcli /usr/local/bin/

# Standalone binary — Linux
curl -fsSL https://github.com/ni-kismet/systemlink-cli/releases/latest/download/slcli-linux.tar.gz | tar xz
sudo mv slcli/slcli /usr/local/bin/

# pip (fallback for virtualenvs, CI, or managed Python workflows)
pip install systemlink-cli

Quick Start

# Authenticate
slcli login

# Explore resources
slcli testmonitor result list --summary --group-by status
slcli asset list --calibratable --summary
slcli system list --state CONNECTED
slcli spec list --product <product> --workspace all

# Scaffold the recommended hosted Angular starter
slcli webapp new my-dashboard

# Low-level/manual starter path for custom framework setup
slcli webapp init ./my-dashboard-manual

# Install bundled AI skills for this repo
slcli skill install --client agents --scope project

# Create Plugin Manager packaging config
slcli webapp manifest init ./my-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

# Package the app and generate the thin submission manifest.json
slcli webapp pack --config ./my-dashboard/nipkg.config.json

# Provision a demo environment
slcli example install demo-data-1 --workspace Training

# Install an external example fixture and its sibling reference files
slcli example install --file ./fixtures/example-resources/config.yaml \
	--workspace nigel-test-workspace

# Delete resources from the external example fixture
slcli example delete --file ./fixtures/example-resources/config.yaml \
	--workspace nigel-test-workspace

Color Output

slcli auto-detects terminal color support for tables, status lines, and JSON output.

  • SLCLI_COLOR=always forces color when you want ANSI output even through wrappers or pseudo-terminals.
  • SLCLI_COLOR=never disables Rich color output explicitly.
  • NO_COLOR=1 also disables color output and takes precedence over auto-detection.

Authentication Overrides

slcli resolves runtime connection settings in this order:

  • Profile selection: --profile, then SLCLI_PROFILE, then the current profile in config.
  • API URL, API key, and Web URL: SLCLI_API_URL / SLCLI_API_KEY / SLCLI_WEB_URL, then the legacy SYSTEMLINK_* aliases, then the active profile, then legacy keyring fallbacks.

Use slcli info to see the effective source for each value and whether environment overrides are active. Use slcli config view to inspect the stored profile values on disk.

Self-Signed Server Certificates

TLS certificate verification remains enabled by default. When slcli login or slcli config add reaches a server with an untrusted certificate, it displays the certificate subject, issuer, validity, and SHA-256 fingerprint before asking for approval. The certificate is stored only after explicit approval and is then used as a verified PEM trust entry for that server origin.

For non-interactive setup, provide the fingerprint explicitly:

slcli login --url https://systemlink.example.local \
	--api-key "$SYSTEMLINK_API_KEY" \
	--web-url https://systemlink.example.local \
	--trust-fingerprint <sha256-fingerprint>

Trust entries can also be managed directly:

slcli config trust list
slcli config trust add --url https://systemlink.example.local --fingerprint <sha256-fingerprint>
slcli config trust remove --url https://systemlink.example.local

Managed certificates are stored under the trust directory next to the slcli configuration file. Hostname verification is still enforced. SLCLI_SSL_VERIFY=false disables certificate verification entirely and should only be used as a temporary diagnostic override; it does not add a trusted certificate.

When the operating system trust store is available, it remains the default even if SSL_CERT_FILE points to a single corporate root certificate. Use REQUESTS_CA_BUNDLE when an explicit complete CA bundle is required.

Documentation

Section Description
Getting Started Installation, authentication, profiles, AI integration
Command Reference Complete docs for all command groups and options
Workflows Building webapps with AI, demo provisioning, multi-env ops

Contributing

See CONTRIBUTING.md for development setup, coding standards, and contribution guidelines.

License

MIT

About

CLI tool for managing SystemLink resources

Resources

Contributing

Stars

6 stars

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages