Repository navigation
Releases: huuhoa143/proxy-farm
Release list
v0.2.0
Proxy Farm desktop release v0.2.0
Changes since v0.1.1
- chore: bump version to 0.2.0
- Merge pull request #12: changelog: cut 0.2.0
- changelog: cut 0.2.0
- Merge pull request #5: Windows support + provider verification (HMA & ZoogVPN live, cross-machine audited)
- fix(hma-windows): locale-proof task start, throttle refresh, read the task's result
- Merge remote-tracking branch 'origin/main' into feat/windows-support
- Merge pull request #11: Landing page for proxyfarm.lingoreup.com
- chore(site): serve proxyfarm.lingoreup.com
- docs(site): refresh PR screenshots
- fix(site): frame each step on the panel it names
- fix(site): provider-coloured cable band on every switchboard port
- docs(site): review screenshots for the PR
- docs: DESIGN.md for the landing page's visual system
- Export: start a saved CSV with a UTF-8 BOM; path-neutral export test
- Merge remote-tracking branch 'origin/main' into feat/windows-support
- feat(site): ship the demo video with vi/en captions
- fix(site): apply finish review and Lighthouse findings
- Merge pull request #10: Port filters, Check all and file export
- docs(site): dev, build, deploy and go-live steps
- feat(site): SEO assets: OG cards, favicons, robots, headers
- feat(site): bilingual landing page with switchboard hero
- build(site): scaffold the Astro static site and Workers assets config
- docs: product record and direction brief for the landing page
- Keep every platform's update feed in one release, and record the Windows update test
- fix(main-screen): Copy all waits for the export, Check all re-reads each port at its turn
- Address the PR #5 review comments and the merged providers' Windows notes
- fix(main-screen): keep checks across tab switches, check in screen order, no wrap in export
- fix(i18n): spell xóa with the accent on the o, like khóa
- docs: filters, Check all and file export
- feat(main-screen): filter bar, Check all and a richer Export
- feat(renderer): port filter, check bookkeeping and a cancellable queue
- feat(export): CSV format, port status buckets and save-to-file IPC
- Merge origin/main into feat/windows-support
- Merge pull request #9: ExpressVPN provider
- fix(file): read mssfix and fragment as OpenVPN 2.6 does
- fix(file): guess an ExpressVPN download's country from its catalog
- Document the ExpressVPN provider, credential guides and client-cert .ovpn import
- test(exit-ip): an exit both geo services refuse still reports its IP
- Add an ExpressVPN card and step-by-step credential guides
- Allow the provider account pages the credential guides open
- Register an ExpressVPN provider
- feat(file): ask for the username and password an .ovpn signs in with
- feat(file): import .ovpn profiles that use a client certificate
- Merge pull request #8: NordVPN provider
- fix(accounts): re-adding a key repairs its legacy-labelled account instead of adding a twin
- test: tolerate the pool's background write when cleaning up
- Document NordVPN exit sessions, virtual locations and geolocation
- Model how each provider's exit IP relates to its server
- Tag exits with the location's country, not the IP database's
- Use Vietnamese names for cities that have one
- Point the port-limit tooltip at the Providers screen
- Spell "khóa" one way throughout the Vietnamese UI
- Label key accounts by their public key, not the private one
- Drop an engine's pid from the registry when it exits
- Document the NordVPN provider and its live evidence
- Add a NordVPN card to onboarding
- Register a NordVPN (NordLynx) provider
- Add NordVPN server list and access-token exchange
- Fix the PR #5 review findings in HMA support and host-VPN detection
- docs: record the ZoogVPN and Surfshark live results on Windows
- Accept any local drive in the task's self-removal guard
- Address lower-severity review notes
- Harden HMA support against a standard user influencing the SYSTEM task
- docs: Windows support, HMA support on Windows and the spike results
- Double typographic quotes in PowerShell string literals
- Make the Windows release script run and smoke-test the build
- Run the packaged-app e2e suite on Windows and fix its drift
- Quit a running instance with
Proxy Farm --quit - Support HMA on Windows
- Detect another VPN on Windows
- Run the engine tests on Windows
- Build the app on Windows from a fresh clone
Bundles sing-box sing-box-1.14.2 (SagerNet/sing-box, GPLv3). Its
complete corresponding source is attached to this release as required by
GPLv3 §6: sing-box-1.14.2-src.tar.gz.
Proxy Farm 0.1.1
ZoogVPN fixes found by a live end-to-end check of 0.1.0, verified on the real service before release.
Download
| Mac | File |
|---|---|
| Apple Silicon (M1 and later) | ProxyFarm-darwin-arm64-0.1.1.dmg |
| Intel | ProxyFarm-darwin-x64-0.1.1.dmg |
macOS 12 or later; signed and notarized by Apple. Installed 0.1.0 apps update themselves (Settings → About & help).
Changed
- ZoogVPN: a refused sign-in is now told apart from a server outside your plan by a
live check on a ZoogVPN free server, instead of being guessed from how many servers
refused it (0.1.0 could tell a new account on a restrictive plan that its password was
wrong). "Check" makes one short test connection before the account is saved: a wrong
email or password is rejected with that message, and if no free server answers the
account is added as unverified. A port refused by a server checks the login the same
way (at most once per 10 minutes per account) and then either moves on as a plan
refusal or stops with "wrong email or password". A location where every server
refuses a working login says so: "Your ZoogVPN plan doesn't include this location". - The location picker marks a location whose every server refused every account of its
provider as "Not in your plan", with the reason as a tooltip and its quantity stepper
disabled; its "+ Add port" says the same. The Change IP menu tags free-tier servers. - A location that covers a whole country (most ZoogVPN locations) is named after the
country in the UI language: "Đức", not "Germany" or "Germany Đức", in the picker, the
group header, the port labels and the Change IP menu heading. - With no free server left, the Change IP menu no longer promises to try "another city
in the same country" when the provider has no other location there (ZoogVPN Japan);
it says the port keeps its server.
Fixed
- Two engines starting at the same moment (a sign-in check while ports start, or
several ports at once) could be given the same control port, or the same proxy port,
and the second sing-box then exited at once on its bind. Ports picked by a start in
progress now count as taken for every other start, and a start on a port another
engine is starting on fails as "port in use" before anything is spawned. Two sign-in
checks running at once no longer pick the same local port either. - The Change IP menu could list a server as free and untried when it was only another
hostname of a machine that had already refused the account (fr4next to a refused
de7), because that hostname had not been looked up yet. Opening the menu now looks
up the location's hostnames first (in parallel, each once, for at most 2 s), so such a
server shows as refused or taken before you pick it. Picking it never cost a
connection attempt; it only looked available until then. - The location picker showed a location that had just turned out not to be in the plan
as "No free server" until the app was restarted: it re-read the locations only when a
port changed servers. The app now tells the window whenever a server is marked
refused, dead or working, and the picker and the group headers update within a
moment. A location group outside the plan now says "Not in your plan" in its header
instead of a free-server count. - A Change IP to a server outside the plan left the port failed on that server ("not in
your plan, not retrying") and gave up the server it had been working on, although
other servers of the location were free. The refused server is still remembered, but
the port now goes back to the server it was on before, or, if that one is no longer
usable, to the next free usable server of the location. The row says which server
refused and where the port went, and keeps saying it until the next Change IP on it. It fails for good only when no usable server is
left. Any other refusal of a port that was online follows the same rule, during a
Change IP too, and a login that a server accepted moments ago is no longer re-checked
with an extra connection. - A port that failed for good (sign-in rejected, location not in the plan, WireGuard key
not answered) kept starting a new engine about every 41 s against a server that had
just refused it, while the row said it would not retry. Such a port now stops its
engine and stays failed until you start it, change its IP or enter new credentials;
app start, wake from sleep, auto-rotate and the webhook leave it alone. - The retry back-off restarted at 30 s on every attempt instead of growing to 30 min.
- Server marks (refused, dead, last OK) now belong to the machine, keyed by its resolved
IP, so they apply to every hostname that points at it: afterde7.webunlim.comrefused
an account,fr4.webunlim.com(the same server) is skipped without another handshake.
Marks saved by 0.1.0 under hostnames move onto the IP the first time each host
resolves, and the hostname-to-IP map is saved with them.
Bundles sing-box 1.14.2 (SagerNet/sing-box, GPL-3.0-or-later) as a separate executable; its complete corresponding source is attached as sing-box-1.14.2-src.tar.gz. See THIRD_PARTY_NOTICES.md.
Proxy Farm 0.1.0
First release of the Proxy Farm desktop app for macOS: turn your own VPN subscription into local SOCKS5/HTTP proxy ports, each pinned to one server with a fixed exit IP. No Docker, no admin rights.
Download
| Mac | File |
|---|---|
| Apple Silicon (M1 and later) | ProxyFarm-darwin-arm64-0.1.0.dmg |
| Intel | ProxyFarm-darwin-x64-0.1.0.dmg |
Requires macOS 12 or later. Both builds are signed and notarized by Apple. Windows builds will follow in a later release.
It replaces the Docker edition (v1, archived at the
v1-docker tag) and does not import v1 data.
Added
- Desktop app for macOS 12+ (Apple silicon and Intel), built with Electron. The
Windows x64 build is code-complete but not released yet. No Docker, VM, Python,
admin rights or terminal needed. - One unmodified sing-box 1.14.2 process per proxy port, in userspace mode (no TUN, no
driver, no routing changes). Configs are passed on stdin and never written to disk.
Each port's only route out is its tunnel; DNS goes over DoH through the tunnel. - Providers: HMA (OpenVPN with the device credentials of the locally installed HMA app;
macOS only for now), ZoogVPN (OpenVPN, email and password), Surfshark (WireGuard
private key) and imported OpenVPN.ovpn/ WireGuard.conffiles. - Server pools: each location is a pool of servers and each port pins one server, so
every port has its own fixed exit IP and a location can hold several ports. - Change IP moves a port to another free server of its location (or, if none is
left, a location in the same country, with a note on the row) and confirms the exit IP
changed. A server can be picked by hand from the Change IP menu. Auto-rotate every N
minutes. - Per-server failover with sticky IPs: a dropped port retries its own server; it moves
only when the server refuses the account (remembered 7 days) or fails a fresh
reconnect (remembered 2 hours). Drops shared by several ports of a provider are treated
as an outage, not as dead servers. - Surfshark server pools discovered in the app by sampling cluster DNS (system resolver
anddns.google), refreshed at most every 12 hours. - Health checks through each tunnel, exit-IP and country checks, back-off from 30 s to
30 min, staggered starts. - Multiple accounts per provider, per-provider port limits, bulk actions, export in four
formats, per-port test and speed test, per-port logs with secrets redacted. - Optional rotate webhook (off by default) with a Bearer key and Host allowlist.
- Proxies listen on
127.0.0.1; LAN sharing (0.0.0.0) requires a proxy username and
password. - Secrets encrypted with Electron
safeStorage(macOS Keychain, Windows DPAPI). - Tray icon, launch at login, keep-awake while ports are on, stop on sleep and restart on
wake, single instance. - In-app updates from GitHub Releases (electron-updater), with automatic checks that can
be turned off. - English and Vietnamese UI, light and dark theme.
- Project documentation: English and Vietnamese README, privacy policy, security and
support policies, contributing guide, code of conduct, third-party notices.
Removed
- Docker, the web UI on port 8090, the CLI and IKEv2 support. They remain available on
thev1-dockertag.
Before you use it
Use your own VPN account on your own machine and follow your provider's terms. Providers may suspend accounts that share connections or reconnect aggressively. See DISCLAIMER.md and PRIVACY.md. Questions go to Discussions; bugs to Issues.
Bundles sing-box 1.14.2 (SagerNet/sing-box, GPL-3.0-or-later) as a separate executable. Its complete corresponding source is attached to this release as sing-box-1.14.2-src.tar.gz. See THIRD_PARTY_NOTICES.md.