{"id":37630444,"url":"https://github.com/cdump/proton-tui","last_synced_at":"2026-01-20T12:01:02.667Z","repository":{"id":332542729,"uuid":"1133534708","full_name":"cdump/proton-tui","owner":"cdump","description":"A modern, unofficial ProtonVPN Terminal User Interface (TUI) for Linux, written in Rust.","archived":false,"fork":false,"pushed_at":"2026-01-16T07:42:40.000Z","size":264,"stargazers_count":4,"open_issues_count":1,"forks_count":0,"subscribers_count":0,"default_branch":"master","last_synced_at":"2026-01-19T16:47:57.186Z","etag":null,"topics":["proton","protonvpn","rust","tui","vpn-client","wireguard"],"latest_commit_sha":null,"homepage":"","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/cdump.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":"AGENTS.md","dco":null,"cla":null}},"created_at":"2026-01-13T13:34:23.000Z","updated_at":"2026-01-16T07:42:31.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/cdump/proton-tui","commit_stats":null,"previous_names":["cdump/proton-tui"],"tags_count":2,"template":false,"template_full_name":null,"purl":"pkg:github/cdump/proton-tui","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cdump%2Fproton-tui","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cdump%2Fproton-tui/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cdump%2Fproton-tui/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cdump%2Fproton-tui/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/cdump","download_url":"https://codeload.github.com/cdump/proton-tui/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cdump%2Fproton-tui/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28603295,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-20T10:46:13.255Z","status":"ssl_error","status_checked_at":"2026-01-20T10:42:51.865Z","response_time":117,"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":["proton","protonvpn","rust","tui","vpn-client","wireguard"],"created_at":"2026-01-16T10:56:28.219Z","updated_at":"2026-01-20T12:01:02.286Z","avatar_url":"https://github.com/cdump.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Proton TUI\n\n![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)\n![Platform: Linux](https://img.shields.io/badge/Platform-Linux-blue)\n![Status: Unofficial](https://img.shields.io/badge/Status-Unofficial-orange)\n\nA modern, feature-rich Terminal User Interface (TUI) for ProtonVPN, written in Rust.\n\n\u003e **⚠️ DISCLAIMER**\n\u003e\n\u003e This project is **NOT** affiliated with, endorsed by, or connected to Proton AG or ProtonVPN in any way. It is an unofficial, community-driven tool.\n\u003e\n\u003e This software is provided \"as is\", without warranty of any kind. The authors and contributors assume **ZERO LIABILITY** for any damages, security issues, or data loss arising from the use of this software. Use it at your own risk.\n\u003e\n\u003e This codebase was almost entirely generated by AI coding agents with virtually no manual code editing.\n\n## 🖥️ Interface\n![Proton TUI Interface](assets/screenshot.png)\n\n## ✨ Features\n\n*   **Full TUI Experience**: Navigate servers and countries using your keyboard.\n*   **ProtonVPN Integration**: Authenticates directly with ProtonVPN using your credentials (supports 2FA/SRP).\n*   **WireGuard Support**: Automatically manages WireGuard keys and configurations.\n*   **Efficient Search**: Quickly find servers by name, country, or city.\n*   **Dual Views**: Switch between a nested Tree View or a Split View (Country/Server panes).\n*   **Live Status**: Real-time connection status and uptime monitoring.\n\n## 🐧 Prerequisites\n\nThis tool currently works **only on Linux**. It relies on the system's `wireguard-tools` to manage connections.\n\n1.  **Rust**: You need the Rust toolchain installed (if building from source).\n2.  **WireGuard**: Ensure `wireguard-tools` is installed on your system.\n    ```bash\n    # Debian/Ubuntu\n    sudo apt install wireguard-tools\n\n    # Arch Linux\n    sudo pacman -S wireguard-tools\n    ```\n3.  **Root Privileges**: The tool uses `sudo wg-quick` to establish network interfaces. You will be prompted for your sudo password when connecting.\n\n## 🚀 Installation\n\n### Download Binary (Recommended)\n\nYou can download the latest prebuilt binary from the [Releases](https://github.com/cdump/proton-tui/releases) page.\n\n```bash\n# 1. Download the binary\ncurl -L -o proton-tui https://github.com/cdump/proton-tui/releases/latest/download/proton-tui-linux-x86_64\n\n# 2. Make it executable\nchmod +x proton-tui\n\n# 3. Run it\n./proton-tui\n```\n\n### From Source\n\n```bash\n# Clone the repository\ngit clone https://github.com/cdump/proton-tui.git\ncd proton-tui\n\n# Build and run\ncargo run --release\n```\n\nOr install it globally:\n\n```bash\ncargo install --path .\n```\n\n## 📖 Usage\n\nRun the application:\n\n```bash\nproton-tui\n```\n\n### Keybindings\n\n| Key | Action |\n| --- | --- |\n| **Navigation** | |\n| `↑` / `k` | Move selection up |\n| `↓` / `j` | Move selection down |\n| `Space` | Toggle country expansion (Tree View) |\n| `Tab` | Switch between panes (Split View) |\n| `v` | Toggle between Tree View and Split View |\n| **Connection** | |\n| `Enter` | Connect to selected server |\n| `d` | Disconnect (from status bar/popup) |\n| **General** | |\n| `/` | Search servers |\n| `s` | Save WireGuard config locally |\n| `?` | Show Help Popup |\n| `Esc` | Cancel search / close popups |\n| `q` | Quit application |\n| `Ctrl+C` | Force quit |\n\n## ⚙️ Configuration\n\nAuthentication tokens are cached locally for subsequent sessions:\n\n```\n~/.config/proton-tui/tokens.json\n```\n\nTo logout or clear cached credentials, simply delete this file:\n\n```bash\nrm ~/.config/proton-tui/tokens.json\n```\n\n## 🛠️ Technical Details\n\n*   **Config Storage**: Temporary WireGuard configurations are written to `$XDG_RUNTIME_DIR/proton-tui/proton-tui0.conf` (falling back to `/tmp/proton-tui/proton-tui0.conf`) with restricted permissions (`600`). Saved configs go to `$XDG_CONFIG_HOME/proton-tui/proton-tui0.conf`.\n*   **Authentication**: Uses Proton's SRP (Secure Remote Password) protocol for login. Tokens are cached locally for subsequent sessions.\n*   **Networking**: Spawns `sudo wg-quick up/down` processes to manage the `proton-tui0` network interface.\n*   **DNS**: The application does **not** modify your DNS settings. It relies on your system's existing DNS configuration.\n\n## 📄 License\n\nThis project is licensed under the [MIT License](LICENSE).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcdump%2Fproton-tui","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcdump%2Fproton-tui","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcdump%2Fproton-tui/lists"}