# RMS Software RMS Software is a generic remote-station control platform with a web UI, passwordless authentication, plugin-based hardware integration, and OpenWebRX+ orchestration. This repository is intentionally station-agnostic. Site-specific deployment, host bindings, and operational overrides belong in a separate deployment repository. ## Core Features - Passwordless auth via email link and OTP methods - JWT access/refresh session model with role-based permissions - Plugin runtime with capability provider switching - OpenWebRX+ session/ticket integration and managed band/profile support - Station lifecycle controls (activate/deactivate, ownership, safety locks) - Rotor, RF route, TX/PTT and VSWR integration via plugins - Activity/audit logs and SSE event stream for live UI updates ## Quick Start 1. Copy `.env.example` to `.env`. 2. Install dependencies: ```bash npm ci ``` 3. Start development mode: ```bash npm run dev ``` 4. Open `http://localhost:8080`. ## Plugin Overview Core and plugin docs: - Core: `docs/core-overview.md` - Plugin index: `docs/plugins/README.md` Auth - `rms.auth.smtp_relay`: email link challenge delivery through SMTP relay - `rms.auth.otp_email`: OTP challenge delivery through email - `rms.auth.oauth`: OAuth/OIDC authorization-code login (disabled by default; configurable authorize/token/userinfo/client settings) Google example (plugin settings): - `authorizeUrl`: `https://accounts.google.com/o/oauth2/v2/auth` - `tokenUrl`: `https://oauth2.googleapis.com/token` - `userInfoUrl`: `https://openidconnect.googleapis.com/v1/userinfo` - `scope`: `openid email profile` - `emailField`: `email` - `clientId`: `.apps.googleusercontent.com` - `clientSecret`: `` - `redirectUri`: `/v1/auth/oauth/callback` (or leave empty to auto-derive) Station & Access - `rms.station.shell`: station activation/deactivation command execution - `rms.station.access.policy`: export effective access list for OpenWebRX policies - Hardware guide: `docs/hardware-station-shell-guide.md` OpenWebRX+ - `rms.openwebrx.bandmap`: managed band/profile integration - `rms.openwebrx.guard`: OpenWebRX safety and consistency guard TX/PTT/Audio - `rms.tx.control.native`: native TX on/off command provider - `rms.tx.state.file`: file-based TX state provider - `rms.tx.audio.core`: core TX audio session management - `rms.microham`: microHAM provider for PTT/audio related capabilities - Hardware guides: `docs/hardware-tx-control-guide.md`, `docs/hardware-microham-guide.md` RF/Hardware - `rms.rfroute.shell`: RF route switching via shell commands - `rms.rotor.hamlib`: rotor control via hamlib/rotctl - Hardware guides: `docs/hardware-rfroute-guide.md`, `docs/rotor-rot1prog-guide.md`, `docs/rotor-alfaspid-rak-rot1prog-manual-notes.md` VSWR - `rms.vswr.native`: native VSWR command provider - `rms.vswr.nanovna`: NanoVNA-based VSWR provider - `rms.vswr.report_reader`: reads and serves VSWR report artifacts - Hardware guide: `docs/hardware-vswr-nanovna-guide.md` Ops/Help - `rms.debug.remote`: remote debug snapshot/log provider - `rms.help.basic`: basic UI help content provider ## Repository Boundaries This repository contains: - generic software source (`server`, `public`, `plugins`) - generic defaults (`.env.example`) This repository does not contain: - station-specific hostnames, hardware paths, or production secrets - deployment overlays for specific stations Recommended layering for deployments: 1. RMS Software defaults 2. Station-specific overlay repository 3. Server environment variables (highest priority) ## License GPL-3.0-only. See `LICENSE`. x