ssh-cli 0.3.6

Native Rust CLI that gives LLMs (Claude Code, Cursor, Windsurf) the ability to operate remote servers via SSH over stdin/stdout
Documentation
# ssh-cli

> CLI SSH multi-host one-shot para agentes de IA com storage XDG e sem daemon Node

ssh-cli é um binário Rust memory-safe que permite LLMs operarem servidores remotos via stdin/stdout. Substitui processos long-lived Node SSH daemons persistentes por invocações nascer-executar-morrer, inventário multi-host XDG, auth por senha ou chave, packing seguro de sudo, su-exec, tunnels limitados, known_hosts TOFU, limites dual de comando/saída e **cifragem at-rest de segredos por padrão** (ChaCha20-Poly1305 + `secrets.key`). Telemetria é proibida. Prefira `cargo install ssh-cli --locked`. Linha de produto atual: **0.3.6** (GAP-001–014 fechados).

- Read this document in [English](llms.txt).
- Índice expandido: [llms-full.txt](llms-full.txt)

## Documentação principal
### Fontes canônicas em português para ingestão por LLM
- [README](https://github.com/danilo-aguiar-br/ssh-cli/blob/main/README.pt-BR.md): install, comandos, env, FAQ
- [HOW_TO_USE](https://github.com/danilo-aguiar-br/ssh-cli/blob/main/docs/HOW_TO_USE.pt-BR.md): primeiro comando em 60 segundos
- [COOKBOOK](https://github.com/danilo-aguiar-br/ssh-cli/blob/main/docs/COOKBOOK.pt-BR.md): receitas executáveis
- [AGENTS](https://github.com/danilo-aguiar-br/ssh-cli/blob/main/docs/AGENTS.pt-BR.md): economia do agente e contrato JSON
- [MIGRATION](https://github.com/danilo-aguiar-br/ssh-cli/blob/main/docs/MIGRATION.pt-BR.md): upgrade de 0.3.3 para **0.3.6**
- [INTEGRATIONS](https://github.com/danilo-aguiar-br/ssh-cli/blob/main/INTEGRATIONS.pt-BR.md): catálogo de agentes e IDEs
- [CHANGELOG](https://github.com/danilo-aguiar-br/ssh-cli/blob/main/CHANGELOG.pt-BR.md): histórico de releases
- [CONTRIBUTING](https://github.com/danilo-aguiar-br/ssh-cli/blob/main/CONTRIBUTING.pt-BR.md): fluxo de contribuição
- [SECURITY](https://github.com/danilo-aguiar-br/ssh-cli/blob/main/SECURITY.pt-BR.md): divulgação de vulnerabilidades e segredos at-rest
- [CODE_OF_CONDUCT](https://github.com/danilo-aguiar-br/ssh-cli/blob/main/CODE_OF_CONDUCT.pt-BR.md): padrões da comunidade
- [schemas index](https://github.com/danilo-aguiar-br/ssh-cli/blob/main/docs/schemas/README.md): contratos JSON
- [skill pt](https://github.com/danilo-aguiar-br/ssh-cli/blob/main/skills/ssh-cli-pt/SKILL.md): pacote de skill imperativo

## Comandos principais
### Subcomandos por ciclo de vida
- `vps add|list|show|edit|remove|path|doctor|export|import` gerencia inventário multi-host XDG
- `connect` grava marcador de host ativo
- `exec` roda comando remoto one-shot
- `sudo-exec` eleva com packing seguro `sh -c`
- `su-exec` eleva com `su -` one-shot
- `scp upload|download` transfere arquivos
- `tunnel` abre port-forward local limitado com `--timeout-ms` obrigatório
- `health-check` sonda conectividade e latência
- `secrets status|init|reencrypt` gerencia master-key e cifragem at-rest (nunca imprime a chave)
- `completions` emite scripts de completion

## Defaults e limites
- Porta SSH default é 22
- Timeout default é 60000 ms
- max_command_chars default é 1000
- max_output_chars default é 100000
- Schema version de hosts novos é 2
- Segredos at-rest: **cifrados por padrão** (auto `secrets.key`); opt-out `SSH_CLI_ALLOW_PLAINTEXT_SECRETS=1` só em testes
- Telemetria é sempre false
- Install: sempre prefira `--locked`

## Regras de segurança para agentes
- Prefira `--password-stdin` / `--key` a senhas em argv
- Nunca logue senhas de host, master-key ou segredos decifrados
- Em falha de auth tente `--key`, `--password-stdin`, `--key-passphrase-stdin`
- Revise erros TOFU de host-key antes de `--replace-host-key`

## Exit codes
- `0` sucesso
- `1` erro genérico de runtime
- `64` erro de uso
- `65` erro de dados
- `66` VPS ou arquivo não encontrado
- `73` não foi possível criar config
- `74` erro de IO ou conexão SSH
- `77` autenticação rejeitada
- `130` SIGINT
- `143` SIGTERM