{"id":50831441,"url":"https://github.com/xkmikze/lynx","last_synced_at":"2026-06-13T23:31:54.855Z","repository":{"id":361955358,"uuid":"1256583337","full_name":"xkmikze/lynx","owner":"xkmikze","description":"Open-source SSH tunnel VPN \u0026 proxy client - import npvt-ssh:// configs, SOCKS5 proxy, system-wide routing","archived":false,"fork":false,"pushed_at":"2026-06-02T00:12:16.000Z","size":100,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-06-02T02:09:01.893Z","etag":null,"topics":["npvt","npvt-ssh","open-source","privacy","proxy","socks5","ssh","tunnel","vpn","windows"],"latest_commit_sha":null,"homepage":"","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/xkmikze.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"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":null,"dco":null,"cla":null}},"created_at":"2026-06-01T23:12:38.000Z","updated_at":"2026-06-02T00:12:05.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/xkmikze/lynx","commit_stats":null,"previous_names":["xkmikze/lynx"],"tags_count":2,"template":false,"template_full_name":null,"purl":"pkg:github/xkmikze/lynx","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/xkmikze%2Flynx","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/xkmikze%2Flynx/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/xkmikze%2Flynx/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/xkmikze%2Flynx/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/xkmikze","download_url":"https://codeload.github.com/xkmikze/lynx/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/xkmikze%2Flynx/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34304629,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-13T02:00:06.617Z","response_time":62,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"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":["npvt","npvt-ssh","open-source","privacy","proxy","socks5","ssh","tunnel","vpn","windows"],"created_at":"2026-06-13T23:31:51.318Z","updated_at":"2026-06-13T23:31:54.849Z","avatar_url":"https://github.com/xkmikze.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# LYNX\n\n\u003e Open-source SSH tunnel VPN \u0026 Proxy client — Windows · macOS · Linux\n\nA lightweight, minimal desktop application for creating secure SOCKS5 proxy tunnels through any SSH server using the NPVT-SSH protocol. Built with Electron and ssh2.\n\n![License](https://img.shields.io/badge/license-MIT-white)\n![Platform](https://img.shields.io/badge/platform-Windows%20%7C%20macOS%20%7C%20Linux-white)\n![Electron](https://img.shields.io/badge/electron-28-47848F)\n![Version](https://img.shields.io/github/v/release/xkmikze/lynx)\n\n---\n\n## Screenshots\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"docs/screenshot-home.png\" width=\"280\" alt=\"Home Screen\" /\u003e\n  \u003cimg src=\"docs/screenshot-configs.png\" width=\"280\" alt=\"Configs Screen\" /\u003e\n\u003c/p\u003e\n\n---\n\n## Download\n\nGrab the latest release for your platform:\n\n| Platform | Architecture | File |\n|---|---|---|\n| Windows | x64 | `LYNX-1.0.3-windows-x64-setup.exe` |\n| macOS | x64 (Intel) | `LYNX-1.0.3-mac-x64.dmg` |\n| macOS | arm64 (M1/M2/M3/M4) | `LYNX-1.0.3-mac-arm64.dmg` |\n| Linux | x64 | `LYNX-1.0.3-linux-x64.AppImage` / `lynx-1.0.3-linux-x64.deb` |\n| Linux | arm64 (Pi 4/5) | `LYNX-1.0.3-linux-arm64.AppImage` / `lynx-1.0.3-linux-arm64.deb` |\n| Linux | armv7l (Pi 2/3) | `LYNX-1.0.3-linux-armv7l.AppImage` / `lynx-1.0.3-linux-armv7l.deb` |\n\n→ [Latest Release](https://github.com/xkmikze/lynx/releases/latest)\n\n---\n\n## Features\n\n- **NPVT-SSH Protocol** — Import configs via `npvt-ssh://` URI or paste JSON directly\n- **Manual SSH Config** — Add servers manually (host, port, user, password)\n- **SOCKS5 Proxy** — Exposes `127.0.0.1:10805` as a local SOCKS5 proxy\n- **VPN Mode** — System-wide proxy routing (Windows, macOS, Linux)\n- **TUN Mode** — Full system traffic routing via virtual network adapter (macOS \u0026 Linux)\n- **Real-time Log** — Live connection log with timestamps\n- **Ping Configs** — Real TCP latency for each server\n- **Speed Test** — Measures download speed through the active tunnel\n- **Auto-reconnect** — Automatically reconnects if connection drops\n- **Run in Background** — System tray support, stays alive when window is closed\n- **Dark UI** — Clean black/white minimal interface\n- **Auto Connect** — Optionally connect on app launch\n- **Encrypted Storage** — Credentials stored encrypted on disk\n\n---\n\n## Quick Start\n\n### Build from Source\n\n```bash\n# Requirements: Node.js 18+, npm\ngit clone https://github.com/xkmikze/lynx.git\ncd lynx\nnpm install\n\n# Development\nnpm run dev\n\n# Build for your platform\nnpm run build        # Windows\nnpm run build:mac    # macOS\nnpm run build:linux  # Linux\n```\n\n---\n\n## NPVT-SSH URI Format\n\nThe app accepts `npvt-ssh://` URIs — a base64-encoded JSON config:\n\n```\nnpvt-ssh://\u003cbase64(JSON)\u003e\n```\n\nExample JSON structure:\n```json\n{\n  \"sshConfigType\": \"SSH-Direct\",\n  \"remarks\": \"My Server\",\n  \"sshHost\": \"1.2.3.4\",\n  \"sshPort\": 22,\n  \"sshUsername\": \"user\",\n  \"sshPassword\": \"pass\",\n  \"dnsTTMode\": \"UDP\",\n  \"udpgwTransparentDNS\": true\n}\n```\n\n---\n\n## Proxy Usage\n\nOnce connected in **Proxy Mode**, configure your browser or system to use:\n\n| Setting | Value |\n|---|---|\n| Protocol | SOCKS5 |\n| Host | `127.0.0.1` |\n| Port | `10805` (configurable) |\n\nIn **Firefox**: Preferences → Network → Manual proxy → SOCKS Host: `127.0.0.1`, Port: `10805`, SOCKS v5.\n\nIn **Chrome**: Use an extension like [Proxy SwitchyOmega](https://chrome.google.com/webstore/detail/proxy-switchyomega/padekgcemlokbadohgkifijomclgjgif).\n\n---\n\n## TUN Mode\n\nTUN mode routes **all system traffic** through the tunnel — not just browser traffic.\n\n| Platform | Status | Requirements |\n|---|---|---|\n| macOS | ✅ Supported | Admin password on first use |\n| Linux | ✅ Supported | Root or `CAP_NET_ADMIN` |\n| Windows | 🔜 Coming Soon | Requires native driver (v1.1.0) |\n\n### Linux TUN setup\n```bash\n# Run with sudo\nsudo ./LYNX.AppImage\n\n# Or grant capability (no sudo needed after)\nsudo setcap cap_net_admin+ep LYNX.AppImage\n```\n\n---\n\n## Project Structure\n\n```\nlynx/\n├── src/\n│   ├── main/\n│   │   ├── main.js                  # Electron main process\n│   │   ├── tunnel-manager.js        # SSH + SOCKS5 tunnel\n│   │   ├── tun-manager.js           # TUN virtual adapter (macOS/Linux)\n│   │   ├── wintun-helper/           # Windows TUN helper (coming soon)\n│   │   ├── proxy-server.js          # Proxy lifecycle\n│   │   ├── ping-service.js          # TCP latency measurement\n│   │   └── speed-test.js            # Download speed test\n│   ├── renderer/\n│   │   ├── index.html               # UI layout\n│   │   ├── app.js                   # UI logic\n│   │   └── preload.js               # Secure IPC bridge\n│   └── shared/\n│       └── config-utils.js          # Config parsing \u0026 validation\n├── assets/\n│   ├── icons/                       # App icons\n│   └── wintun/                      # wintun.dll (user-provided)\n├── docs/                            # Screenshots\n├── package.json\n├── .github/\n│   └── workflows/\n│       └── build.yml                # CI/CD — builds all platforms\n└── README.md\n```\n\n---\n\n## Security\n\n- **Context Isolation** — Renderer has no access to Node.js APIs directly\n- **Preload bridge** — All IPC channels are allowlisted\n- **Encrypted store** — Credentials encrypted at rest via `electron-store`\n- **No telemetry** — Zero data sent anywhere except your SSH server\n- **Input validation** — All config fields validated before use\n- **Single instance** — Prevents multiple conflicting tunnels\n\n---\n\n## Roadmap\n\n- [x] Windows support\n- [x] macOS support\n- [x] Linux support\n- [x] NPVT-SSH URI import\n- [x] SOCKS5 proxy mode\n- [x] System-wide VPN proxy mode\n- [x] TUN mode (macOS \u0026 Linux)\n- [x] Real-time connection log\n- [x] Ping \u0026 speed test\n- [x] Auto-reconnect on disconnect\n- [x] System tray\n- [ ] TUN mode for Windows (v1.1.0)\n- [ ] SSH key authentication\n- [ ] Config groups / tags\n- [ ] DNS over HTTPS support\n- [ ] Dark/light theme toggle\n- [ ] Mobile companion app\n\n---\n\n## Contributing\n\nPull requests are welcome. For major changes, open an issue first.\n\n```bash\nnpm run lint   # Lint\nnpm run pack   # Test build without installer\n```\n\nSee [CONTRIBUTING.md](CONTRIBUTING.md) for guidelines.\n\n---\n\n## License\n\nMIT © [LYNX Contributors](https://github.com/xkmikze/lynx)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fxkmikze%2Flynx","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fxkmikze%2Flynx","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fxkmikze%2Flynx/lists"}