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.2.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.2.0-py3-none-any.whl (16.8 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: vaayu-0.2.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.2.0.tar.gz
Algorithm Hash digest
SHA256 ac859d93dca9bddabe533b83a9a1550c28d48f884aeb267d52eebc77159e98a9
MD5 31ab6c425cf6cf2f0c4197b12a2da2da
BLAKE2b-256 89b668d0377bd4789403be8f48cdda42c8bdfc66fffd2a1249ec87a577ddcf4e

See more details on using hashes here.

File details

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

File metadata

  • Download URL: vaayu-0.2.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.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 8ec80c3cc704b702d9a766b59df19a3ad61d52d285dfad3b2ed269a553f3cc97
MD5 edad0ef175bb5a046634962259510b83
BLAKE2b-256 430448b5fac15b259317f7f6c79c04ef805bee85290dfbf73401a691f8ff8ed3

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