purple.

Find any server. Connect in a keystroke.

$ curl -fsSL getpurple.sh | sh

or brew install erickochen/purple/purple or cargo install purple-ssh

Your SSH config has 200 hosts. You need the right one now. purple gives you instant search, visual file transfer and cloud sync in a TUI that edits your ~/.ssh/config directly. No context switching.

purple SSH config manager TUI demo: searching hosts, transferring files, connecting via SSH and syncing cloud providers in the terminal

Instant access

Search 500 hosts, connect in a keystroke. Frecency sorting learns what you use most.

Visual file transfer

Dual-pane explorer. Browse remote files, copy with Enter. No scp paths to remember.

10-provider cloud sync

AWS, GCP, Azure and 7 more. Servers appear in your SSH config automatically.

Features

SearchFuzzy search across aliases, hostnames, users and tags
SnippetsRun the same command on 50 servers. Sequential or parallel
TagsOrganize by environment, team or project. Filter with #tags
TunnelsManage port forwards per host. Start and stop from the TUI
Round-trip fidelityComments, formatting and unknown directives stay untouched
SSH keysBrowse keys with metadata and see which hosts use each key
Bulk importMigrate from hosts files or known_hosts in one command
Atomic writesTemp file, chmod 600, rename. With automatic backups
Detail panelConnection info, activity, provider metadata, tunnels and snippets
PingCheck which servers are reachable before you connect

Cloud providers

Pull servers from ten cloud providers directly into your ~/.ssh/config. Sync adds new hosts, updates changed IPs and merges tags. Provider metadata (region, plan, OS, status) is stored in config comments and displayed in the detail panel.

AWS EC2 Azure DigitalOcean GCP Hetzner Linode Proxmox VE Scaleway UpCloud Vultr

Preview changes with --dry-run. Remove deleted hosts with --remove. Replace local tags with --reset-tags.

Your config, respected

purple reads and writes ~/.ssh/config directly with full round-trip fidelity. Comments, indentation, unknown directives, CRLF line endings and Include files are all preserved. Every write is atomic with automatic backups.

Built with Rust

Starts instantly. No dependencies to install. No daemon running in the background. Won't corrupt your config. Single binary. MIT licensed. 3000+ tests.


Who uses purple

SRE managing 200 servers across AWS, GCP and Hetzner. Search, tag and connect in seconds.
Developer transferring config files and logs between servers without typing scp paths.
Freelancer managing client infrastructure across multiple clouds from one TUI.
Sysadmin running the same diagnostic command on 50 servers at once with snippets.

Why purple

vs. manual SSH config editing. purple adds search, tags, cloud sync, snippets, password management and a remote file explorer while preserving your existing config.
vs. Termius / Royal TSX. Free, open-source, terminal-native. Edits your real SSH config. No proprietary database, no subscription.
vs. storm / sshs. purple adds a TUI with config editing, cloud sync from 10 providers, file transfer, snippets and password management.
vs. Ansible / Fabric. For interactive SSH management and ad-hoc commands. Snippets provide lightweight multi-host execution without playbooks.

FAQ

What is purple?
A free, open-source TUI for managing SSH servers. Search hundreds of hosts, connect instantly, transfer files visually, run commands across servers, sync from ten cloud providers and handle SSH passwords automatically. Single Rust binary for macOS and Linux.
Can I transfer files with purple?
Yes. Press f on any host to open the remote file explorer. Local files on the left, remote on the right. Navigate directories, select files and copy between machines with Enter. Works through ProxyJump chains, password sources and active tunnels.
What cloud providers does purple support?
AWS EC2, DigitalOcean, Vultr, Linode (Akamai), Hetzner, UpCloud, Proxmox VE, Scaleway, GCP (Compute Engine) and Azure. Each provider is configured with an API token or credentials profile.
How do command snippets work?
Save commands and run them on remote hosts via SSH. Select one host, multiple hosts or all visible hosts from the TUI. The CLI supports tag-based targeting and parallel execution.
How does password management work?
Set a password source per host via the TUI or a global default. When you connect, purple acts as SSH_ASKPASS and retrieves the password automatically. Supported: OS Keychain, 1Password, Bitwarden, pass, HashiCorp Vault and custom commands.
Does purple modify my existing SSH config?
Only when you add, edit, delete or sync. All writes are atomic with automatic backups.
Will purple break my comments or formatting?
No. Comments, indentation and unknown directives are preserved through every read-write cycle.
Does purple need a daemon?
No. Single binary. Run it, use it, close it.
Does purple send my SSH 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).
Can I use Include files?
Yes. Hosts from Include files are displayed in the TUI but never modified. Resolved recursively up to depth 5 with tilde and glob expansion.
How do I sync GCP instances?
Run purple provider add gcp --token /path/to/sa-key.json --project my-project. Pass a service account JSON key file. Purple creates a JWT and exchanges it for an access token automatically. Or pass a raw token from gcloud auth print-access-token.
How do I sync Azure VMs?
Run purple provider add azure --token /path/to/sp.json --regions SUBSCRIPTION_ID. Pass a service principal JSON file (supports az CLI and portal formats) or a raw access token. Use comma-separated subscription IDs for multi-subscription sync.
$ curl -fsSL getpurple.sh | sh