Lantunnel
Lantunnel P2P 저지연·암호화·릴레이 폴백으로 포트포워딩 없이 LAN 원격 접근
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기Tiny, unofficial menu-bar Proton VPN client for macOS. Picks the fastest server that isn't overloaded and switches automatically.
저장소 README에서 가져옴
README 전체를 불러오는 중입니다.
README 전문 보기 ↗A tiny, menu-bar-only Proton VPN client for macOS that does one thing: put you on the fastest server that isn't overloaded, and move you to another one when it fills up or stops answering.
Unofficial. LeanVPN is an independent project. It is not made, endorsed or supported by Proton AG. "Proton" and "Proton VPN" are trademarks of Proton AG. You need your own Proton account. Use it at your own risk (see Disclaimer).
Status: alpha. It works daily on the author's Mac, but it has been tested on exactly one machine. See Status and testing before relying on it.
Website: https://zephyrsai.github.io/LeanVPN/
The official app is a 233 MB, full-featured client. My real problem was simpler: servers got congested and the connection kept dropping, so I was constantly switching servers by hand. LeanVPN picks a good server by itself, keeps checking it, and switches before you notice. It has no window, no settings, no country list. Just a shield in the menu bar.
Measured on an M-series MacBook Pro, macOS 26 (memory = Activity Monitor's "Memory" column):
| LeanVPN | Proton VPN 6.5.1 | |
|---|---|---|
| On disk | 6.1 MB (app 124 KB + helper 6 MB) | 233 MB |
| Menu-bar app memory | 11–15 MB | 168 MB |
| Background helper | Only while connected; exits 30 s after you disconnect | Always running |
| Idle CPU | ~0% (one cheap counter check every 10 s) | Noticeable over a day |
| Picking a server | ~0.3 s (all candidates probed in parallel) | n/a |
xcode-select --installbrew install goNo Xcode, no Apple developer account, no App Store.
git clone https://github.com/ZephyrSai/LeanVPN.git
cd LeanVPN
make install
make install builds everything (about a minute the first time), then asks for your admin
password once. That's needed to install the background helper that creates the VPN
interface. The installer:
LeanVPN.app to /Applications and starts it (it also starts at login);/Library/PrivilegedHelperTools/com.leanvpn.helper and registers it with
launchd (/Library/LaunchDaemons/com.leanvpn.helper.plist). launchd only starts it when the app
asks, and it quits again when the VPN is off.Quit the official Proton VPN app first. Two VPNs at once fight over routes and DNS.
LeanVPN never sees your password. It uses Proton's "enter a code on the web" sign-in, the same flow the Proton VPN Apple TV app uses.
account.protonvpn.com/appletv and the 8-character code is already on
your clipboard. Sign in to Proton there if asked, paste the code and approve.If that page doesn't load (some networks block protonvpn.com), open the same address on your
phone over mobile data and type the code shown in the LeanVPN menu. The code is valid for about
10 minutes.
| Icon | Meaning |
|---|---|
| Shield with a check | Connected. Hover for server, city, load and latency. |
| Half-filled shield | Connecting or switching servers |
Shield with ! | Waiting for network, or the last attempt failed (it retries by itself) |
| Plain shield | Disconnected |
| Shield with a slash | Signed out |
The menu only ever shows what makes sense right now: Connect, Disconnect, Switch Server (jump to the next-best server), Retry Now, Sign Out, and Quit (which also turns the VPN off).
If you were connected when you shut down, LeanVPN reconnects after a restart.
latency_ms + 300 × (load/100)² wins. Load hardly matters when it's low,
but it dominates as a server nears saturation. A 40 ms server at 90% load loses to a 90 ms
server at 30% load.Every 10 seconds the helper reads two counters from WireGuard. That costs almost nothing.
/Library/Application Support/LeanVPN/, readable by root only.vpn-api.proton.me and the VPN servers. There's no telemetry, crash
reporting, analytics or update check.Live logs:
/usr/bin/log stream --predicate 'subsystem == "com.leanvpn"' --level info
Past hour (connects, switches, failures):
/usr/bin/log show --last 1h --predicate 'subsystem == "com.leanvpn"'
| Problem | Fix |
|---|---|
| Menu says "Helper not installed" | Run make install again |
| Sign-in page is blank | Your network blocks protonvpn.com. Open the page on your phone over mobile data. |
| "Sign-in failed" | Try Sign In… again. If it keeps failing, check the logs. |
| No internet after a crash or force-quit | Reconnect, or run sudo /Library/PrivilegedHelperTools/com.leanvpn.helper --cleanup to restore your DNS |
| Keeps switching servers | Look in the logs for leaving … lines, which give the reason each time |
| Conflicts with another VPN | Disconnect the other VPN (the official Proton app, corporate VPNs) first |
make uninstall
This disconnects, restores your DNS, and removes the app, the helper, the launchd entry and the
saved sign-in. Run it from the cloned folder (or run sudo Support/uninstall.sh).
Alpha. What has actually been verified, on one Apple silicon Mac with a Proton Free account:
Not yet tested enough: long sessions (days), sleep/wake cycles, switching between Wi-Fi,
Ethernet and phone tethering mid-session, captive portals, certificate and token renewal over
long sessions, paid plans, macOS 13–15, and other people's Macs and networks. Bug reports are
very welcome, especially with the output of the /usr/bin/log show command above.
Kill switch, country or server picker, Secure Core, NetShield, split tunneling, port forwarding, profiles, notifications, settings, auto-update, Intel builds. Keeping it small is the point.
| Path | What |
|---|---|
Sources/App/main.swift | The menu-bar app (AppKit, about 190 lines) |
Sources/Helper/Engine.swift | Session, server choice, health checks and failover |
Sources/Helper/Tunnel.swift | utun interface, routes, DNS, network watcher |
Sources/Helper/Servers.swift | Server list parsing, shortlist and latency probe |
Sources/Helper/API.swift | The handful of Proton API calls |
Sources/Helper/bridge.h | Small C helpers: utun socket, TCP and DNS probes |
wg/ | wireguard-go (vendored) built as a static library, plus the HTTPS client and its tests |
Support/ | Installer, uninstaller, launchd plist, Info.plist |
docs/ | The website (GitHub Pages) |
Build without installing: make (outputs go to build/). Run the tests with make test.
LeanVPN is provided as is, without warranty of any kind. It is not affiliated with Proton AG. It uses Proton's API the way Proton's own apps do, including the Apple TV app's identifier for sign-in. Proton could change or block that at any time, and using an unofficial client may be against Proton's terms of service. You are responsible for how you use it.
LeanVPN is free software under the GNU General Public License v3.0.
api-apple.go (MIT). The vendored modules keep their own licenses
under wg/vendor/.