Celigo CLI#
plr dev celigo provides two commands for the Celigo gRPC service:
Command |
Purpose |
|---|---|
|
Run the service on the computer connected to the instrument and wait for requests. |
|
Connect to a running service, print identity, status, and configuration as JSON, then exit. |
Installation#
The server uses POSIX file locks and is tested on Linux. From a PLR checkout, install the device imaging and RPC dependencies:
python -m pip install -e '.[celigo,rpc]'
Physical operation also needs the ftdi extra, the Lumenera SDK, USB access, and
the instrument’s vendor calibration/configuration files. These are not required
for the remote client.
python -m pip install -e '.[celigo,rpc,ftdi]'
View device and command help with:
plr dev celigo --help
plr dev celigo serve --help
plr dev celigo inspect --help
Run the service#
plr dev celigo serve --config-root /path/to/Celigo
Only the instrument’s calibration/configuration location is required. The camera
driver uses LUCAM_SDK_LIBRARY or system library discovery; set --lucam-sdk for
a custom SDK location. Set --usb-address when automatic controller discovery
does not identify the instrument.
Option |
Meaning |
Default |
|---|---|---|
|
Directory for durable jobs and images. |
|
|
Instrument installation root or configuration directory. |
Required |
|
Path to the Lumenera SDK library. |
|
|
Path to the exclusive service lock for this instrument. |
|
|
Controller USB topology, such as |
Automatic discovery |
|
Device identity advertised by the service. |
|
|
Interface address to listen on; |
|
|
Local gRPC listening port. |
|
|
Capacity for retained images and reservations across jobs; increase for larger scans. |
|
Startup loads configuration and takes the service lock without opening the driver or moving hardware. It prints a JSON startup record with the endpoint, device identity, state, and configuration ID, then keeps running until stopped with Ctrl+C or SIGTERM.
Status starts as Uninitialized. Initialization requires creating and explicitly starting an initialization job through the RPC API. A restart requires initialization again; it never automatically repeats hardware work.
Each process serves one device. The default data directory follows the device ID;
the default lock is shared independently of device ID and data location. For
multiple instruments on one computer, use distinct device IDs, ports, and
--hardware-lock paths. Services targeting the same instrument must share a lock
path, including services running as different OS users.
The listener defaults to loopback. To accept connections from other computers:
plr dev celigo serve --config-root /path/to/Celigo --host 0.0.0.0
Supply a specific interface IP instead to bind only that interface. Clients connect to the server computer’s IP or hostname. The listener uses plaintext gRPC without authentication. An SSH tunnel to the default loopback listener provides authenticated, encrypted remote access.
Inspect a running service#
plr dev celigo inspect
inspect connects to the supplied endpoint, verifies the device identity and API
version, and prints a JSON object with device, status, and configuration
fields. It then exits without initializing the instrument, starting a job, or
accessing USB.
Option |
Meaning |
Default |
|---|---|---|
|
Address of the running service or local SSH tunnel, as |
|
|
Expected device identity; must match the service. |
|
RPC operations#
The service supports initialization, drawer opening and closing, individual brightfield captures, and durable scan jobs. Scans use the same specifications as the scan-planning notebook: named wells, points, seeded random sampling, and full coverage, with block grids, multiple channels, and optional image autofocus. Planning is hardware-free; starting a scan requires initialization and exclusive instrument ownership. Each image is retained with its plan indices and actual acquisition metadata and can be retrieved while the scan continues. Auto-exposure is not exposed, and laser operation is disabled.
See the Celigo gRPC reference for the protocol, job lifecycle, Python client, and service development details.