-
Notifications
You must be signed in to change notification settings - Fork 0
Terminal and Remote Desktop
Both run through the agent's existing outbound tunnel — no SSH daemon, no keys,
no inbound ports, no VNC/RDP server. Both are gated by the admin token and honor
a host's --allow-exec=false setting.
A real PTY shell on the host, streamed to a browser terminal.
- From the dashboard: click a host → Terminal. Or use the Terminal button on the host card.
-
From the CLI:
This behaves like SSH — raw mode, window-resize support — and ends when the remote shell exits.
autormm-client shell <host>
Supported on Linux and macOS agents. (Windows agent terminal is not yet available — it needs ConPTY.)
The host's live screen with mouse and keyboard control.
- Click a host → Remote (or the card's Remote button). It opens a viewer in a new tab.
- The agent captures the screen and streams changed tiles; your clicks and keystrokes are sent back.
- Use the quality slider and the Ctrl+Alt+Del button in the viewer bar.
Requirements: the target must be a desktop host (installed with the
&desktop=1 command) with a graphical session. Headless servers have the Remote
button disabled. Screen capture uses X11 on Linux (use Xorg or Xwayland —
native Wayland isn't supported) and GDI on Windows.
If the host has more than one display, the viewer bar shows a display picker. It starts on All (every display side by side); click Display 1, Display 2, … to isolate one (the primary is marked ★). You can switch live during the session.
The viewer bar has a resolution dropdown (next to the display picker) listing the
modes the host reports for the active display. Pick one to change the host's
resolution live — handy for dropping a 4K workstation to 1080p for a larger,
smoother remote view. It targets the selected display; when viewing All on a
multi-monitor host it's hidden (there's no single resolution for the union).
Needs xrandr on Linux hosts; Windows is built in.
The host's mouse pointer is drawn as an overlay in the viewer. Screen capture doesn't include the hardware cursor, so the agent streams its position separately — this is normal and needs no configuration.
The default codec is JPEG tile-deltas, which works everywhere. For smoother motion and lower bandwidth on video, the viewer bar offers a JPEG-tile / H.264 toggle — but only when both ends support it:
- the host has
ffmpeg(with libx264) on itsPATH— the encoder (winget install Gyan.FFmpegon Windows,apt install ffmpegon Linux; then restart the agent so it picks up the newPATH); - your browser supports WebCodecs (Chrome or Edge).
If neither condition is met, no toggle appears and you stay on JPEG. If H.264 is selected but the browser can't decode the stream, the viewer automatically falls back to JPEG-tile — the remote desktop never breaks. H.264 is currently experimental; JPEG-tile remains the default at every connect.
Text copies both ways during a remote session:
-
Local → host: press Ctrl/Cmd+V in the viewer — your local clipboard is
sent to the host and pasted. This works even over plain
http. -
Host → local: copy on the host and it syncs back to your machine. This
direction writes your local clipboard via the browser Clipboard API, which
needs a secure context (https, or a zero-trust overlay terminating TLS,
or localhost) — over plain
httpthe browser blocks it.
From a host's detail panel, click Files:
-
Upload: pick a file and send it — it lands in
autormm-incomingin the host user's home folder. - Download: enter a path on the host and it downloads to your browser.
File access uses the same permission as the terminal, so a host installed with
--allow-exec=false also blocks file transfer. (Phase 1 is single-file up/down;
a folder browser is planned.)
You don't need an interactive shell for a quick command:
autormm-client exec <host> uname -a
autormm-client exec <host> --shell powershell "Get-Process"Every command is written to the hub's log as an AUDIT exec line. To disable
remote command execution and terminals on a host entirely, install/run its agent
with --allow-exec=false (or AUTORMM_NO_EXEC=1).