omnyssh 1.0.4

TUI SSH dashboard & server manager
docs.rs failed to build omnyssh-1.0.4
Please check the build logs for more information.
See Builds for ideas on how to fix a failed build, or Metadata for how to configure docs.rs builds.
If you believe this is docs.rs' fault, open an issue.

OmnySSH

TUI SSH dashboard & server manager — manage all your servers from a single terminal window

Crates.io License Downloads Build Status

Demo

FeaturesInstallationQuick StartDocumentationContributing


Why OmnySSH?

Managing multiple SSH servers shouldn't require juggling terminal tabs, remembering IP addresses, or running the same commands over and over. OmnySSH brings dashboard-style monitoring, visual file management, and command automation into a single, lightweight TUI.

Stop switching between tools. Start managing smarter.

Traditional Workflow With OmnySSH
Open 10 terminal tabs for 10 servers Single dashboard with all servers visible
ssh user@192.168.1.10top → note CPU Live CPU/RAM/Disk metrics on cards
scp -r local/ user@host:/remote/ Drag-and-drop file manager (local ↔ remote)
Paste the same deploy command everywhere Save as snippet, broadcast to all hosts
tmux for multi-session SSH Built-in tabs + split-view terminal

Features

📊 Live Metrics Dashboard

Server cards with real-time CPU, RAM, and disk usage. Color-coded thresholds (green → yellow → red) make it easy to spot issues at a glance.

📁 Visual File Manager

Split-panel SFTP browser (local ↔ remote) with progress bars, multi-selection, and intuitive keyboard shortcuts. No more memorizing scp syntax.

Command Snippets

Save frequently-used commands and execute them on any server with one keypress. Broadcast a command to multiple hosts simultaneously.

🖥️ Multi-Session Terminal

PTY tabs and split-view for working on several servers at once. Switch between hosts without leaving the app.

🔍 Fuzzy Search

Find any host or snippet instantly. Type a few letters, get instant results.

🎨 4 Built-in Themes

Choose from Default, Dracula, Nord, or Gruvbox. Switch with --theme, which saves your choice to config.toml.

⌨️ Configurable Keybindings

Remap global shortcuts in one TOML file. Make OmnySSH work the way you work.

🌍 Cross-Platform

Linux, macOS, Windows. Single self-contained binary — no runtime or interpreter to install.


Comparison

Feature OmnySSH plain SSH Termius tmux + ssh
TUI interface ✅ (GUI)
Live metrics dashboard
Visual file manager (SFTP)
Command snippets
Multi-session tabs
Fuzzy search
Configurable themes ⚠️
Open source
Free 💰
Runs in terminal
Single binary

Installation

⚡ Quick Install (Recommended)

One command to install on Linux/macOS:

curl -fsSL https://raw.githubusercontent.com/timhartmann7/omnyssh/main/install.sh | sh

This script auto-detects your OS and architecture, downloads the latest release, and installs it to your PATH.


🍺 Homebrew (macOS/Linux)

brew install timhartmann7/tap/omnyssh

📦 Pre-built Binaries

Download from the Releases page:

Platform Archive
Linux x86_64 omny-x86_64-unknown-linux-gnu.tar.gz
Linux ARM64 (static, incl. Termux) omny-aarch64-unknown-linux-musl.tar.gz
macOS Intel omny-x86_64-apple-darwin.tar.gz
macOS Apple Silicon omny-aarch64-apple-darwin.tar.gz
Windows x86_64 omny-x86_64-pc-windows-msvc.zip

Extract and move the binary to your PATH:

tar -xzf omny-*.tar.gz
sudo mv omny /usr/local/bin/

🦀 Cargo (from crates.io)

cargo install omnyssh

🔨 From Source

git clone https://github.com/timhartmann7/omnyssh.git
cd omnyssh
cargo build --release
# Binary at: ./target/release/omny

❄️ Nix (Flakes)

A flake.nix is provided for Nix users. Requires flakes enabled (experimental-features = nix-command flakes in ~/.config/nix/nix.conf).

Run without installing:

nix run github:timhartmann7/omnyssh
nix run github:timhartmann7/omnyssh -- --theme dracula

Build a local checkout:

git clone https://github.com/timhartmann7/omnyssh.git
cd omnyssh
nix build              # binary at ./result/bin/omny
./result/bin/omny --version

Install into your user profile:

nix profile install github:timhartmann7/omnyssh

Develop with a pinned toolchain:

nix develop            # drops you into a shell with rustc, cargo, clippy,
                       # rustfmt, rust-analyzer, and all build inputs ready
cargo build

The flake exposes packages.default (the omny binary plus man page), apps.default (for nix run), and devShells.default. It evaluates cleanly across x86_64-linux, aarch64-linux, x86_64-darwin, and aarch64-darwin.


Quick Start

  1. Install OmnySSH (see above)

  2. Run the app:

    omny
    
  3. Add your first server:

    • Press a in the dashboard
    • Enter hostname, user, and SSH key path
    • Press Enter to connect
  4. Try different themes:

    omny --theme dracula
    omny --theme nord
    omny --theme gruvbox
    
  5. View full documentation:

    man omny      # Man page with all options
    omny --help   # Quick reference
    
  6. Explore features:

    • 1 — Dashboard (live metrics)
    • 2 — File Manager (SFTP browser)
    • 3 — Snippets (saved commands)
    • 4 — Terminal (multi-session)
    • / — Fuzzy search
    • ? — Help popup

Documentation

Man Page (Linux/macOS)

man omny

Usage

omny [OPTIONS]

Options:
  -c, --config <FILE>   Path to a custom config file
  -t, --theme <THEME>   Override the color theme (default | dracula | nord | gruvbox)
  -v, --verbose         Enable debug logging (written to a log file)
  -h, --help            Print help
  -V, --version         Print version

Configuration

Config files live in the native OS config directory:

OS Path
Linux ~/.config/omnyssh/ (or $XDG_CONFIG_HOME/omnyssh/)
macOS ~/Library/Application Support/omnyssh/
Windows %APPDATA%\omnyssh\
Termux (Android) ~/.config/omnyssh/

On macOS the path contains a space, so quote it in the shell: ls ~/Library/'Application Support'/omnyssh/

File Purpose
config.toml App settings, theme, keybindings
hosts.toml Managed host list
snippets.toml Saved commands
omnyssh.log.YYYY-MM-DD Daily rolling log file

The original ~/.ssh/config is never modified — hosts are imported read-only at startup.

Example: config.toml

[general]
refresh_interval = 30          # seconds between metric refreshes
default_shell = "/bin/bash"
ssh_command = "ssh"            # path to system SSH binary
max_concurrent_connections = 10

[ui]
theme = "default"              # default | dracula | nord | gruvbox

[keybindings]
quit         = "q"
search       = "/"
connect      = "Enter"
dashboard    = "F1"
file_manager = "F2"
snippets     = "F3"
next_screen  = "Tab"           # cycle dashboard → files → snippets → terminal
next_tab     = "Tab"           # next terminal tab (or pane focus when split)

[update]
check_on_startup = true        # check GitHub Releases for a newer version on startup
skip_version = ""              # a version to skip; set when you choose "Skip this version"

Example: hosts.toml

[[hosts]]
name = "web-prod-1"
hostname = "192.168.1.10"
user = "deploy"
port = 22
identity_file = "~/.ssh/id_ed25519"
tags = ["production", "web"]
notes = "Main web server. Nginx + Node.js"

[[hosts]]
name = "db-master"
hostname = "10.0.0.50"
user = "admin"
port = 2222
tags = ["production", "database"]
notes = "PostgreSQL 16. Don't restart without warning #backend"

Example: snippets.toml

[[snippets]]
name = "Docker: restart all"
command = "cd /opt/app && docker compose down && docker compose up -d"
scope = "global"
tags = ["docker"]

[[snippets]]
name = "Restart service"
command = "sudo systemctl restart {{service_name}}"
scope = "global"
params = ["service_name"]

Themes

Theme Description
default Neutral blue/cyan — works with any terminal palette
dracula Purple, pink, green — Dracula
nord Arctic blues and teals — Nord
gruvbox Warm amber and orange — Gruvbox

Set the theme in config.toml, or pass --theme once — it is written back to config.toml and persists on the next run.


Development Roadmap

Version Stage Description
0.0.1 0 Project skeleton — TUI shell with placeholder screens
0.1.0 1 Host list, SSH connect, fuzzy search — MVP
0.2.0 2 Live metrics dashboard
0.3.0 3 Snippets & quick-execute
0.4.0 4 SFTP file manager
0.5.0 5 Multi-session tabs & split-view
1.0.4 6 Polish, themes, configurable keybindings — current

Contributing

Contributions are welcome! Please read CONTRIBUTING.md for development setup, code conventions, and the PR checklist.


License

Apache 2.0 — see LICENSE.


⭐ Star this repo if you find it useful!

Report BugRequest FeatureDiscussions