Skip to main content

Interactive TUI for managing servers — SSH, SCP, scanning & more

Project description

Servonaut

A modern Terminal User Interface (TUI) for managing servers — SSH, SCP, scanning & more.

Quick Install

Linux / macOS:

curl -sSL https://raw.githubusercontent.com/zb-ss/ec2-ssh/master/install.sh | bash

Windows (PowerShell):

irm https://raw.githubusercontent.com/zb-ss/ec2-ssh/master/install.ps1 | iex

Or install directly via pipx / pip:

pipx install servonaut

Manual install from source:

git clone https://github.com/zb-ss/ec2-ssh.git
cd ec2-ssh
pipx install .

Features

  • Interactive TUI with mouse and keyboard support powered by Textual
  • List and search EC2 instances across all AWS regions
  • SSH into instances — launches in new terminal window with auto-detected emulator
  • Run remote commands via overlay panel with real-time streaming output, persistent history, and saved command favorites
  • Browse remote file systems — interactive file tree navigation
  • SCP file transfer — upload/download files and directories
  • Keyword-based server scanning — search file contents across instances
  • Bastion host / jump server support via ProxyJump or ProxyCommand
  • SSH key management with auto-discovery and per-instance configuration
  • Instance caching with stale-while-revalidate for fast startup
  • Fully configurable — all settings in ~/.servonaut/config.json

Prerequisites

  • Python 3.8+
  • AWS CLI configured (~/.aws/credentials and ~/.aws/config)
  • SSH client (standard on Linux/macOS, OpenSSH on Windows)
  • pipx for isolated installation (recommended)

Your AWS credentials need ec2:DescribeInstances and ec2:DescribeRegions permissions.

Usage

servonaut           # Launch the TUI
servonaut --debug   # Launch with debug logging to stderr

Keyboard Shortcuts

Context Key Action
Global Q Quit
Global ? Help screen
Global Escape Go back / close
Instance List / Focus search
Instance List R Force-refresh from AWS
Instance List S SSH to selected instance
Instance List B Browse remote files
Instance List C Run command overlay
Instance List T SCP transfer
Command Overlay Ctrl+C Stop running command
Command Overlay Ctrl+R Command picker (saved + recent)
Command Overlay Ctrl+S Save command to favorites
Command Overlay Up/Down Command history

What You Can Do

  1. List Instances — View all EC2 instances with search/filter
  2. Search — Filter instances by name, type, region, or state; search scan results
  3. Manage SSH Keys — Configure default and per-instance SSH keys
  4. Scan Servers — Run keyword scans across running instances
  5. Settings — Configure connection profiles, scan rules, preferences

When you select a server: browse files, run commands, SSH connect, SCP transfer, or view scan results. Command history persists across sessions — use Ctrl+R to search history and saved commands, Ctrl+S to save favorites.

Instance Caching

Scenario Behavior
First launch (no cache) Fetches from AWS with progress indicator
Restart within TTL (default 1h) Instant load from cache
Restart after TTL Shows stale data immediately, refreshes in background
Press R Force-refresh from AWS

Configuration

All configuration lives in ~/.servonaut/config.json, created automatically on first run.

See Configuration Guide for the full reference including connection profiles, scan rules, and match conditions.

Development

# Run directly (primary dev workflow)
PYTHONPATH=src python3 -m servonaut.main

# Run with debug logging
PYTHONPATH=src python3 -m servonaut.main --debug

# Install editable
pip install -e .

# Update pipx installation after changes
pipx install . --force
# Run tests
pip install -e ".[test]"
pytest

See Architecture for codebase structure and design patterns.

Troubleshooting

See Troubleshooting Guide for help with SSH connections, bastion hosts, key management, and AWS credentials.

Logging

Logs are always written to ~/.servonaut/logs/servonaut.log. Use --debug for verbose stderr output.

When SSH fails, the terminal window stays open showing the error and exit code.

License

This project is licensed under the MIT License — see the LICENSE file for details.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

servonaut-2.1.0.tar.gz (76.2 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

servonaut-2.1.0-py3-none-any.whl (76.9 kB view details)

Uploaded Python 3

File details

Details for the file servonaut-2.1.0.tar.gz.

File metadata

  • Download URL: servonaut-2.1.0.tar.gz
  • Upload date:
  • Size: 76.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.3

File hashes

Hashes for servonaut-2.1.0.tar.gz
Algorithm Hash digest
SHA256 1c958dcc23c7d66681f1685078532b652bec2afef3d8a662c4ead48a0dfed04a
MD5 541a1a57e480f3a2efeba18ed4ea866f
BLAKE2b-256 3af41ab4367ad690f9c501901d338f6229400b50306fd6e6397da956a62bb996

See more details on using hashes here.

File details

Details for the file servonaut-2.1.0-py3-none-any.whl.

File metadata

  • Download URL: servonaut-2.1.0-py3-none-any.whl
  • Upload date:
  • Size: 76.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.3

File hashes

Hashes for servonaut-2.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 f1efc4d322c891fcbb8f309852daf266cad0bebed2132edc87ac1128c5d169d2
MD5 c9362ed206aafa48eb3a198d9cf243ef
BLAKE2b-256 6e7d0d042b01a3fa167aea643d8e387e622964c95f972ab637ccb5d89f6e0f7b

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page