{"id":45187151,"url":"https://github.com/erickochen/purple","last_synced_at":"2026-04-25T12:01:31.416Z","repository":{"id":339426821,"uuid":"1161891767","full_name":"erickochen/purple","owner":"erickochen","description":"Open-source terminal SSH manager and SSH config editor in Rust. Fuzzy search hundreds of hosts, sync from 16 clouds, transfer files, manage Docker and Podman over SSH, sign short-lived Vault SSH certs and expose an MCP server for AI agents.","archived":false,"fork":false,"pushed_at":"2026-04-25T09:55:35.000Z","size":223476,"stargazers_count":238,"open_issues_count":3,"forks_count":8,"subscribers_count":0,"default_branch":"master","last_synced_at":"2026-04-25T11:21:30.840Z","etag":null,"topics":["cli","cloud-sync","command-line-tool","devops","hashicorp-vault","homelab","mcp","model-context-protocol","proxmox","ratatui","rust","sftp-client","ssh","ssh-client","ssh-config","ssh-manager","ssh-tunnel","sysadmin","terminal","tui"],"latest_commit_sha":null,"homepage":"https://getpurple.sh","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/erickochen.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null},"funding":{"github":"erickochen"}},"created_at":"2026-02-19T16:30:18.000Z","updated_at":"2026-04-25T09:59:48.000Z","dependencies_parsed_at":null,"dependency_job_id":"64c9eb05-4084-4822-9fed-f2299b1037d3","html_url":"https://github.com/erickochen/purple","commit_stats":null,"previous_names":["erickochen/purple"],"tags_count":145,"template":false,"template_full_name":null,"purl":"pkg:github/erickochen/purple","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/erickochen%2Fpurple","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/erickochen%2Fpurple/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/erickochen%2Fpurple/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/erickochen%2Fpurple/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/erickochen","download_url":"https://codeload.github.com/erickochen/purple/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/erickochen%2Fpurple/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32261124,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-25T09:15:33.318Z","status":"ssl_error","status_checked_at":"2026-04-25T09:15:31.997Z","response_time":59,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["cli","cloud-sync","command-line-tool","devops","hashicorp-vault","homelab","mcp","model-context-protocol","proxmox","ratatui","rust","sftp-client","ssh","ssh-client","ssh-config","ssh-manager","ssh-tunnel","sysadmin","terminal","tui"],"created_at":"2026-02-20T11:03:34.058Z","updated_at":"2026-04-25T12:01:31.365Z","avatar_url":"https://github.com/erickochen.png","language":"Rust","readme":"# purple\n\n**An open-source terminal SSH manager and SSH config editor for macOS and Linux.** A fast Rust TUI that searches hundreds of hosts, syncs from 16 clouds including AWS, GCP, Azure, Hetzner, Proxmox and OCI, transfers files, manages Docker and Podman over SSH, signs short-lived HashiCorp Vault SSH certificates and exposes an MCP server for AI agents. Keyboard-driven. Single binary. MIT licensed.\n\n[![crates.io](https://img.shields.io/crates/v/purple-ssh?color=b44aff\u0026labelColor=0a0a14)](https://crates.io/crates/purple-ssh)\n[![downloads](https://img.shields.io/crates/d/purple-ssh?color=b44aff\u0026labelColor=0a0a14)](https://crates.io/crates/purple-ssh)\n[![mit](https://img.shields.io/badge/license-mit-b44aff?labelColor=0a0a14)](LICENSE)\n[![built with ratatui](https://img.shields.io/badge/built_with-ratatui-b44aff?labelColor=0a0a14\u0026logo=ratatui\u0026logoColor=fff)](https://ratatui.rs/)\n[![Website](https://img.shields.io/badge/website-getpurple.sh-00f0ff?labelColor=0a0a14)](https://getpurple.sh)\n\n![purple terminal SSH client demo](demo.gif)\n\n## Install\n\n```\ncurl -fsSL getpurple.sh | sh\n```\n\n\u003cdetails\u003e\n\u003csummary\u003ebrew, cargo or from source\u003c/summary\u003e\n\n```\nbrew install erickochen/purple/purple\n```\n```\ncargo install purple-ssh\n```\n```\ngit clone https://github.com/erickochen/purple.git\ncd purple \u0026\u0026 cargo build --release\n```\n\u003c/details\u003e\n\nRun `purple`. Press `?` on any screen for help. That's it.\n\n## Why I built this\n\nMy SSH config was fine. Proper aliases, ProxyJump chains, organized by provider. Not the problem.\n\nThe 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.\n\nI wanted one place for all of that. So I built it.\n\n## What you get\n\n\u003cimg src=\"screenshots/detail.png\" width=\"55%\" align=\"left\" alt=\"detail panel\"\u003e\n\n🔍 **Everything at a glance.** Connection info, jump route, activity sparkline, tags, tunnels, snippets, containers and server metadata. Health dots show which hosts are up. Group by provider, tag or flat.\n\n\u003cbr clear=\"both\"\u003e\n\u003cbr\u003e\n\n⚡ **Instant fuzzy search.** Names, IPs, tags, users. Frecency sorting puts your most-used hosts on top. Works the same with 5 hosts or 500. Scoped search within groups.\n\n![fuzzy search](screenshots/search.png)\n\n☁️ **16 cloud providers.** AWS, DigitalOcean, Hetzner, GCP, Azure, Proxmox VE, Vultr, Linode, UpCloud, Scaleway, Tailscale, Oracle Cloud, OVHcloud, Leaseweb, i3D.net and TransIP. VMs appear, IPs update, stale hosts dim. Region, instance type, OS and status synced as metadata.\n\n![cloud providers](screenshots/providers.png)\n\n🐳 **Containers over SSH.** Docker and Podman. Start, stop, restart. No agent on the remote, no extra ports. Just SSH.\n\n![containers](screenshots/containers.png)\n\n- **What's new** Sticky toast and overlay summarising releases since you last opened. See [What's New](https://github.com/erickochen/purple/wiki/Whats-New)\n\n**And more.** Visual file transfer with split-pane explorer. Multi-host command execution with snippets. Automatic password retrieval from OS Keychain, 1Password, Bitwarden, pass and the HashiCorp Vault KV secrets engine. Short-lived SSH certificates signed via the HashiCorp Vault SSH secrets engine. Command palette (`:`) for quick access to all actions. MCP server for AI agents like Claude Code and Cursor. See the [wiki](https://github.com/erickochen/purple/wiki) for details.\n\n## How it works\n\npurple reads `~/.ssh/config` directly. No database, no daemon, no account. Comments, indentation, Include files, unknown directives. All preserved.\n\nWritten in Rust. Single binary. 6200+ tests. MIT license.\n\n## Links\n\n📖 [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)\n\n## Credits\n\nThe font used in the demo videos and screenshots is [Berkeley Mono™](https://usgraphics.com/products/berkeley-mono) by U.S. Graphics Company.\n\n## Feedback\n\nBug or feature request? [Open an issue](https://github.com/erickochen/purple/issues).\n","funding_links":["https://github.com/sponsors/erickochen"],"categories":["Applications","💻 Apps","Productivity Tools"],"sub_categories":["System tools","👨‍💻 System Administration"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ferickochen%2Fpurple","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ferickochen%2Fpurple","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ferickochen%2Fpurple/lists"}