SpindleX is a modern SSH protocol implementation for Python 3.9+. It is designed for high-performance automation and secure file transfers, providing a clean alternative to legacy SSH libraries.
Warning
Beta software. The 0.6.x line is stabilising the core protocol, transport, and SFTP layers. Review meta/SECURITY.md before deploying in production-facing workflows, pin exact versions, and audit your host key policy.
- 🚀 High Performance: Optimized internal buffering (32KB chunks) for high-throughput SFTP and command execution.
- 🔄 Native Async: First-class
asynciosupport viaAsyncSSHClientandAsyncSFTPClient. - 🛡️ Security: Prioritizes modern primitives (Ed25519, AES-256-CTR) and disables legacy/weak ciphers.
- 🔗 Advanced Tunneling: Support for ProxyJump (bastion hosts) and TCP port forwarding.
- 📂 Recursive SFTP: Native support for recursive directory uploads and downloads.
- 🏷️ Fully Typed: Comprehensive type hints for IDE integration and static analysis.
- 💼 Business Friendly: MIT Licensed. Permissive use for commercial and proprietary projects.
- 📖 Maintainable Code: Modular architecture designed for clarity and easier security auditing.
- 🛠️ Modern API: Clean, intuitive interface with consistent error handling and minimal dependencies.
- 🧊 Focused Scope: No support for insecure legacy protocols, resulting in a leaner and more secure codebase.
# Using pip
pip install spindlex
# Using uv
uv pip install spindlexSynchronous Example
from spindlex import SSHClient
with SSHClient() as client:
client.get_host_keys().load()
client.connect('example.com', username='admin')
stdin, stdout, stderr = client.exec_command('uptime')
print(f"Server Status: {stdout.read().decode().strip()}")Asynchronous Example
import asyncio
from spindlex import AsyncSSHClient
async def main():
async with AsyncSSHClient() as client:
await client.connect('example.com', username='admin')
stdin, stdout, stderr = await client.exec_command('df -h')
print(await stdout.read())
asyncio.run(main())SpindleX is optimized for high-throughput environments, significantly reducing protocol overhead compared to standard implementations.
| Operation | SpindleX | Legacy Libraries | Improvement |
|---|---|---|---|
| Handshake | 0.32s | 0.85s | ~2.6x |
| Bulk SFTP | 45 MB/s | 18 MB/s | ~2.5x |
| Overhead | Low | High | 🔥 |
Tip
Run the benchmark suite on your own hardware:
python scripts/benchmark_compare.py
- Verification Enforced: Host key verification is mandatory by default.
- Log Sanitization: Credentials and sensitive data are automatically filtered from logs.
- Modern Defaults: Ed25519 and ECDSA preferred for key exchange.
- Full Policy: See meta/SECURITY.md for vulnerability reporting and security standards.
Contributions are welcome. See meta/CONTRIBUTING.md for guidelines.
Distributed under the MIT License. See LICENSE for more information.
SpindleX Project © 2026 Stratza Labs