Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

podsdr-proxy command-line reference

podsdr-proxy [OPTIONS]
podsdr-proxy configure [--config <PATH>]

The run.sh / run-cloud.sh launchers are thin wrappers over these flags — use them directly when you need a non-default setup.

Precedence: the configuration file is the base; any flag you pass explicitly on the command line overrides the matching config value for that run.

Subcommand: configure

podsdr-proxy configure

An interactive terminal wizard that edits the config file: add/remove CAT radios (with serial-port autodetection), hide discovered OpenHPSDR radios, and so on. It writes the same proxy.toml described in Configuration file and exits. The same settings can also be edited from the web client’s config panel when browsing the proxy on the LAN.

Server options

FlagDefaultMeaning
--config <path><config-dir>/podsdr/proxy.tomlConfig file to load (~/.config/podsdr/proxy.toml on Linux, ~/Library/Application Support/podsdr/proxy.toml on macOS).
--port <n>8080HTTP(S) listen port.
--bind <addr>0.0.0.0Listen address.
--static-dir <path>(none)Directory with the web client to serve (the bundle’s web/). Without it the proxy only offers the API/WebRTC endpoints.
--origin <url>(all allowed)Allowed CORS origin; repeatable.
--max-sessions <n>32Maximum concurrent client (WebRTC) sessions.

TLS options

FlagDefaultMeaning
--tlsoffServe HTTPS. With no cert flags, a self-signed cert.pem/key.pem is generated next to the binary (or in ~/.podsdr if that isn’t writable) on first run and reused for 10 years, so the browser warning appears once per profile.
--tls-cert <path> / --tls-key <path>(auto-generate)Use your own certificate/key PEM pair (must be given together).
--tls-san <name-or-ip>(none)Extra SubjectAltName baked into the auto-generated certificate; repeatable. The certificate always includes localhost, pi.local, 127.0.0.1 and ::1 — add your host’s LAN IP or hostname here so browsers don’t report a name mismatch.

Changing SANs after the certificate exists has no effect — delete cert.pem/key.pem to force regeneration.

FlagDefaultMeaning
--broker-url <url>(none — uplink off)Broker to uplink to, e.g. wss://podsdr-broker.fly.dev.
--proxy-name <name>(none)Human-friendly name shown to your clients (e.g. home, shack).
--hub-public-key <hex>(none)The broker’s Ed25519 public key. Required for any non-localhost broker — the proxy uses it to verify the broker’s signed session tokens.
--identity-file <path><config-dir>/podsdr/proxy_ed25519.keyThis proxy’s identity keypair; generated on first use. The public key is the proxy’s permanent ID — keep the file to keep the identity (and the claim on your account).
--insecure-open-modeoffAllow a non-localhost broker without a hub key. Every relayed client then gets full TX rights. Development only.

Traditional-radio quick flags

These exist for the simple one-radio case; for anything more (several radios, network Icoms, per-radio options) use the configuration file. --cat-port replaces the config file’s [[traditional]] list for that run.

FlagDefaultMeaning
--cat-port <path>(none)Serial device of the CAT radio, e.g. /dev/ttyUSB0, /dev/cu.usbmodem1101, COM5.
--radio <model>x6100Which radio is on that port: x6100, qmx, ic7300, ic705, ftdx10, ftdx3000, ft991a, g90, fx4cr-v1, fx4cr-v2.
--audio-in <name>(system default)Audio capture device = the radio’s USB-audio output (RX audio).
--audio-out <name>(system default)Audio playback device = the radio’s USB-audio input (TX audio).
--force-data-mode <bool>trueSwitch the radio to its DATA mode on TX so its mic processing stays out of the audio path.
--baud <rate>(model default)CAT serial baud override.
--tx-audio-gain-db <dB>0TX audio makeup gain (−40…+40 dB) into the rig; also adjustable live from clients.

Logging

RUST_LOG=info ./podsdr-proxy ...

Without RUST_LOG the proxy logs warnings globally and info-level messages from its own components (discovery, sessions, audio, CAT). Set RUST_LOG=debug for protocol-level detail.