https://github.com/hueidou/telepresence-manager
A cross-platform desktop GUI tool for managing Telepresence connections.
https://github.com/hueidou/telepresence-manager
dev gui kubectl manager telepresence ui
Last synced: 16 days ago
JSON representation
A cross-platform desktop GUI tool for managing Telepresence connections.
- Host: GitHub
- URL: https://github.com/hueidou/telepresence-manager
- Owner: hueidou
- License: mit
- Created: 2026-06-12T17:36:02.000Z (18 days ago)
- Default Branch: main
- Last Pushed: 2026-06-13T04:35:16.000Z (18 days ago)
- Last Synced: 2026-06-13T05:22:45.968Z (18 days ago)
- Topics: dev, gui, kubectl, manager, telepresence, ui
- Language: JavaScript
- Homepage:
- Size: 262 KB
- Stars: 0
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Telepresence Manager
A cross-platform desktop GUI tool for managing [Telepresence](https://www.telepresence.io/) connections. Built with Python + pywebview (WebView).
[δΈζζζ‘£](README.zh.md)
## Features
- π **Smart config scanning** β Auto-scan `~/.kube/` for K8s config files (config, *.txt, *.yaml, multi-document YAML)
- π **Context cards** β Display all contexts as a card list (name, cluster, server, source file)
- βΆοΈ **One-click connect / disconnect** β Toggle Telepresence connection per context
- π **On-demand status** β Connection state, node count, Traffic Manager status (parallel queries)
- π¦ **Traffic Manager management** β Install / upgrade with one click
- π» **Context-aware shell** β Open a terminal window pre-configured for the selected context
- π§ **Tool auto-detect** β Finds telepresence & kubectl on all platforms (PATH, Homebrew, Snap, WinGet)
- π **Search & filter** β Filter contexts by name, cluster, server, or source file (`Ctrl+F`)
- π **Auto-refresh** β Connection status auto-refreshes at configurable interval (default 30s)
- π **i18n: Chinese + English** β Auto-detects system language, switch anytime in β Settings
- β **Settings panel** β Language selector + refresh interval configuration
- π **Auto-update** β Checks GitHub Releases on startup, one-click update with auto-restart
- β¨οΈ **Keyboard shortcuts** β `Ctrl+R` scan, `Ctrl+F` search, `Esc` close panels
- π **Copy context name** β One-click copy to clipboard
- πͺ΅ **File logging** β Operation log at `~/.kube/telepresence-manager.log`
## Screenshot

## Prerequisites
| Platform | Requirements |
|----------|-------------|
| **Windows** | Windows 10/11, Edge WebView2 Runtime (built-in) |
| **macOS** | macOS 12+, WebKit (built-in) |
| **Linux** | X11/Wayland, WebKit2GTK (`apt install libwebkit2gtk-4.1-dev`) |
**Required on all platforms:**
- [telepresence](https://www.telepresence.io/) v2.x
- [kubectl](https://kubernetes.io/docs/tasks/tools/)
## Installation
### Download (Recommended)
Download the latest release from [GitHub Releases](https://github.com/hueidou/telepresence-manager/releases):
| Artifact | Platform | Description |
|----------|----------|-------------|
| `TelepresenceManager.exe` | Windows | Standalone executable |
| `*-win.zip` | Windows | Portable package |
| `*-Setup.exe` | Windows | Inno Setup installer |
| `TelepresenceManager` | macOS | Binary for macOS |
| `*-macos.tar.gz` | macOS | Portable package |
| `*.dmg` | macOS | Disk image with .app bundle |
| `TelepresenceManager` | Linux | Binary for Linux |
| `*-linux.tar.gz` | Linux | Portable package |
| `*.deb` | Linux (Debian/Ubuntu) | Debian package |
### From Source
```bash
git clone https://github.com/hueidou/telepresence-manager.git
cd telepresence-manager
pip install -r requirements.txt
python main.py
```
### Build Locally
```bash
pip install pyinstaller
python scripts/build.py
```
The executable will be generated in `dist/`.
## Project Structure
```
telepresence-manager/
βββ main.py # Entry point, creates pywebview window
βββ VERSION # Version string
βββ requirements.txt # Python dependencies
βββ telepresence_manager.spec # PyInstaller build spec
βββ LICENSE # MIT License
βββ README.md # English documentation
βββ README.zh.md # Chinese documentation
βββ app/ # Python backend
β βββ __init__.py
β βββ api.py # pywebview JS API bridge
β βββ config.py # Configuration management (~/.kube/tp-config.json)
β βββ kubeconfig.py # Kubeconfig discovery & parsing
β βββ logger.py # File logging (~/.kube/tp-manager.log)
β βββ telepresence.py # Telepresence / kubectl CLI wrappers
β βββ updater.py # Version check & auto-update
βββ web/ # Frontend UI
β βββ index.html # Page structure
β βββ style.css # Dark theme styles
β βββ app.js # Frontend logic
β βββ i18n.js # Internationalization (zh/en)
βββ scripts/
β βββ build.py # Cross-platform build script
βββ installer/
β βββ setup.iss # Inno Setup installer script (Windows)
β βββ build-linux.sh # Linux packaging helper
β βββ build-macos.sh # macOS packaging helper
βββ .github/workflows/
βββ release.yml # CI/CD: multi-platform build & release
```
## How It Works
```
WebView window (web/)
β pywebview JS API bridge
Python backend (app/api.py)
ββ config.py Manages user settings (~/.kube/tp-config.json)
ββ kubeconfig.py Scans ~/.kube/, parses YAML configs
ββ telepresence.py Wraps telepresence / kubectl subprocess calls
ββ updater.py Checks GitHub Releases for updates
```
- Backend calls `telepresence` and `kubectl` CLI via `subprocess`
- All long-running operations execute in background threads (ThreadPoolExecutor)
- Tool paths are auto-searched on each platform (Homebrew, Snap, WinGet, etc.)
- Supports multi-document YAML, .txt files, and other config formats
- Auto-update downloads new binary and restarts via platform-appropriate script
- Logging to `~/.kube/telepresence-manager.log` with rotation (5 MB, 3 backups)
## Configuration
Settings are stored at `~/.kube/telepresence-manager.json`:
```json
{
"language": "auto",
"refreshInterval": 30
}
```
- **language**: `"auto"` (detect from system), `"zh"`, or `"en"`
- **refreshInterval**: Status auto-refresh interval in seconds (15/30/60/120)
Edit the file manually or use the β Settings panel in the app.
## Keyboard Shortcuts
| Shortcut | Action |
|----------|--------|
| `Ctrl+R` / `F5` | Scan kubeconfigs |
| `Ctrl+F` | Focus search box |
| `Esc` | Close panels / dialogs |
## License
[MIT](LICENSE)