Releases: danilo-aguiar-br/ssh-cli
Releases · danilo-aguiar-br/ssh-cli
Release list
ssh-cli v0.5.2
ssh-cli 0.5.2
Agent-first SSH CLI for LLMs: SFTP subsystem, SSH-over-TLS / mTLS / ACME, domain types, and residual agent contracts.
Highlights
- SFTP (
sftp upload|download|ls|mkdir|rmdir|rm|stat|rename) with optional--recursive, schemas, and multi-host fan-out - TLS feature: SSH-over-TLS, mTLS inventory, ACME account/issue/complete (exit 64 for permanent ACME validation errors)
- CLI/XDG only: ambient
RUST_LOGignored (use-v); no product env secrets stores - Agent discovery: root
schema+doctor; singlevps-addeddocument withsecrets_key_auto_created - Domain / errors: newtypes, structured
error_code, batchbatch_run_id(UUID v7) - Residual gates:
gaps_v052…gaps_v058
Install
cargo install ssh-cli --locked
# or
cargo install ssh-cli --version 0.5.2 --lockedDocs
ssh-cli v0.5.1
ssh-cli 0.5.1
Agent-first gap closure for export/import, wire schema v3, secrets CLI flags, and tunnel bind.
Highlights
vps exportbody is TOML by default (even on pipes); agent envelope withvps export --json(event: vps-export)- Import dual-read TOML EN+PT + JSON schema v3; invalid TOML → exit 65;
added_atoptional on import - Secrets: primary-key flags
--allow-plaintext-secrets,--secrets-key-file,--use-keyring; JSON eventssecrets-init/secrets-reencrypt/secrets-key-auto-created - Tunnel
--binddefault127.0.0.1; empty command →empty commandexit 64; auth → exit 77 - Include-secrets guard for stdout/pipe; doctor
secrets_plaintext_opt_outas bool - Bilingual docs + skills updated; suite
gaps_v051_integration
Install
cargo install ssh-cli --locked --force
ssh-cli --versionLinks
v0.4.1 — AUD-POST export/tunnel/auth/scp
ssh-cli 0.4.1
PATCH release closing AUD-POST gaps after 0.4.0.
Fixed
- Export redacted empty secret no longer emits
sshcli-enc:v1:…for password""(EXP-001). Empty secrets stay empty strings. - Tunnel one-shot deadline after local bind exits 0 (not 74) once
tunnel_listeningwas emitted (TUN-002). Pre-bind timeout remains 74.
Added
tunnelauth parity:--password-stdin,--key-passphrase,--key-passphrase-stdin(CLI-005)health-checkauth parity:--password-stdin,--key,--key-passphrase[-stdin](CLI-006)- SCP success JSON
event: "scp-transfer"required in schema (IO-009) - Suite
gaps_v041+ product-line/skills honesty (DOC-041) health-checkhonors--replace-host-keyand JSON error envelopes with--json
Install
cargo install ssh-cli --locked --force
ssh-cli --versionNotes
- One-shot CLI: birth → execute → die
- No telemetry
- crates.io:
ssh-cli0.4.1
v0.4.0 — SCP wire fix + agent-first JSON
ssh-cli 0.4.0
Critical: crates.io 0.3.9 advertised SCP but the wire protocol was broken (literal \\n, empty ACK, missing remote status). Upgrade to 0.4.0.
Highlights
- SCP wire protocol fixed (header newline
0x0a, ACK/EOF0x00, remote status, path escape) - Regular files only (no recursive dirs / no SFTP)
- Downloads via
.ssh-cli.partial+ atomic rename; mode/times on partial before rename - Upload streams in 32 KiB chunks (no full-file RAM load)
- Bi-directional mtime/mode preserve (
-tp/-fp) scp --json→scp-transferevent + JSON error envelopetunnel --json→tunnel_listeningafter local bind- Flag parity: timeout, key, password-stdin, key-passphrase(-stdin)
- E2E E10–E14 + suite
gaps_v040 - Product-line docs honesty (DOC-004b/c/d)
Install
cargo install ssh-cli --lockedLinks
No telemetry.
v0.3.6
ssh-cli 0.3.6
Default at-rest secret encryption (ChaCha20-Poly1305), secrets CLI, TOFU known_hosts, safe sudo packing, install crypto pins (GAP-014), bilingual docs/skills, and JSON schemas.
Install
cargo install ssh-cli --lockedLinks
v0.3.3 — owner/repo migration
v0.3.3
Migration release after previous GitHub account ban:
- crates.io ownership transferred to danilo-aguiar-br
- repository / homepage: https://github.com/danilo-aguiar-br/ssh-cli
- GitHub Actions CI/CD removed (no workflows on this repo)
- Author: Danilo Aguiar daniloaguiarbr@proton.me
Publish to crates.io follows separately.