# purple
**A terminal cockpit for your servers.** Search, connect, transfer files, manage containers and run commands across hosts. All keyboard-driven. Free and open source.
[](https://crates.io/crates/purple-ssh)
[](https://crates.io/crates/purple-ssh)
[](LICENSE)
[](https://ratatui.rs/)
[](https://getpurple.sh)

## Why I built this
My SSH config was fine. Proper aliases, ProxyJump chains, organized by provider. Not the problem.
The problem was everything around it. Need to check a container? `ssh host docker ps`. Copy a file? `scp` with the right flags. Run the same command on ten hosts? Write a loop or boot up Ansible for a one-liner. Spin up a VM on Hetzner? Open the console, grab the IP, edit config, save. Someone asks which box runs what? Good luck.
I wanted one place for all of that. So I built it.
## Install
```
<details>
<summary>brew, cargo or from source</summary>
```
brew install erickochen/purple/purple
```
```
cargo install purple-ssh
```
```
git clone https://github.com/erickochen/purple.git
cd purple && cargo build --release
```
</details>
Run `purple`. Press `?` on any screen for help. That's it.
## What you get
๐ **Instant fuzzy search.** Names, IPs, tags, users. Frecency sorting puts your most-used hosts on top. Works the same with 5 hosts or 500.
โ๏ธ **Cloud sync for 16 providers.** AWS, Azure, GCP, Hetzner, DigitalOcean, Proxmox VE, Tailscale and [9 more](https://github.com/erickochen/purple/wiki/Cloud-Providers). VMs show up, IPs update, deleted ones disappear. Your SSH config stays the source of truth.
๐ณ **Container management over SSH.** Docker and Podman. Start, stop, restart. No agent on the remote, no extra ports. Just SSH.
๐ **Visual file transfer.** Split-pane explorer, local on the left, remote on the right. Works through ProxyJump chains and tunnels.
โก **Multi-host command execution.** Save snippets, select hosts, run. Output per host in a scrollable view. `{{param}}` placeholders with defaults.
๐ **Automatic password retrieval.** OS Keychain, 1Password, Bitwarden, pass, HashiCorp Vault or any custom command. Pulled on connect via SSH_ASKPASS. No clipboard, no typing.
๐ค **MCP server for AI agents.** Claude Code, Cursor and others can list your hosts, run commands and manage containers. Three lines in your config.
## How it works
purple reads `~/.ssh/config` directly. No database, no daemon, no account. Comments, indentation, Include files, unknown directives. All preserved.
Written in Rust. Single binary. 5000+ tests. MIT license.
## Links
๐ [Wiki](https://github.com/erickochen/purple/wiki) ยท โ๏ธ [Cloud Providers](https://github.com/erickochen/purple/wiki/Cloud-Providers) ยท ๐ค [MCP Server](https://github.com/erickochen/purple/wiki/MCP-Server) ยท โ [FAQ](https://github.com/erickochen/purple/wiki/FAQ) ยท ๐ [Security](SECURITY.md) ยท ๐ง [llms.txt](https://getpurple.sh/llms.txt)
## Feedback
Bug or feature request? [Open an issue](https://github.com/erickochen/purple/issues).