All notable changes to RemoteX will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
- Package Rename: Renamed from
remotex688toremotexfor professional branding- PyPI package name:
remotex - GitHub repository:
sagarmemane135/remotex - CLI command remains:
remotex(no breaking changes for users)
- PyPI package name:
- Python 3.8 Compatibility: Fixed
tuple[]/list[]type hints (now useTuple[]/List[]from typing) - Mypy Type Checking: Resolved all 18 type errors across 5 files
- Added type annotations for pstats.Stats attributes
- Fixed Optional[str] type mismatches in quick_commands
- Removed duplicate function definitions
- Fixed stdin encoding and bitwise operation issues
- Bandit Security: Addressed security warnings with nosec annotations
- B507: AutoAddPolicy usage documented (SSH config manages host keys)
- B601: exec_command usage documented (trusted admin input)
- CI/CD Pipeline: Fixed all GitHub Actions failures
- YAML syntax error (duplicate continue-on-error)
- Type checking now passes on Python 3.8-3.12
- All test matrix combinations now pass
--jsonflag with pure JSON output (no decorative panels) for CI/CD pipelines- Perfect for piping to
jqor parsing in scripts - Structured output with command, hosts, success/failure counts
- Available in exec-all, exec-multi, exec-group
- Perfect for piping to
--csvflag for spreadsheet/reporting integration- Export results to CSV format with headers
- Import into Excel, databases, or analytics tools
--quiet/-qflag for minimal scriptable output- One-line output per server:
host: ✓ [0] output - Perfect for shell scripts and log files
- One-line output per server:
--plainflag for simple text without ANSI formatting- No colors or Rich formatting
- Compatible with legacy terminals and plain text logs
--compactflag for condensed single-line format- Quick status checks with minimal output
- Shows:
✓ host [exit_code]: preview
--show-outputflag now opt-in (was always-on)- Default behavior: show summary table only
- Use
--show-outputto display detailed command output - Reduces terminal clutter for bulk operations
- Output preview increased from 50 to 150 characters (3x more context)
- Progress bars suppressed for machine-readable formats (json, csv, quiet)
- Decorative panels skipped when using automation-friendly output modes
- All output modes available across exec-all, exec-multi, exec-group
- Fixed history feature not recording commands
- Added
add_to_history()integration to all command execution paths:execcommand now tracks single server executionsexec-alltracks bulk operations with success/failure countsexec-multitracks multi-server operationsexec-grouptracks group-based operations
- History now captures metadata: exit codes, parallel settings, retry counts
- History file (
~/.remotex/history.json) automatically created on first use
--retriesflag for all bulk operations (exec-all, exec-multi, exec-group)- Automatic retry on transient failures (timeouts, connection errors)
- Exponential backoff between retry attempts
- Configurable retry count (default: 0, max recommended: 5)
- Verbose mode shows retry attempts in real-time
--jsonflag for machine-readable output on all bulk operations- Structured JSON with command, hosts, success/failure counts
- Individual host results with exit codes and output
- Perfect for CI/CD pipelines and monitoring
- Compatible with
jqfor advanced filtering
group add/remove/list/showcommands for organizing serversgroup add-serverandremove-serverfor managing group membershipexec-groupcommand to execute commands on all servers in a group- Server tags support for flexible categorization
- Group-based bulk operations with
--dry-runsupport
alias add/remove/list/showcommands for reusable command shortcuts- Store frequently used commands as aliases
- Reduce typing and improve consistency
pushcommand to upload files/directories to remote serverspullcommand to download files/directories from remote servers- Recursive directory transfer with
--recursiveflag - Progress bars with transfer speed indicators
- Automatic parent directory creation
--dry-runflag forexec-all,exec-multi, andexec-group- Preview affected servers and commands before execution
- Prevents accidental mass operations
- Shows detailed impact summary
- Automatic command execution logging to
~/.remotex/audit.log - JSON-formatted audit entries with timestamps
- Track user, hosts, commands, and results
- Success/failure statistics per execution
- Searchable audit history for compliance
--versionflag for quick version check (works standalone)versioncommand showing detailed version informationexamplescommand with formatted usage examples- Standardized exit codes system (0-130) with error suggestions
--verboseand--debugglobal flags for enhanced logging- Shell completion support (bash/zsh/fish)
- Improved CLI user experience following best practices
- Enhanced error handling with meaningful exit codes
- Config schema extended with groups, tags, and aliases (backward compatible)
1.0.0 - 2025-12-10
listcommand to display all configured servers in beautiful table formataddcommand with interactive prompts for adding new serversinfocommand to show detailed server information with connection testingeditcommand to modify existing server configurationsremovecommand to delete servers with confirmation prompt- Verbose mode (
-v) for list command showing SSH keys
execcommand for executing commands on remote serversconnectcommand for interactive PTY shell sessions- Support for formatted and plain output modes
- Connection timeout management
- SSH key authentication support
exec-allcommand to execute commands on ALL servers in parallelexec-multicommand to execute on specific comma-separated server list- Configurable parallelism (1-20 connections, default: 5)
- Progress bars for bulk execution
- Summary tables showing success/failure status
- Timeout control per command
--no-outputflag for summary-only mode
uptime- Quick uptime checkdisk- Disk usage (df -h)memory- Memory usage (free -h)cpu- CPU informationprocesses- Top 10 processesstatus- Service status checkrestart- Service restart (requires sudo)logs- View service logs with journalctl- Support for optional host parameter (uses default if not specified)
config show- Display current configurationconfig set-default- Set default server for quick commandsconfig clear-default- Clear default server- Configuration persistence at
~/.remotex/config.json
- Parallel execution with ThreadPoolExecutor
- Connection pooling capability
- Caching infrastructure with TTL support
- Compact output modes for CI/CD pipelines
- Default server support to reduce typing
- Modular architecture with separate command modules
- Python package with
remotexCLI entry point - Rich library integration for beautiful output
- Comprehensive error handling with informative messages
- Type hints throughout codebase
- Development mode installation support
- Comprehensive README with badges and examples
- CONTRIBUTING.md with development guidelines
- CODE_OF_CONDUCT.md following Contributor Covenant
- QUICK_REFERENCE.md for command cheat sheet
- PERFORMANCE.md with DevOps patterns and benchmarks
- ARCHITECTURE.md for code structure
- SECURITY.md for vulnerability reporting
- MIT LICENSE
- Python 3.8+
- typer >= 0.12.0 (CLI framework)
- paramiko >= 3.4.0 (SSH protocol)
- rich >= 13.7.0 (terminal formatting)
remotex/
├── __init__.py
├── cli.py
├── config.py
├── ssh_config.py
├── ssh_client.py
├── performance.py
├── utils.py
└── commands/
├── server_management.py
├── exec_command.py
├── connect_command.py
├── bulk_operations.py
├── quick_commands.py
└── config_command.py
- 5x faster than sequential execution with default settings
- Scales to 50+ servers efficiently
- Configurable parallelism for different workloads
- Moved from monolithic
main.pyto modular package structure - Converted from
python main.pyexecution to installableremotexcommand - Enhanced output formatting with Rich library
- Improved error messages with context panels
- Direct
python main.pyexecution (still works via wrapper)
- IndentationError in SSH client identity file handling
- SyntaxError in connect command try-except blocks
- Import path issues after package refactoring
- Connection timeout handling
- SSH config file parsing edge cases
- SSH key-based authentication recommended
- No password storage
- Secure SSH config permissions enforcement
- Timeout protection against hanging connections
- Server grouping and tagging system
- Command history and replay functionality
- Custom command templates
- Real-time log streaming
- Integration with cloud providers (AWS, Azure, GCP)
- SSH tunnel management
- File transfer operations (SCP/SFTP)
- Ansible playbook integration
- Web UI for server management
- Output comparison across servers
- Jump host/bastion support
This is the first production-ready release of RemoteX, a high-performance SSH management CLI designed specifically for DevOps engineers managing multiple servers.
Key Highlights:
- ⚡ 5x faster than traditional serial execution
- 🎯 17 commands covering all common DevOps operations
- 🚀 Parallel execution on up to 20 servers simultaneously
- 💎 Beautiful CLI with Rich-formatted output
- 🔧 Zero config required - works with existing SSH config
Perfect For:
- DevOps engineers managing multiple servers
- Site reliability engineers (SRE)
- System administrators
- Infrastructure teams
- Anyone tired of writing bash loops
Try it now:
pip install -e .
remotex --helpFor detailed usage, see README.md and QUICK_REFERENCE.md.