Skip to main content

A modern, secure, parallel, and resumable SSH file transfer CLI (scp/rsync replacement).

Project description

thumbnail

Modern • Secure • Parallel • Resumable

Python 3.9+ License: MIT SSH/SFTP

Vaayu is the next-generation SSH file transfer tool that moves your data like air - fast, light, and omnipresent.


✨ Why Vaayu?

Vaayu (Sanskrit: वायु) means "air"—the element that flows everywhere with speed and grace. Just as air adapts to any environment while maintaining its essential properties, Vaayu delivers files across networks with uncompromising reliability and performance.

🚀 Core Capabilities

Feature Description
🔒 Secure by Design Modern SSH ciphers (ChaCha20-Poly1305, AES-256-GCM) with optional strict host key verification
⚡ Lightning Fast Parallel transfers with intelligent concurrency auto-tuning
🔄 Bulletproof Resume Atomic writes with .part files and intelligent offset recovery
🛡️ Data Integrity SHA-256 verification with robust remote fallback chains
🎯 Smart Operations Recursive directory sync, wildcard matching, and real-time progress
👁️ Live Monitoring Watch mode for continuous synchronization
🌐 Universal Windows, macOS, Linux (Python 3.9+)

📡 Transfer Modes

  • 📤 Send — Local → Remote with recursive directory support
  • 📥 Get — Remote → Local with wildcard expansion
  • 🔄 Relay — Remote → Remote without local download

🏗️ Architecture

Built on enterprise-grade foundations:

  • AsyncIO + AsyncSSH — High-performance asynchronous I/O
  • Rich Progress — Beautiful terminal UI with real-time metrics
  • Watchdog — Filesystem monitoring for live sync
  • zstd — Optional compression pipeline (future enhancement)

🚀 Quick Start

Installation

Windows (PowerShell)

python -m venv .venv
.\.venv\Scripts\Activate.ps1
pip install -e .

macOS/Linux (Bash)

python3 -m venv .venv
source .venv/bin/activate
pip install -e .

Verify Installation

vaayu --help

📚 Command Reference

Global Options

Short Long Description
-h --help Show help message
-p --port SSH port (default: 22)
-u --username SSH username
-P --password SSH password
-i --identity Path to private key
-j --parallel Parallel transfer jobs
-r --retries Max retries per file (default: 5)
-b --backoff Initial backoff seconds (default: 0.5)
-c --compress Enable compression
-z --zstd-level Compression level (default: 3)
-k --verify-host-key Strict host key verification
-n --no-verify Skip hash verification

Commands

Command Description
send Transfer files from local to remote
get Transfer files from remote to local
relay Transfer files between two remote hosts

💼 Usage Examples

📤 Send Operations

Basic File Upload

vaayu -u alice -i ~/.ssh/id_ed25519 send alice@server.com /remote/backup file.txt

Recursive Directory Upload

vaayu -u alice -i ~/.ssh/id_ed25519 send alice@server.com /remote/backup /local/project/

Wildcard Upload with High Parallelism

vaayu -u alice -i ~/.ssh/id_ed25519 -j 16 send alice@server.com /remote/logs *.log

Password Authentication

vaayu -u alice -P mypassword send alice@server.com /remote/backup document.pdf

Custom Port and Strict Host Key Verification

vaayu -u alice -p 2222 -k -i ~/.ssh/id_ed25519 send alice@server.com /backup file.txt

Multiple Files and Directories

vaayu -u alice -i ~/.ssh/id_ed25519 send alice@server.com /backup file1.txt dir1/ *.csv

Live Watch Mode

vaayu -u alice -i ~/.ssh/id_ed25519 send alice@server.com /remote/www /local/website/ -W

📥 Get Operations

Basic File Download

vaayu -u bob -i ~/.ssh/id_ed25519 get bob@server.com /local/downloads /remote/file.txt

Wildcard Download

vaayu -u bob -i ~/.ssh/id_ed25519 get bob@server.com /local/logs /var/log/*.log

Recursive Directory Download

vaayu -u bob -i ~/.ssh/id_ed25519 get bob@server.com /local/backup /remote/project/

Multiple Remote Paths

vaayu -u bob -i ~/.ssh/id_ed25519 get bob@server.com /local/data /remote/file1.txt /remote/dir/ /remote/*.csv

High Concurrency Download

vaayu -u bob -i ~/.ssh/id_ed25519 -j 32 get bob@server.com /local/download /remote/bigdata/

🔄 Relay Operations

Direct Remote-to-Remote Transfer

vaayu -u admin -i ~/.ssh/id_ed25519 relay admin@source.com admin@dest.com /data/file.txt /backup/file.txt

Multiple File Relay

vaayu -u admin -i ~/.ssh/id_ed25519 relay admin@source.com admin@dest.com /data/file1.txt /data/file2.txt /backup/file1.txt /backup/file2.txt

Cross-Server Directory Sync

vaayu -u admin -i ~/.ssh/id_ed25519 relay admin@prod.com admin@backup.com /var/www/ /backups/www/

⚙️ Advanced Usage

Resume Interrupted Transfer

vaayu -u alice -i ~/.ssh/id_ed25519 send alice@server.com /remote/backup largefile.zip

Skip Verification for Trusted Networks

vaayu -u alice -i ~/.ssh/id_ed25519 -n send alice@server.com /remote/backup *.txt

Custom Retry Strategy

vaayu -u alice -i ~/.ssh/id_ed25519 -r 10 -b 1.0 send alice@server.com /backup file.txt

Compression Enabled

vaayu -u alice -i ~/.ssh/id_ed25519 -c -z 6 send alice@server.com /backup archive.tar

🔧 Performance Tuning

Parallelism Guidelines

File Count Recommended -j Use Case
1-10 2-4 Large files
10-100 4-8 Mixed workload
100-1000 8-16 Many small files
1000+ 16-32 Massive parallel I/O

Network Optimization

vaayu -u user -j 8 -r 3 -b 0.2 send user@host /dest /large/dataset/

🛡️ Security Features

Authentication Methods

  • SSH Key Authentication (Recommended)
  • Password Authentication
  • SSH Agent Support

Encryption Standards

Data Integrity

  • SHA-256 Verification (Default)
  • Atomic Writes (.part → rename)
  • Multiple Remote Hash Sources

🏥 Error Handling & Recovery

Automatic Recovery Features

  • Resume from Interruption — Continues from last byte
  • Exponential Backoff — Smart retry timing
  • Hash Verification — Detects corruption
  • Atomic Operations — No partial writes

Common Issues & Solutions

Issue Solution
Connection timeout Increase -r retries and -b backoff
Permission denied Check SSH key permissions and remote path access
Hash mismatch Network corruption; transfer will auto-retry
Host key verification failed Use -k flag with proper known_hosts

🧪 Testing & Validation

Run Test Suite

pytest -q

Feature Validation Commands

Resume Testing

vaayu -u user send user@host /dest largefile.bin

Verification Testing

vaayu -u user send user@host /dest testfile.txt
sha256sum testfile.txt
ssh user@host "sha256sum /dest/testfile.txt"

Performance Testing

time vaayu -u user -j 16 send user@host /dest /large/dataset/

📊 Project Structure

vaayu/
├── cli.py           # Command-line interface
├── ssh_client.py    # AsyncSSH wrapper
├── transfer.py      # Core transfer logic
├── verify.py        # Hash verification
├── utils.py         # Utilities and helpers
├── watch.py         # Filesystem monitoring
├── compress.py      # Compression (future)
└── cloud.py         # Cloud protocols (future)

🗺️ Roadmap

Upcoming Features

  • 🗜️ In-stream zstd compression
  • 🔍 Enhanced remote hash detection
  • 📄 Configuration file support
  • 🌩️ Cloud provider integration
  • 📈 Advanced performance metrics
  • 🔐 Certificate-based authentication

🤝 Contributing

We welcome contributions! Please check out our development setup:

python -m venv .venv
source .venv/bin/activate  # or .venv\Scripts\Activate.ps1 on Windows
pip install -e .[dev]
pytest

📄 License

Released under the MIT License. See LICENSE for details.


Built with ❤️ for the SSH community

Vaayu — Where files flow like air


📝 Note: This README was generated with AI assistance because the developer was too lazy to write comprehensive documentation (but smart enough to make AI do it properly). 😴✨

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

vaayu-0.1.0.tar.gz (20.1 kB view details)

Uploaded Source

Built Distribution

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

vaayu-0.1.0-py3-none-any.whl (16.8 kB view details)

Uploaded Python 3

File details

Details for the file vaayu-0.1.0.tar.gz.

File metadata

  • Download URL: vaayu-0.1.0.tar.gz
  • Upload date:
  • Size: 20.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.12.3

File hashes

Hashes for vaayu-0.1.0.tar.gz
Algorithm Hash digest
SHA256 557713fee688fe14cd7caa60036ef489750fc0a97073a2c02fcfab1251776079
MD5 bcc58fdeea4e63069bda3832b9025800
BLAKE2b-256 d9d6f0c6afbc9e1c7b3fb4869b59a00923862b33b8eb8583eff01c7f67c00ca0

See more details on using hashes here.

File details

Details for the file vaayu-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: vaayu-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 16.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.12.3

File hashes

Hashes for vaayu-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 51225e0d0bd0adf7a7f3a9f746a437d086d6af45de2094ac7ddb21c2ee0cc44e
MD5 2d1611958ed9efb98fa6e1196cb08d38
BLAKE2b-256 38ceb5185526bd33216ffb9c0b4eece411f9833cf2b020520ad871f997b8c6bc

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