Comparison¶
This page compares SpindleX to other Python SSH libraries. The goal is to help you choose the right library for your use case, not to claim universal superiority. Every library has trade-offs.
Benchmark environment
Numbers below are from the SpindleX v0.7.3 production readiness benchmark (scripts/benchmark_production.py) run against a Docker-backed OpenSSH server on the same host. They reflect loopback conditions - real-network results will differ. See Performance for methodology.
Libraries Compared¶
| SpindleX | Paramiko | AsyncSSH | |
|---|---|---|---|
| License | MIT | LGPL-2.1 | Eclipse Public License 2.0 |
| Python support | 3.9–3.13 | 3.8+ | 3.6+ |
| Async-first | Yes | No (add-on) | Yes |
| Dependencies | cryptography only | cryptography, bcrypt, pynacl | cryptography |
| Type hints | Full, strict mypy | Partial | Partial |
| ChaCha20-Poly1305 | Yes (preferred) | Yes | Yes |
| Compression | No | Yes (zlib) | Yes (zlib) |
| GSSAPI | Optional (Unix) | Yes | Yes |
| SSH server | Yes (controlled environments) | Yes | Yes |
| SFTP server | Yes (controlled environments) | Yes | Yes |
| SCP | No | Yes | No |
| Agent forwarding | No | Yes | Yes |
| X11 forwarding | No | Yes | No |
Performance¶
The numbers below are median timings over 10 iterations (loopback, same host).
SSH handshake latency¶
| Library | Median |
|---|---|
| SpindleX | 53–65 ms |
| AsyncSSH | 60–67 ms |
| Paramiko | 87–90 ms |
SFTP upload (1 MB file)¶
| Library | Median |
|---|---|
| SpindleX | 14–15 ms |
| AsyncSSH | 19–23 ms |
| Paramiko | 54–58 ms |
SFTP download (1 MB file)¶
| Library | Median |
|---|---|
| SpindleX | 15–18 ms |
| AsyncSSH | 15–17 ms |
| Paramiko | 356–368 ms |
These numbers are loopback only. Network latency dominates in practice. Run scripts/benchmark_production.py in your own environment to get numbers relevant to your servers and network conditions.
SpindleX vs Paramiko¶
Choose SpindleX if:
- You want a modern async-first API with
asynciosupport built in. - You want ChaCha20-Poly1305 as the preferred cipher with Terrapin defense.
- You want strict type hints across the entire public API.
- You want minimal dependencies (only
cryptography). - You prefer MIT licensing for commercial or proprietary projects.
- SFTP throughput matters - SpindleX adaptive write chunks (up to 255 KB via
limits@openssh.com) reduce round trips significantly.
Choose Paramiko if:
- You need SCP transfers.
- You need SSH agent forwarding.
- You need X11 forwarding.
- You need GSSAPI key exchange (not just auth).
- You are deploying on a large existing codebase already built on Paramiko.
- You need support for legacy algorithms that SpindleX deliberately excludes (SHA-1 MACs, CBC ciphers, Group 1 DH).
- Long-term library stability matters more than modern API design - Paramiko has a longer track record in production.
Feature gaps to know about:
SpindleX does not implement: SCP, agent forwarding, X11 forwarding, GSSAPI key exchange, or compression. These are deliberate scope decisions. If your use case requires any of these features, SpindleX is not the right choice today.
SpindleX vs AsyncSSH¶
Choose SpindleX if:
- You want MIT licensing (AsyncSSH uses Eclipse Public License 2.0).
- You want a library that explicitly refuses to negotiate weak algorithms at the protocol level (SHA-1 KEX, CBC ciphers, MD5 MACs).
- You want a single
cryptographydependency with no optional native extensions required for the core feature set.
Choose AsyncSSH if:
- You need X11 forwarding.
- You need SSH agent forwarding.
- You need
zlibcompression. - You need GSSAPI key exchange.
- You are already in an
asynciocodebase and value a more mature async library with a longer track record. - You need broader OpenSSH and legacy server compatibility.
AsyncSSH has a significantly larger feature set than SpindleX. If your use case goes beyond SSH command execution and SFTP file transfer, AsyncSSH is likely the better choice today.
What SpindleX Does Not Support¶
These features are intentionally out of scope for SpindleX 1.0:
- SCP - SFTP is the modern replacement and is fully supported.
- Compression - Not implemented;
noneis the only advertised method. - SSH agent forwarding - Not implemented.
- X11 forwarding - Not implemented.
- GSSAPI key exchange - GSSAPI authentication (not KEX) is available as an optional extra on Unix.
- Legacy algorithms - SHA-1 KEX/MACs, CBC ciphers, DH Group 1, MD5 MACs are explicitly excluded. SpindleX will never negotiate these.
- Universal SSH server compatibility - Tested against OpenSSH and Dropbear. Appliance-specific or legacy SSH server behavior may not be compatible.
Honest Limitations¶
SpindleX 1.0.0 is the project's first stable release. Paramiko has been in production for over 15 years. AsyncSSH has been production-used for over 10 years. SpindleX does not have that track record yet.
Before adopting SpindleX in a production system:
- Run your own integration tests against your actual SSH servers.
- Review the Compatibility page for known incompatibilities.
- Review the Security Guide for security expectations.
- Pin an exact version and treat upgrades as deliberate changes.