purple - Terminal SSH Manager and SSH Config Editor in Rust
Author: Eric Kochen
Description: Open-source terminal SSH manager and ~/.ssh/config editor. Fuzzy search hundreds of hosts, sync AWS, GCP, Azure and 13 more clouds, transfer files, manage Docker and Podman over SSH, sign short-lived Vault SSH certs. Free Termius alternative in Rust.
Keywords: ssh manager, ssh client, ssh config editor, terminal ssh manager, tui ssh, rust ssh tui, ratatui, termius alternative, sshs alternative, ssh bookmarks manager, cloud ssh sync, multi-cloud ssh inventory, ssh tunnel manager, sftp client, scp file transfer, docker over ssh, podman over ssh, agentless container management, portainer alternative, hashicorp vault ssh, short-lived ssh certificates, mcp server, model context protocol, claude code ssh, devops, sysadmin, homelab

# purple. One terminal. All your servers.

## Open-source terminal SSH manager and SSH config editor for macOS and Linux. Search, connect, transfer files and manage containers. All from one TUI.

purple
$
Downloading purple v2.33.3 for darwin-arm64...
Installing to /usr/local/bin/purple... done.
$ brew install erickochen/purple/purple
$ cargo install purple-ssh

I had a perfectly good SSH config. Clean, well-organized, no complaints. That part worked.

What didn't work was the six other things I needed to do every day. Every container check was `ssh`, `docker ps`, scroll, repeat. Every file transfer was remembering `scp` flags. Every new cloud VM meant opening a console, copying an IP, editing my config by hand. And running the same command across a dozen hosts? That was either a bash loop or a whole Ansible setup for a one-liner.

So I put all of it in one terminal.

🔍 Find any host in a keystroke. Fuzzy matching across hostnames, IPs, tags and users. Your most-used servers float to the top automatically.
☁️ Pull servers from 16 cloud providers. AWS, Azure, GCP, Hetzner, DigitalOcean, Proxmox VE, Tailscale and 9 more. New VMs sync in, IPs stay current, decommissioned hosts get flagged.
🐳 See and control containers remotely. Docker and Podman over plain SSH. Start, stop, restart without installing anything on the remote.
📂 Browse and copy files between machines. Dual-pane file explorer. Local filesystem on one side, remote on the other. Handles ProxyJump chains and tunnels.
⚡ Run one command on many hosts. Pick a snippet, select your targets, execute. Results stream in per host.
🔑 Passwords handled for you. Plugs into OS Keychain, 1Password, Bitwarden, pass, the HashiCorp Vault KV secrets engine or a custom script. Credentials are fetched at connect time.
📜 Short-lived SSH certificates. Integrates with the HashiCorp Vault SSH secrets engine. Configure a role per host or per provider, press V to bulk-sign. Cached under ~/.purple/certs with automatic renewal.
🤖 Let AI agents manage your servers. Built-in MCP server. Claude Code, Cursor and other tools get direct access to your hosts and containers.
Cloud providers

- AWS EC2
- Azure
- DigitalOcean
- GCP
- Hetzner
- i3D.net
- Leaseweb
- Linode
- Oracle Cloud
- OVHcloud
- Proxmox VE
- Scaleway
- Tailscale
- TransIP
- UpCloud
- Vultr

FAQ
PURPLE(1)General Commands ManualPURPLE(1)
Does purple modify my SSH config?
Only when you explicitly add, edit, delete or sync. All writes are atomic with automatic backups. Comments, indentation and unknown directives are preserved.
Does it need a daemon or background process?
No. Single binary. Run it, use it, close it.
Does it send my config anywhere?
No. Your config never leaves your machine. Provider sync calls cloud APIs to fetch server lists. The TUI checks GitHub for new releases on startup (cached 24 hours). That's it.
Can I manage Docker containers with purple?
Yes. Press `C` on any host to list all containers over SSH. Start, stop, restart. Auto-detects Docker or Podman. No agent, no web UI, no extra ports.
Can AI assistants use purple?
Yes. Run `purple mcp` to start the MCP server. Claude Code, Cursor and other agents get five tools: list_hosts, get_host, run_command, list_containers and container_action.
How do I troubleshoot connection problems?
Run with `--verbose` to enable debug logging, then `purple logs --tail` in another terminal. Logs are written to `~/.purple/purple.log` with fault domain prefixes: `[external]` for remote/tool errors, `[config]` for local config issues. Set `PURPLE_LOG=trace` for maximum detail.
purple v2.33.32026-04-12PURPLE(1)
`$ curl -fsSL getpurple.sh | sh`