Skip to content

Repository files navigation

Proximeter

A macOS app (SwiftUI) to manage system proxy via SSH SOCKS tunnels. It reads your ~/.ssh/config, lets you add manual connections with optional saved credentials, and keeps the tunnel alive with automatic reconnect.

Features

  • SSH config – Lists hosts from ~/.ssh/config (Host, HostName, User, Port).
  • Manual connections – Add any host with name, host, port, user, and optional password.
  • Secure credentials – Passwords are stored in the system Keychain (Keychain Access).
  • SOCKS tunnel – Runs ssh -D 1080 -N with keep-alive options; reconnects automatically if the connection drops.
  • System proxy – Optionally sets macOS SOCKS proxy to 127.0.0.1:1080 when connected (via networksetup).
  • VPN awareness – Detects active VPN connections on macOS and shows a best-effort provider hint for supported apps.

Requirements

  • macOS 14.0+
  • Xcode 15+ (to build)
  • SSH config at ~/.ssh/config (optional; for “From SSH config” list)
  • Admin rights – Changing system proxy uses networksetup and may require administrator privileges. If proxy toggling fails, run the app with appropriate permissions or set the proxy manually in System Settings → Network → your service → Details → Proxies.

Build and run

  1. Open Proximeter.xcodeproj in Xcode.
  2. Select the Proximeter scheme and run (⌘R).

Or from the command line:

cd /Volumes/Projects/proximeter
xcodebuild -scheme Proximeter -configuration Debug build -derivedDataPath ./build
open build/Build/Products/Debug/Proximeter.app

If xcodebuild fails with a plug-in load error (for example IDESimulatorFoundation), run xcodebuild -runFirstLaunch once, then build again.

Usage

  1. From SSH config – Hosts from ~/.ssh/config appear in the first section. Use Connect to start a SOCKS tunnel (key-based auth only; no password from the app).
  2. Manual connections – Click Add connection…, fill host, user, port, and optionally password; check Save password in Keychain to store it. Then use Connect.
  3. System proxy – In Settings (Proximeter → Settings or ⌘,), enable Use system proxy when tunnel is connected and pick the Network service (e.g. Wi‑Fi). When you connect a tunnel, the app will set the SOCKS proxy to 127.0.0.1:1080; when you disconnect, it will turn the proxy off.
  4. Reconnect – If the SSH process exits (network drop, server restart, etc.), the app will try to reconnect after a short delay and keep the tunnel (and proxy) in use.
  5. VPN awareness – Proximeter shows whether a VPN is active and may identify Mullvad, Amnezia, Proton VPN, Windscribe, or Surfshark when macOS exposes enough detail. It does not start VPN connections.

Security

  • Passwords are stored with Keychain Services under the app’s bundle ID.
  • The app is not sandboxed so it can run ssh and networksetup. For a stricter setup you could sandbox and use a privileged helper for proxy changes only.

License

Use and modify as you like.

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages