RemotifyUI implements the protocol exposed by the checked-in remotifyd
sources. The daemon creates outbound connections only.
- Enrollment:
POST /v1/devices, Bearer enrollment token, HTTP 201. - Connection:
GET /v1/device-connections, Bearer device credential,X-Remotify-Shell-Type: sh|cmd|powershell. - WebSocket messages are binary and no larger than 131072 bytes.
- A connection sends a heartbeat after 15 seconds and every 15 seconds after that.
- Operations and queued responses are connection-owned and are never replayed.
0..2 type_id u16 big-endian
2..4 version u16 big-endian (1)
4..8 request_id u32 big-endian, non-zero
8..10 status u16 big-endian (0 ok, 3 failed)
10.. payload
Payload unsigned integers use LEB128. Strings and bytes use
varuint(length) + bytes. Signed exit codes use ZigZag i32 followed by
varuint. The optional exit-code marker is 0=present, 1=absent.
| ID | Direction | Message |
|---|---|---|
| 1 | Server → device | ExecRunRequest |
| 2 | Device → server | ExecReport |
| 3 / 4 | Device → server / server → device | Heartbeat request / response |
| 5 / 6 | Server → device / device → server | File stat request / response |
| 7 / 8 | Server → device / device → server | File upload request / response |
| 9 / 10 | Server → device / device → server | File download request / response |
| 11 / 12 | Server → device / device → server | Apply patch request / response |
File directions are daemon-centric: type 7 uploads from the device to an HTTP URL; type 9 downloads an HTTP URL to the device. The UI instead says “retrieve from device” and “send to device”.