The pms command line
Reference · generated · every subcommand and flag of `pms`, printed by the binary itself
pms
Sends, receives, encodes, and inspects pulses across the local mesh. Run pms demo first to see a producer + consumer talk through the mesh in one terminal.
pms doctor
Verify the local toolchain and mesh runtime preconditions
| Argument | Default | Meaning |
|---|---|---|
--for <FOR> | Filter checks by developer profile (e.g. hft, ai, robotics) |
pms send
Send pulses to a UDP destination
| Argument | Default | Meaning |
|---|---|---|
<DEST> | required | Destination address (e.g. 127.0.0.1:9000) |
--count <COUNT> | 1 | Number of pulses to send |
--payload <PAYLOAD> | 16 | Envelope payload size in bytes |
pms recv
Bind a UDP address and print received pulses
| Argument | Default | Meaning |
|---|---|---|
<BIND> | required | Local bind address (e.g. 127.0.0.1:9000) |
--count <COUNT> | 1 | Maximum pulses to receive before exiting |
--timeout-ms <TIMEOUT_MS> | 5000 | Per-recv timeout in milliseconds |
--json | Emit JSON instead of human-readable output |
pms version
Print workspace + codec version stamp
| Argument | Default | Meaning |
|---|---|---|
--json | Emit JSON instead of human-readable output |
pms encode
Encode a JSON envelope spec and report the canonical wire bytes
| Argument | Default | Meaning |
|---|---|---|
--json <FILE> | required | Path to a JSON spec file (schema: EnvelopeSpec in pulse_cli::commands::encode_decode) |
--json-out | Emit JSON instead of human-readable output |
pms decode
Decode canonical wire hex back into an envelope summary.
Exits with status 1 when the envelope does not verify: its content does not produce the identifier it carries.
| Argument | Default | Meaning |
|---|---|---|
<HEX> | required | Hex string (whitespace trimmed) |
--json | Emit JSON instead of human-readable output |
pms ring
Snapshot a SHM-backed PulseRing (read-only secondary reader)
pms ring inspect
Snapshot ring header + the N most-recent slot summaries
| Argument | Default | Meaning |
|---|---|---|
<NAME> | required | Hub name (e.g. default_hub) or a raw POSIX SHM name starting with /; the ring’s header gives its capacity |
--count <COUNT> | 8 | Number of most-recent slots to summarize |
--json | Emit JSON |
pms modules
List the M01..M12 optimization modules, optionally by profile
pms modules ls
List modules, optionally filtered by developer profile
| Argument | Default | Meaning |
|---|---|---|
--for <PROFILE> | Filter by profile (hft, ai, robotics, telemetry, dev) | |
--json | Emit JSON |
pms bench
Throughput and latency of pulses over UDP loopback on this host
pms bench smoke
Throughput and latency of pulses over UDP loopback on this host: the same run as pulse bench
| Argument | Default | Meaning |
|---|---|---|
--count <COUNT> | 10000 | Number of pulses to send through the loopback |
--json | Emit JSON |
pms start
Start the local mesh-hub daemon (UDS + WebSocket).
In the background (the default) it waits up to 60 s for the daemon to serve, and stops one that does not (SIGTERM, then SIGKILL 5 s later) before it reports the failure and exits 1.
| Argument | Default | Meaning |
|---|---|---|
--foreground | false | Run in the foreground (block until ^C) |
--basket-path <BASKET_PATH> | Optional basket path for envelope capture |
pms attach
Attach to a running mesh-hub daemon under the given name and park
| Argument | Default | Meaning |
|---|---|---|
<NAME> | required | Process-visible name to register under |
pms push
Publish a one-shot envelope to a channel
| Argument | Default | Meaning |
|---|---|---|
<CHANNEL> | required | Routing key |
<PAYLOAD> | required | Payload as a UTF-8 string. Use --hex for raw bytes via hex |
--hex | Interpret payload as hex-encoded bytes | |
--type-name <TYPE_NAME> | Optional type name |
pms tap
Subscribe to a channel and print events live
| Argument | Default | Meaning |
|---|---|---|
--channel <CHANNEL> | Channel filter (exact or glob). Default: all | |
--type-name <TYPE_NAME> | Type-name filter | |
--json | One JSON object per event instead of the table format |
pms hello
Spin up a 2-thread demo (send + recv on channel hello)
pms demo
One-command end-to-end smoke loop: auto-starts the daemon if needed, runs a 5-message producer/consumer demo, cleans up.
It exits 1, saying how many arrived, when fewer than all five messages reach the consumer within 5 s. With PMS_DAEMON set it uses the daemon that names and starts none.
pms keys
Make and read the Ed25519 keys a client proves at attach.
A key file is its owner’s alone (mode 0600), and a client refuses one its group or others may read or write. Each subcommand prints the key’s public half as a line of a daemon’s --attach-keys list: its standard base64, 44 characters.
pms keys generate
Write a new key to a new file, readable and writable by its owner alone, and print its public key.
Exits 1, replacing nothing, when the file exists or cannot be written.
| Argument | Default | Meaning |
|---|---|---|
<PATH> | required | The key file to create |
pms keys public
Print the public key of a key file.
Exits 1 when the file cannot be read, holds no key, or its group or others may read or write it.
| Argument | Default | Meaning |
|---|---|---|
<PATH> | required | The key file to read |
pms docs
Print the generated reference pages the book carries
pms docs cli-markdown
The pms command tree as Markdown, from the definitions that parse the real arguments