Skip to main content
The Lager Command-Line Interface (CLI) provides a powerful and scriptable way to interact with your Lager Box and connected hardware directly from your terminal. It is the ideal tool for manual control, shell scripting, and integration into CI/CD pipelines.

Core Concepts

The CLI follows a standard GROUP COMMAND structure. Most commands operate on a specific Lager Box (Lager Box), which is specified using the --box option.

Nets

Most hardware commands operate on nets - named abstractions representing physical test points or signals. Nets map friendly names to instrument channels.

Key Command Groups

Below is a summary of the main command groups available in the Lager CLI.

Lager Box Management

  • Boxes: Manage Lager Box configurations (add, edit, delete, import/export, lock)
  • Hello: Verify connectivity to your Lager Box
  • Update: Update Lager Box software
  • SSH: Direct SSH access to Lager Box
  • Logs: Check the size of Lager Box log files, and clean old ones

Configuration

  • Instruments: List connected test equipment
  • Nets: Create and manage nets (test point abstractions)
  • Defaults: Set default Lager Box and net configurations

Power & Simulation

  • Supply: Control programmable power supplies
  • Battery: Simulate battery characteristics (SOC, voltage, capacity)
  • Solar: Control solar panel simulators
  • E-Load: Control electronic loads (CC/CV/CR/CP modes)
  • Watt: Read power consumption from watt meters
  • Energy: Integrate energy/charge and compute power statistics (Joulescope JS220)

Measurement

  • Scope: Control oscilloscopes for waveform capture
  • Logic: Control logic analyzers with protocol decoding
  • ADC: Read analog voltage values
  • Thermocouple: Read temperature sensors

I/O & Communication

  • GPI: Read digital inputs
  • GPO: Write digital outputs
  • DAC: Analog output voltage control
  • UART: Serial communication
  • USB: USB port power control
  • BLE: Bluetooth Low Energy scanning

Development

  • Debug: Flash firmware, GDB server, memory access, RTT logging
  • Python: Execute Python scripts on Lager Box
  • Exec: Run build/test commands in a local Docker dev container
  • Devenv: Configure the local Docker development environment
  • Binaries: Run custom binaries on Lager Box

Utilities

  • Webcam: Video capture and streaming
  • Arm: Control robotic arm positioning

Example: Test Script Workflow

This example shell script demonstrates a typical hardware test workflow.

Setting Default Lager Box

To avoid specifying --box on every command, set a default Lager Box:

Box Resolution

A command that needs a Lager Box picks it in this order:
  1. The --box option of that command
  2. The LAGER_BOX environment variable
  3. The default box from lager defaults add --box
--box takes the name of a saved box or an IP address. With none of the three, the command fails. It lists your saved boxes, or tells you how to add one.

Global Options

These options go before the command group, for example lager --version: --box is not a global option. Each command that talks to a box takes its own --box, after the command. Every command also takes --help. On lager install and lager update, --version names the box version to deploy, not the CLI version.

Tips

  • Use lager <command> --help to see all options for any command
  • Most commands support --yes to skip confirmation prompts
  • Set defaults with lager defaults add to reduce typing
  • Use the tui subcommand (where available) for interactive control
  • Commands that read values (like adc, soc) can be used in scripts