plesty-server
Every command the bench application takes, grouped as the console groups
them. The options every command shares — which home, which fleet file — are
in the CLI overview. Each command below is also available from
another machine as plesty-bench <command> — see plesty-bench.
For a walkthrough rather than a reference, start from Usages.
Declaring devices
plesty-server fleet init [PATH] [--force] # write an annotated fleet.yaml (default ./fleet.yaml)
plesty-server declare NAME PACKAGE [--version V | --git URL --ref REF]
[--arg X …] [--env K=V …] [--no-autostart]
[--fleet FLEET]
plesty-server list [--no-probe] [--json] # name, source, installed version, state, port
plesty-server fleet new FLEET # an empty fleet: <home>/fleets/FLEET.yaml
plesty-server fleet list [--json] # every fleet, its file and device count
--arg and --env repeat, once per value: --arg --address --arg "USB0::…".
declare allocates a port unless the args or env name one, and writes the
fleet file back — the current fleet, the one that already declares NAME, or
--fleet FLEET. A new bench starts on an empty <home>/fleets/default.yaml,
so the agent and the console share one file. A name is declared in one fleet
of a bench only: it names the device’s folder, log and process record. Every
write re-reads its file first, so neither the console nor the agent writes
over what the other declared. The keys it writes are in
Files and settings.
fleet new leaves the current fleet current; through plesty-bench -b BENCH fleet new cryo and plesty-bench -b BENCH declare … --fleet cryo a client
sets up a fleet on another bench.
In the console: Device ▸ Add device… — see Declare device.
Modules — the bench’s store
plesty-server module list [--json]
plesty-server module install PACKAGE [--version V] [--git URL --ref REF]
[--force] [--no-wait]
plesty-server module load FOLDER [--ref BRANCH] [--no-wait]
Stocks the bench; names no device and needs no fleet. module install of a
version not yet on PyPI falls back to the module’s repository at tag
v<version>. module load records a module’s repository already on this
machine where it lives — nothing is copied — and runs it with the folder’s own
.venv; --ref checks that branch out in the folder first.
In the console: Hub ▸ Browse… and Hub ▸ Load from…; Hub ▸ Installed modules… lists and uninstalls what either put on the bench.
Installing what a device declares
plesty-server install NAME [--force] [--no-wait]
plesty-server update NAME [--ref REF] [--no-wait]
plesty-server uninstall NAME
These run as jobs: the command streams the job’s log and exits with its code,
unless --no-wait prints the job id instead.
updateon a checkout pulls it and re-syncs; with--ref, it installs a checkout at that ref beside the old one and points the declaration at it. On a release it reinstalls the same version — pointing a device at a newer release is an edit to its declaration followed byinstall.uninstallstops the server, then removes its environment unless another declared device still uses it.
Servers
plesty-server start NAME [--no-wait] [--timeout S]
plesty-server stop NAME [--timeout S]
plesty-server restart NAME [--no-wait]
plesty-server status [NAMES…] [--no-probe] [--json]
plesty-server log NAME [-n 50]
plesty-server clear-log NAME
startneeds a declaration. It installs first when nothing on the bench serves it, then waits — 30 s unless--timeoutsays otherwise — until the server answersdescribe, not merely until the process exists.stopasks before it insists: a clean stop request first, so the module closes the instrument, then a terminate, then a kill.--timeoutis how long the clean step is given.statusprintsNAME STATE PID PORT STARTED DETAILper server;--jsonadds the exit code of one that ended. The states arestopped,starting,running(answering on its port) andexited(it died —logsays why).--no-probereports the process only, without asking the server.clear-logempties the log, and with it the console’s Traffic history.
Fleet
plesty-server fleet up [NAMES…] [--no-install] [--no-wait]
plesty-server fleet down [NAMES…]
plesty-server fleet status [--no-probe]
plesty-server fleet run [NAMES…] [--interval 5] [--agent] [--bind ENDPOINT]
[--token …] [--leave-running]
Command |
With no NAMES |
|---|---|
|
Installs what is missing and starts the working fleet — the devices marked |
|
Stops the working fleet and every other server started here. |
|
Takes no names: shows every declared device. |
|
Brings the working fleet up and keeps it up: every |
fleet run --agent is what a bench with nobody logged in should run — see
Keep a bench up without a window.
Field tests and jobs
plesty-server field-test NAME [--tier host|client] [--address A] [--gates a,b]
[--repetitions N] [--keep-going] [--keep-server]
[--no-wait] [-- EXTRA…]
plesty-server reports NAME [--json]
plesty-server jobs list [--name NAME] [--kind KIND] [--json]
plesty-server jobs log JOB_ID [--follow] [--offset N] [--json]
plesty-server jobs cancel JOB_ID
The gates are discovery, connect_lifecycle, param_roundtrip,
param_constraints, functions, buffer_drain, stability and
error_recovery; a module’s script may accept fewer. The options are
explained in Field-test a device.
jobs cancel kills the job’s process tree. For an experiment’s run that
means the devices it started are not stopped — stop the run from the
console instead, or stop them by hand.
Serving an experiment’s run
plesty-server serve NAME --entry JSON [--json]
plesty-server share-check ROOT PROBE --reply FILE [--json]
What Run asks of each bench in an experiment’s setup, through its agent;
you rarely type them. serve makes sure device NAME is running here, declared
from its setup.yaml entry (given as JSON) — declared fresh when the bench
lacks it, re-declared and restarted when the entry differs — and reports the
port. share-check reads PROBE under ROOT and writes FILE beside it, which is
how the bench that starts a run checks that every bench sees the same shared
data folder. See Run an experiment.
Maintenance
plesty-server purge --list [--json | --tsv FILE]
plesty-server purge PARTS… --yes
plesty-server purge --all --yes
The parts are logs, state, packages, tools and config, and each
item --list names under them — module:<package>, fleet:<file>,
device:<name>, … — can be named on its own; --all removes the home
directory itself. --tsv writes the items, grouped, for the Windows
uninstaller’s list. What each one holds is in
Remove only part of the data.
Agent and console
plesty-server agent [--bind tcp://*:5550] [--token …] [--workers 4]
plesty-server gui [--title TEXT]
agent takes its defaults from <home>/agent.yaml; every option overrides
it.
plesty-server data-path [SHARE [--folder FOLDER] | --clear]
data-path shows the bench’s Plesty share — the lab’s shared disk as this
machine mounts it — and its folder in it, under which every device it
starts writes; or sets them. SHARE must be mounted; FOLDER is a path inside
it, created when missing, and the share itself when left out. They are the
Plesty share and Bench folder of Server ▸ Configure…;
plesty-bench -b BENCH data-path SHARE --folder FOLDER sets another bench’s. gui opens the console and needs the gui extra, which
the installers include.
Machine-readable output
list, status, module list, reports, jobs list, serve,
share-check and purge --list take --json. jobs log JOB_ID --offset N --json returns {text, offset, running, returncode, state}, which is what a
tailing client polls.