remotecmd Plugin
Remote command execution via WebSocket relay. Execute shell commands on remote machines over Tailscale or public internet.
Architecture
Client (sc remotecmd exec) → remotecmd-cli → WebSocket → Relay Hub → WebSocket → Target Daemon → shell
Three-node topology:
- Relay: Central WebSocket hub that routes messages by target name
- Target Daemon: Connects to relay, registers itself, waits for commands, executes them
- Client: One-shot CLI that connects to relay, sends a command, and prints the result as JSON
Commands
Execute
remotecmd exec run --target <name> --cmd <command>— Execute command on remote target
Daemon Management
remotecmd daemon start [--token <t>] [--daemon]— Start target daemonremotecmd daemon stop— Stop target daemonremotecmd daemon status— Check target daemon status
Relay Management
remotecmd relay start [--port <n>] [--daemon]— Start relay hubremotecmd relay stop— Stop relay hubremotecmd relay status— Check relay hub statusremotecmd relay config --url <u> --name <n>— Configure relay connection
Target Configuration
remotecmd target add --name <n> --token <t>— Add a known targetremotecmd target remove --name <n>— Remove a targetremotecmd target list— List configured targets
Info
remotecmd self version— Show remotecmd-cli version
Usage Examples
- "Run a command on a remote PC:
remotecmd exec run --target p22 --cmd \"uptime\"" - "Check if the target daemon is running:
remotecmd daemon status" - "Start the relay hub:
remotecmd relay start --port 3032 --daemon" - "Add a new target:
remotecmd target add --name p22 --token abc123"
Installation
curl -LO https://github.com/javimosch/remotecmd-cli/releases/latest/download/remotecmd-cli-linux-amd64
chmod +x remotecmd-cli-linux-amd64
sudo mv remotecmd-cli-linux-amd64 /usr/local/bin/remotecmd-cli
Setup
Start relay on a reachable machine:
remotecmd-cli relay daemon start --port 3032 -daemonStart target daemon on the machine that will execute commands:
remotecmd-cli set-relay --url http://<relay-host>:3032 --name my-node remotecmd-cli daemon start -daemonFrom a client machine:
remotecmd-cli set-relay --url http://<relay-host>:3032 --name client remotecmd-cli add-target --name my-node --token <token> remotecmd-cli --target my-node --cmd 'echo "hello"'
Key Features
- WebSocket relay for bidirectional real-time communication
- Token-based authentication between targets and clients
- Parallel command execution on target daemon
- Auto-reconnect on connection loss
- JSON output for machine parsing
- Auto-generated auth tokens with file persistence