Persistent SSH daemon for AI agents — session pooling, SHA-256 verified SFTP, deploy manifests, certificate auth, and OS keyring credential storage. Built for Claude Code, Cursor, GitHub Copilot, and any AI agent with shell access.
Project description
sshDCommander
Persistent SSH daemon for AI agents and DevOps automation.
sshDCommander bridges AI agents to remote servers with persistent SSH sessions, SHA-256 verified file transfers, deploy manifests, and certificate-based authentication.
Why sshDCommander?
- Persistent sessions — daemon maintains long-lived SSH connections across tool calls, eliminating reconnect overhead
- AI-agent ready — built for Claude Code, Cursor, GitHub Copilot, Aider, Cline, Windsurf, Codex CLI, and any agent with shell access
- SHA-256 integrity — every file transfer is checksum-verified; deploy manifests record and verify deployment state
- Certificate auth — built-in Ed25519 CA for certificate-based authentication without password or key sprawl
- OS keyring — credentials stored in the OS keyring (DPAPI on Windows, libsecret on Linux), never in config files
CLI Tools
| Tool | Purpose |
|---|---|
sshdcmd |
Execute remote commands with session reuse |
sshdcp |
SFTP file transfer with SHA-256 verification and deploy manifests |
sshdctl |
Daemon management, server profiles, certificate authority |
Quick Start
pip install sshdcommander
sshdctl start-daemon
sshdctl server add --name prod --host <your-server-ip> --user deploy
sshdcmd --client-id my-agent "uptime" --server prod --connect
Key Features
- Multi-server session pool (10+ concurrent sessions)
- Auto-reconnect with exponential backoff
- Deploy manifests for deployment integrity verification
- Reverse integrity auditing (drift detection)
- Log streaming (
sshdcmd --follow) — tail remote logs persistently - Docker management (
sshdctl docker) — 9 subcommands for container lifecycle - Systemd management (
sshdctl service) — 8 subcommands for service control - Directory sync (
sshdcp sync) — bidirectional with SHA-256 checksums - Fleet management (
--servers,--group) — parallel execution across multiple hosts - OpenSSH config import (
sshdctl server import-ssh-config) - EOL conversion (
--eol=on|off|auto) for cross-platform text transfers - Data portability export (
sshdctl export) — ZIP with OpenSSH config - Connection quality metrics (RTT, jitter, reconnect tracking)
- Remote OS detection (automatic Windows/Linux command adaptation)
- Script mode for complex multi-step workflows
- Multi-locale sudo support
- SSH agent forwarding
- Mandatory
--client-idaudit trail - Resume interrupted uploads
- MSYS/Git Bash path demangling (automatic, zero config)
Enterprise Features
Available with an Enterprise license:
- Policy Engine — command/path filtering, rate limiting, time restrictions, auto-rollback
- Encrypted Config — AES-256-GCM encrypted policy files with key management
- Session Recording — full transcripts with HMAC integrity seals
- SIEM Integration — syslog, webhook, and file event exporters
- SSO/IDP Integration — OIDC Device Authorization Grant with JWKS verification
- External Secrets Manager — HashiCorp Vault, AWS, Azure, GCP backends
- Ephemeral Credentials — short-lived SSH certificates via built-in CA
- RBAC — role-based access control for team environments
Installation with --target (isolated installs)
When using pip install --target ./lib sshdcommander, the CLI entry points (sshdcmd, sshdcp, sshdctl) are not registered as executables. Two options:
Option A — Use the included wrapper scripts (recommended):
python ./lib/run_sshcmd.py --client-id my-agent "uptime" --server prod --connect
python ./lib/run_sshcp.py --client-id my-agent upload ./file.txt /opt/app/ --server prod
python ./lib/run_sshctl.py start-daemon
The wrappers handle the Python path automatically — no configuration needed.
Option B — Set PYTHONPATH and use -m:
export PYTHONPATH=/path/to/lib:$PYTHONPATH
python -m sshcmd --client-id my-agent "uptime" --server prod --connect
python -m sshcp --client-id my-agent upload ./file.txt /opt/app/ --server prod
python -m sshctl status
For standard usage, pip install sshdcommander registers CLI tools in your PATH automatically.
Links
- Website: sshdcommander.com
- Documentation: sshdcommander.com/docs
- AI Instructions: sshdcommander.com/docs/ai-instructions
- Changelog: CHANGELOG.md
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distributions
Built Distributions
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file sshdcommander-4.0.3-cp314-cp314-win_amd64.whl.
File metadata
- Download URL: sshdcommander-4.0.3-cp314-cp314-win_amd64.whl
- Upload date:
- Size: 1.9 MB
- Tags: CPython 3.14, Windows x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c938d78e40cd988dfb0dbe8f29f685752556d1c2bfc05e23011b4b1c04e248cc
|
|
| MD5 |
539efdcbaae6c1d55cf81a8f3071e91d
|
|
| BLAKE2b-256 |
c12745bf09044fea5efe21ed9e2a242b6596ddebb0f11886e35c61134c4f58a0
|
File details
Details for the file sshdcommander-4.0.3-cp312-cp312-manylinux_2_34_x86_64.whl.
File metadata
- Download URL: sshdcommander-4.0.3-cp312-cp312-manylinux_2_34_x86_64.whl
- Upload date:
- Size: 14.0 MB
- Tags: CPython 3.12, manylinux: glibc 2.34+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
02050461687188d7b1aa7b2efd5ae6f0744beb24143615e48af72534ecc48d30
|
|
| MD5 |
e5546fdce5ea33129de41ac1441871c1
|
|
| BLAKE2b-256 |
da2f68980a93afdc25c4169d887e0e5450a83a43455c3fea9f884557918593be
|