Skip to content

About

Free open-source Linux remote operations workstation for SSH, SFTP, tunnels, RDP, VNC, Mosh, Telnet, serial consoles, and local shells.

Topics

Resources

Code of conduct

Contributing

Security policy

Stars

0 stars

Watchers

0 watching

Forks

Latest commit

 

History

131 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

🌐 English · Deutsch · 简体中文 · Italiano · Español · Français · 日本語 · Português · Русский

Aux Command

License: AGPL v3 Platform Release Buy Me a Coffee

Aux Command is Auxillo's free, open-source Linux-native remote-operations workstation: a secure desktop console for operators who need SSH terminals, SFTP, tunnels, remote-desktop launchers, Mosh, Telnet, serial consoles, local shells, profiles, and release-grade operational tooling in one application.

It is built as an original Auxillo public product with native Linux tooling, explicit trust boundaries, modern Electron hardening, no paid feature walls, and verifiable release engineering.

Current status: 0.5.x Linux x86_64 engineering release. The repository, GitHub Actions, package builds, release/update wiring, security documentation, GPG-signed releases, and source validation are in place. Releases are cryptographically signed with the Aux Command Release Signing key.


Product overview

Aux Command is designed for technical operators, infrastructure teams, and security engineers who need to move quickly across local and remote systems without scattering work between many uncoordinated tools.

It provides:

  • a tabbed terminal workspace;
  • persistent connection profiles;
  • quick-connect workflows for network targets and serial devices;
  • native OpenSSH terminal sessions;
  • graphical SFTP file operations;
  • local, remote, and dynamic SSH tunnels;
  • local shell sessions;
  • Mosh, Telnet, serial, RDP, and VNC entry points;
  • keyboard-oriented workflow controls;
  • update/release diagnostics;
  • security-first storage and process-lifecycle behavior.

The design is intentionally conservative where security matters. Aux Command delegates mature protocol behavior to audited Linux tools when that is safer than embedding a protocol surface inside Electron, and it uses bundled helpers only where a small controlled bridge is safer and more portable.


Supported operating systems

Aux Command is currently a Linux desktop application.

Operating system family Status Recommended package Notes
Fedora Workstation / Fedora KDE x86_64 Supported engineering target .rpm or AppImage Primary local development and package-build environment.
Ubuntu LTS x86_64 Supported engineering target .deb or AppImage CI builds on Ubuntu 24.04. Runtime tools install through apt.
Debian 12+ x86_64 Expected supported .deb or AppImage Uses the Debian package dependency model; verify on the target desktop before production rollout.
RHEL / Rocky / AlmaLinux x86_64 Expected supported .rpm or AppImage Requires modern desktop libraries and OpenSSH/Python runtime packages.
openSUSE x86_64 Expected supported .rpm or AppImage Runtime tools install through zypper; validate package policy locally.
Arch Linux / EndeavourOS / Manjaro x86_64 Source/AppImage path AppImage or source No native pacman package is produced yet; runtime tools install through pacman.
Other modern x86_64 Linux desktops Best effort AppImage Requires a graphical session and standard Electron/Linux desktop dependencies.
Windows Not supported - No Windows package is currently produced.
macOS Not supported - No macOS package is currently produced.
Linux ARM64 Not currently shipped - The code is not intentionally x86-only, but current release artifacts are x86_64 only.

Desktop environments expected to work include GNOME, KDE Plasma, Xfce, Cinnamon, and other modern X11/Wayland desktops with the normal Electron runtime stack. Wayland and X11 both require target-distro validation before a public production claim.


Installation

Full instructions are in INSTALL.md.

AppImage - portable Linux install

Use this when you want the least invasive installation path.

chmod +x Aux-Command-0.5.0-x86_64.AppImage
./Aux-Command-0.5.0-x86_64.AppImage

If the host does not support AppImage FUSE mounting, extract and run it:

./Aux-Command-0.5.0-x86_64.AppImage --appimage-extract
./squashfs-root/AppRun

Debian / Ubuntu

sudo apt install ./Aux-Command-0.5.0-amd64.deb
aux-command

The Debian package declares the core runtime dependencies:

  • python3
  • openssh-client

Fedora / RHEL / Rocky / AlmaLinux / openSUSE

Fedora / RHEL-style systems:

sudo dnf install ./Aux-Command-0.5.0-x86_64.rpm
aux-command

openSUSE-style systems:

sudo zypper install ./Aux-Command-0.5.0-x86_64.rpm
aux-command

The RPM declares the core runtime dependencies:

  • python3
  • openssh-clients

Optional protocol tools

Aux Command can run core local, SSH, SFTP, tunnel, Telnet, and serial workflows with Python/OpenSSH plus bundled helpers. Some protocols intentionally use external Linux clients:

Feature External tool Why
Mosh mosh Mosh requires the host client and a compatible remote mosh-server.
RDP FreeRDP (xfreerdp) Keeps RDP certificate, clipboard, and display behavior at the distro-managed client boundary.
VNC TigerVNC (vncviewer) Keeps VNC rendering and auth behavior at the distro-managed client boundary.
X11 forwarding OpenSSH + local X11/Xwayland Trust-expanding SSH feature, disabled by default.

Install optional runtime tools with:

./scripts/install-runtime-tools.sh

What Aux Command does

Terminal workspace

  • PTY-backed terminal tabs rendered with xterm.js.
  • Local shell sessions.
  • Per-profile terminal theme, font, cursor, and scrollback settings.
  • Terminal tab lifecycle with close confirmations for live sessions.
  • Split/tiled multi-session layouts, with resizable terminal panes. Choose Auto tiles, Side by side or Stacked panes beside the layout toggle. Drag a terminal tab onto another tab or pane to reorder it; order and arrangement are saved.
  • Right-click a terminal tab and choose Move to separate window to use another monitor. Return to workspace (or close that window) reattaches the same live session without reconnecting. Detached terminal IPC is limited to its session.
  • Drag the connections sidebar edge to resize it; use its collapse button to hide it. Width and collapsed state persist. The file sidebar is also resizable.
  • Maximize the active terminal with its corner control or the workspace Maximize button; Restore returns to the saved layout. F11 toggles application fullscreen.
  • Named workspaces retain session order, titles, working directories and pane geometry. Opening a workspace adds its sessions without closing existing work.
  • Workspace settings include global terminal defaults and editable shortcuts.
  • Terminal search.
  • Active-session transcript export with local review/copy/save/print controls.
  • Session replay: every session records output with timing (bounded to recent activity, memory only) and can be replayed in a read-only terminal at 1×–8× or instant speed from the transcript menu.
  • Live local-host stats (load, memory, root disk) in the status bar; remote SSH stats stay on-demand through the Live Monitor.
  • Explicit per-session terminal logging to a local operator-selected file.
  • Command palette.
  • Command snippets.
  • Guarded macro recording that saves reviewed terminal input as replayable snippets.
  • Guarded broadcast input across terminal sessions.
  • Reusable multi-host tasks (Ctrl+Shift+M) use selected authenticated local/SSH terminals. Review commands and targets before execution, save non-sensitive commands as reusable snippets, and see each host's completion/exit status. Commands run in POSIX sh subprocesses; terminals must be at a shell prompt. Timeout or Cancel sends Ctrl+C to pending tasks. Check the terminal when a process ignores interrupts. Sensitive commands can be excluded from task storage and suggestion history; existing terminal logging still applies.
  • Cross-session command history search overlay that inserts — never runs — the picked command (Ctrl+Shift+Y; history is memory-only).
  • Keyboard-first navigation and accessible tab/panel relationships.
  • Terminal assist (each part individually toggleable, on by default):
    • Passive OS/distro detection per session (os-release, MOTD, and banner heuristics — no probe commands are ever sent) with a tab badge.
    • Inline command suggestions from in-memory session history plus a per-OS dictionary (apt/dnf/zypper/pacman/apk/brew/winget aware); accept with Ctrl+Space. Suggestion history is never written to disk.
    • "Did you mean" fixes after command not found errors, offered as an insert-only chip that never auto-runs.
    • Dangerous-command guard that asks for confirmation before transmitting Enter on destructive commands (rm -rf /, dd of=/dev/…, mkfs, firewall flushes, shutdown/reboot, fork bombs).
  • Optional AI command assist (Ctrl+Shift+A) — off by default, bring your own endpoint: point it at llama.cpp, Ollama, or any OpenAI-compatible server; nothing is ever sent anywhere unless you ask, the API key is stored encrypted in the vault, and replies are inserted into the terminal, never executed.
  • Localized interface: workspace controls and dialog catalogs are available in English, Deutsch, Español, Français, Italiano, 日本語, Português, Русский and 中文, switchable live from the status bar. Dialog translations are machine-assisted with manual corrections; server/backend errors may retain their original language.

Workspace navigation and file browsing

Connection views now include All, Favorites and Open, with multi-term search. Use Ctrl+Tab to switch sessions, Ctrl+Shift+E to find a connection, and Ctrl+Shift+P to search tools and open sessions. The Settings button controls interface density and sidebar visibility. Drag tabs to reorder them, double-click or press F2 to rename, and right-click a tab for naming and text-size controls. The remote file browser supports filtering, sorting and dotfile visibility.

Connection organization

Manage connections below the search box provides search, multi-selection, bulk folder/tag/favorite editing and possible duplicate detection. Changes are reviewed and create a recovery point. Credentials are preserved; duplicate candidates are never automatically merged or removed. Folder names such as Production / Europe / Databases create nested groups. Parent rename/move includes its descendants. Searches cover all profiles, including rows not rendered yet.

SSH operations

  • Native OpenSSH sessions.
  • The terminal tab menu includes a Connection timeline with observed process, output and shell-directory events, plus detected DNS/network/authentication errors. Unreported phases are not marked successful.
  • SSH agent support through the user's existing environment.
  • ~/.ssh/config import and refresh support. Reimport resolves current OpenSSH settings, updates connection fields and preserves profile names, groups, saved credentials and appearance. Explicitly consolidated aliases remain consolidated on reimport.
  • Connection status uses the effective SSH destination. ProxyJump/ProxyCommand routes show an unknown status with an explanation; a direct TCP failure is not treated as proof that a routed server is offline.
  • Identity files.
  • Advanced per-profile OpenSSH known-hosts-file override for isolated lab or fixture profiles.
  • ProxyJump support.
  • Compression, keepalive, X11 forwarding, and agent forwarding controls.
  • Literal remote startup commands passed safely as OpenSSH arguments.
  • Optional SSH working-directory tracking in the profile editor uses Bash 5.1+ prompt integration without changing remote files. Explicit startup commands take precedence. Directory reports follow cd and feed workspace restore; the tab menu also supports an explicit directory override.
  • No local shell interpolation of profile values.
  • Explicit SCP fallback transfer mode for legacy SSH servers that do not expose SFTP; SFTP remains the default and SCP is limited to upload/download style file transfer.

SFTP

  • Graphical SFTP browser backed by ssh2.
  • Explicit host-key fingerprint confirmation.
  • Upload, drag-and-drop upload, download, inline UTF-8 text file view/edit, folder creation, rename, and delete operations.
  • Two-pane local/remote browsing supports selected files and recursive folders, including empty folders, with review before upload/download. Existing folders merge; conflicting files can be skipped, kept under new names or replaced. Select a folder's checkbox to transfer it, or its open button to browse it. The review limit is 4,096 entries and 32 levels; symlinks are not followed. These folder operations also work with FTP/FTPS.
  • Compare / sync folders reviews a one-way update from the current local or remote folder. Destination-only files remain. Optional SHA-256 comparison reads both copies; otherwise comparison uses file size and modification time.
  • Verify selected file pair compares one local and one remote file with SHA-256. Remote filename search walks subfolders without executing remote commands; it stops at 10,000 examined entries, 500 matches or a 30-second traversal budget.
  • Pause all and Resume / retry all operate on the managed transfer queue, including folder batches. Partial-file resume is within the running app; pending queues are not persisted across application restarts.
  • Inline remote editing uses a temporary upload plus OpenSSH POSIX rename where supported, with a 1 MB safety limit for in-app edits.
  • Separate treatment for account passwords and private-key passphrases.
  • Persistent SFTP secrets only when Linux desktop safe storage is encrypted.
  • Unsafe Electron basic_text secret storage is rejected.
  • Profile exports omit secrets and credential identifiers.

SCP fallback

  • SSH profiles can opt into SCP fallback transfer mode for constrained legacy servers.
  • SCP uses OpenSSH scp -O in batch mode with direct argument arrays and private temporary download staging.
  • SCP fallback supports regular file upload/download only; directory browsing, mkdir, rename, delete, and inline remote editing require SFTP.
  • Stored GUI-vault account passwords are refused for SCP fallback because external scp cannot consume them safely; use SSH agent or an identity file.

FTP / FTPS

  • FTP and FTPS file-browser profiles backed by basic-ftp.
  • FTPS uses encrypted TLS transport.
  • Plain FTP is guarded by an explicit insecure-transport warning because credentials and file contents are not encrypted.
  • FTP/FTPS reuse the graphical file-browser operations for browse, upload, drag-and-drop upload, download, inline UTF-8 text edit, mkdir, rename, and delete.
  • Persistent FTP/FTPS secrets use the same encrypted Linux safe-storage checks as SFTP secrets.

SSH tunnels

  • Local forwards.
  • Remote forwards.
  • Dynamic SOCKS forwards.
  • Evidence-based tunnel readiness using OpenSSH readiness behavior, not elapsed-time guessing.
  • Stop controls and lifecycle tracking.
  • Background tunnel runs use BatchMode=yes, so invisible password prompts do not hang in the background.

Protocol launchers and bridges

  • Mosh launcher with safely constructed SSH transport options.
  • RDP launcher through FreeRDP. Profiles include an opt-in audio setting and bounded initial embedded desktop resolution (800–3840 × 600–2160).
  • Embedded RDP/VNC controls include fit/actual size, view-only mode, Ctrl+Alt+Delete, and an explicit clipboard panel. Ctrl+Alt+Shift releases keyboard focus. Clipboard contents are not automatically copied locally.
  • VNC launcher through TigerVNC.
  • Bundled Python Telnet bridge.
  • Bundled Python raw serial bridge.
  • Serial quick connect with absolute Linux device paths such as /dev/ttyUSB0.
  • Bundled Python PTY helper.
  • Parent-death process guard so abnormal Electron exit does not leave helpers unmanaged.

Release and diagnostics

  • GitHub Releases update path wired through electron-updater.
  • Top-level Updates toolbar control plus diagnostics UI for update state and package behavior.
  • GitHub Actions Linux build pipeline.
  • AppImage, .deb, and .rpm package outputs for x86_64.
  • CycloneDX SBOM generation.
  • Release manifest and SHA-256 checksum verification.
  • Source archive generation with dependency/build/cache directories excluded.

Security model

Aux Command is built for security-sensitive operations. The implementation favors explicit boundaries over invisible convenience.

Key controls:

  • Electron renderer sandbox enabled.
  • contextIsolation enabled.
  • Node integration disabled in the renderer.
  • Chromium permission requests denied by default.
  • External navigation and popup creation denied by default.
  • Privileged IPC validates sender window and frame.
  • Direct process spawning with argument arrays; no profile values are passed through a local shell.
  • Managed helper processes use an exact-parent Linux death-signal guard.
  • Graphical SFTP host keys are explicitly verified; keys already trusted in OpenSSH known_hosts are honoured, and a different or @revoked key is flagged.
  • RDP server certificates are confirmed on first use like SSH host keys, and FreeRDP is pinned to the confirmed certificate with legacy RDP security disabled.
  • App pages load from a private app://aux origin and the embedded remote-desktop viewer from its own isolated origin.
  • Pasted text is stripped of control characters; multi-line and broadcast pastes are confirmed first.
  • SFTP secrets are stored persistently only when encrypted desktop safe storage is available.
  • Profile exports exclude secret material.
  • Telnet and some VNC deployments are recognized as potentially unencrypted legacy paths.

Security documentation:


Build from source

Requirements:

  • Linux x86_64 desktop.
  • Node.js >=22.
  • npm.
  • Python 3.
  • OpenSSH client.

Bootstrap and run:

./scripts/bootstrap.sh
npm start

Development mode:

npm run dev

Validate source:

npm run check

Build x86_64 Linux packages without publishing:

npm run dist:x64 -- --publish never

The Fedora build wrapper handles common local packaging gaps by downloading build helpers under the ignored .cache/ directory instead of installing system packages automatically.

On Debian 12, use Clang 16 or newer to compile the native SSH dependency against Electron 43 headers. With clang-16 installed, run CC=clang-16 CXX=clang++-16 npm run pack for an unpacked test build, or pass the same compiler variables to npm run dist:x64 -- --publish never. Desktop smoke tests under Xvfb also require libgtk-3-0, xauth, and Python websocket-client.


Verification status

Every change runs npm run check (syntax checks plus the full automated suite), the desktop UI qualification under Xvfb (scripts/run-ui-qualification.py), and protocol qualification against disposable loopback servers (scripts/qualify-linux.sh): FTP/implicit FTPS, Mosh, local/remote/SOCKS tunnels, and embedded RDP/VNC including changed-certificate rejection. The full dependency audit reports zero known vulnerabilities.

The live updater has been tested against the published v0.4.0 release: it authenticated the signed manifest, downloaded the AppImage, verified it, and installed it into an isolated location. Debian/RPM upgrades and encrypted credential preservation are tested separately.

Still open for broader product qualification:

  • live qualification across representative SSH/SFTP/tunnel/Mosh/RDP/VNC/X11/serial environments;
  • assistive-technology coverage with a real screen reader;
  • broader Wayland/X11, desktop-environment, high-DPI, and multi-monitor coverage.

Artifact trust path: GPG-signed release manifests and checksums (fingerprint in SIGNING_KEY.asc). GitHub artifact attestations may be enabled when the org/plan supports them; they are optional and do not replace Auxillo GPG verification.

See docs/RELEASE_STATUS.md and docs/LIVE_QUALIFICATION.md.


Keyboard shortcuts

Shortcut Action
Ctrl+K Focus quick connect
Ctrl+Shift+T Open local terminal
Ctrl+Shift+F Toggle SFTP
Ctrl+W Close active tab
Ctrl+Shift+C / Ctrl+Insert Copy terminal selection
Ctrl+Shift+V / Shift+Insert Paste into terminal
Middle-click Paste the highlighted (primary selection) text
Ctrl+click Open an http/https link from terminal output in the browser
F2 / double-click a tab Rename the tab (empty name restores the automatic title)
Ctrl+PageUp / Ctrl+PageDown Previous / next tab
Ctrl+Shift+PageUp / Ctrl+Shift+PageDown Move the active tab left / right
Ctrl+= / Ctrl+- / Ctrl+0 Larger / smaller / default terminal text
Ctrl+Space Accept inline command suggestion
Ctrl+Shift+Y Search command history across sessions
Ctrl+Shift+M Run a command on multiple sessions
Ctrl+Shift+A Ask AI (only when enabled with your own endpoint)

Tiled/single-session layout and tiled pane-size toolbar choices are persisted locally and restored on restart.

Copy and paste work like other Linux terminals. Highlighting text with the mouse copies it (turn this off with Copy on select in Settings or the terminal's right-click menu), and a middle-click pastes it. Right-click opens a menu with Copy, Paste, Paste selection, Select all, Find and Clear scrollback. In Settings you can switch right-click to the PuTTY style instead: it copies the selection, or pastes when nothing is selected. Inside tmux, vim, htop and other apps that use the mouse, hold Shift while you select or right-click.


Import and recovery

The SSH import button reads ~/.ssh/config directly and shows a visible summary, including when every host already exists. JSON imports preview additions and conflicts before applying changes. The Import / Export menu also provides workspace backups and automatic local recovery points. Portable exports omit saved credentials and private-key material.

See Import, export and recovery for duplicate handling, portable key paths, workspace restore and previous-AppImage recovery.

Data location

Application data is stored beneath Electron's Linux userData location, normally:

~/.config/Aux Command/aux-command-data/

Typical data includes profiles, command snippets, SFTP known-host fingerprints, workstation layout settings, and non-secret application state. Persistent SFTP secrets use the Linux desktop secret storage backend when that backend is encrypted.


Documentation map

Document Purpose
INSTALL.md End-user installation by Linux distribution/package type.
docs/ARCHITECTURE.md Runtime architecture, trust boundaries, storage, and protocol delegation.
docs/SECURITY.md Implemented security controls and reporting expectations.
docs/GITHUB_RELEASES.md GitHub Releases and updater publication runbook.
docs/VALIDATION.md Local validation and packaging commands.
docs/RELEASE_STATUS.md Current engineering release evidence and remaining gates.
docs/LIVE_QUALIFICATION.md Live protocol qualification checklist.
ROADMAP.md Live product roadmap with per-feature statuses.
docs/ROADMAP.md Versioned release plan (0.1 → 1.0).
CONTRIBUTING.md Pull request workflow and code standards.


Support

Aux Command is free and open source. If it helps your operations work, you can buy me a coffee.

License

Aux Command is free and open-source software licensed under AGPL-3.0-or-later. Every feature belongs in the public build; there are no enterprise-only modules, paid editions, or payment walls.

Third-party components retain their own licenses; see THIRD_PARTY_NOTICES.md and THIRD_PARTY_LICENSES.txt.

About

Free open-source Linux remote operations workstation for SSH, SFTP, tunnels, RDP, VNC, Mosh, Telnet, serial consoles, and local shells.

Topics

Resources

Code of conduct

Contributing

Security policy

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages