SystemLink CLI (slcli) is a cross-platform Python CLI for SystemLink integrators, providing comprehensive management of SystemLink resources via REST APIs.
- 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
.slscontent - 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
# 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# 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-workspaceslcli auto-detects terminal color support for tables, status lines, and JSON output.
SLCLI_COLOR=alwaysforces color when you want ANSI output even through wrappers or pseudo-terminals.SLCLI_COLOR=neverdisables Rich color output explicitly.NO_COLOR=1also disables color output and takes precedence over auto-detection.
slcli resolves runtime connection settings in this order:
- Profile selection:
--profile, thenSLCLI_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 legacySYSTEMLINK_*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.
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.localManaged 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.
| 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 |
See CONTRIBUTING.md for development setup, coding standards, and contribution guidelines.
MIT