NEW — Free VPN for your terminal

A real VPN.
For your terminal.

Scriptable. Agent-friendly. Headless-ready. Single-binary install, JSON output everywhere, runs as a proper system daemon. macOS, Linux amd64 and Linux arm64.

$ curl -fsSL https://freevpnapp.org/install.sh | sh

Zero-bloat

Single binary

JSON output

Built for scripts

Agent-ready

SKILL.md included

SUPPORTED PLATFORMS

Runs where your work already lives

Native single-binary builds for every platform a serious developer actually uses. No Electron, no bundled runtime, no surprises.

macOS
universal • intel + apple silicon

macOS 12 Monterey and later. Installs a launchd service and registers the TUN device automatically.

Linux x86_64
amd64 / x86_64

Ubuntu 22.04+, Debian 12+, Fedora 38+, Arch, and anything with glibc 2.35 or newer.

Linux ARM64
aarch64

Raspberry Pi 4/5, Oracle Cloud ARM, AWS Graviton, Apple Silicon VMs under Parallels or UTM.

Headless servers
systemd • launchd

Runs as a proper daemon on both OSes. Bring-up survives reboots. No GUI, no tray icon, no nonsense.

INSTALL

Two lines and you're connected

The installer detects your OS and CPU architecture, downloads the right tarball, verifies its SHA-256 checksum, and installs the system service. No curl | sudo bash bait-and-switch — read the script before you run it.

$ curl -fsSL https://freevpnapp.org/install.sh | sh

Prefer to read it first? View install.sh  ·  then re-run the command above.

$ # pick the one for your machine curl -fsSL -o freevpn.tgz https://freevpnapp.org/downloads/LATEST/freevpn-linux-amd64.tar.gz tar xzf freevpn.tgz && cd freevpn-* && sudo ./install.sh

Tarballs: /downloads — swap linux-amd64 for linux-arm64 or darwin as needed.

$ curl -fsSL https://freevpnapp.org/install.sh | sh # grants the launchd service once; survives reboots sudo launchctl load /Library/LaunchDaemons/org.freevpn.freevpnd.plist

On Apple Silicon the same installer picks up arm64 automatically. You'll need to grant the system network extension once in System Settings → Privacy & Security.

$ curl -fsSL https://freevpnapp.org/install.sh | sh # daemon auto-starts via systemd systemctl status freevpnd # first run — unlock the device freevpn login

Requires /dev/net/tun (present on every mainstream distro) and iproute2. Safe to run on boxes you SSH into — active SSH sessions are auto-pinned to the original gateway so they don't drop when the tunnel comes up.

FEATURES

Built the way a CLI should work

We wrote this for ourselves first — the engineers, the ops folks, the agents, the indie-hackers. Every feature is here because not having it would have annoyed us.

Instant connect

One command. Single-digit-ms setup. The daemon is already warm; freevpn up just flips the switch.

JSON everywhere

Every command has a --json mode. Parse it, pipe it, feed it to jq, hand it to an agent — it's all structured.

Agent-native

Ships with a SKILL.md file your AI agent can read. Claude, Cursor, Codex — they all know how to drive it.

Zero-bloat

No Electron, no Node, no Python runtime. A single ~15 MB Go binary, statically linked against a hand-rolled C core.

SSH-safe by default

Detects active SSH sessions and pins their peer IPs via the original gateway. freevpn up on a remote box won't drop you.

Proper daemon

systemd on Linux, launchd on macOS. Survives reboots. Logs to the journal like a proper citizen.

1000+ servers

The same global network as the Free VPN mobile apps — now pickable by slug: us-east, eu-zurich, sg

No account

No email. No password. A device ID is your identity; your Stripe subscription is your license. Lose the box? Recover by email.

freevpn doctor

One command runs a full self-diagnosis: DNS, routing, controller reachability, license state. Copy-paste the output to support.

HOW IT WORKS

Three commands. That's the whole product.

Install once. Unlock the device once. Then it's up and down from then on.

step 1 · freevpn login
$ freevpn login
preparing checkout…
open this URL in your browser:
https://checkout.stripe.com/pay/cs_xxxx
or scan the QR code above.
 
waiting for payment… (22s)
✓ subscription active
✓ license written to /var/lib/freevpn
$
step 2 · freevpn up + status
$ freevpn up --region eu-zurich
connecting…
✓ tunnel up
  exit: zurich, ch · rtt 18ms
 
$ freevpn status
state connected
region eu-zurich
public ip 85.195.107.150
license paid · renews 2027-04-21
device id CFV-aa1d-1769-…
 
$ freevpn down
✓ tunnel down, routes restored
$
SEE IT IN ACTION

Actual screenshots, actual terminals

No marketing mockups. Every image here is a real terminal on a real machine running the real build.

Terminal: freevpn login showing QR code + checkout URL
freevpn login Inline QR code + checkout URL. Works over SSH — scan from your phone, pay in the browser, done.
Terminal: freevpn up connecting to us-east
freevpn up Braille-dot spinner while the tunnel comes up, final ✓ line when the handshake lands. Sub-second on a warm daemon.
Terminal: freevpn status --json piped to jq
freevpn status --json | jq Full state as structured JSON. Feed it to a script, a dashboard, or an agent — no parsing guesswork.
BUILT FOR

If any of this sounds like your day

AI agents & coding copilots

Ship SKILL.md to Claude, Cursor, or Codex and they can drive the tunnel themselves — connect, switch region, verify IP, disconnect.

Headless servers & CI runners

Pin a GitHub Actions runner, a VPS scraper, or a staging box behind a specific exit. systemd unit ships in the box.

Power users on macOS & Linux

You live in your terminal. Your VPN should too. Bind it to a hotkey, put a region in your shell prompt, pipe --json into jq.

Journalists, researchers, remote workers

Privacy at the command line. Switch exits per task. Never see a login screen. Works identically on a MacBook and a Raspberry Pi.

PRICING

Fair, no tricks

The CLI is a paid product — you're supporting independent privacy software, not a data broker. Prices in USD. Cancel from the Stripe billing portal any time, the very same day.

Weekly
$9.89/wk
Try it out. Cancel in one click from the billing portal.
Install & try
Annual
$119/yr
Save ~60% vs. monthly. One charge a year, nothing else to think about.
Install & try

Payments handled by Stripe  ·  Cancel anytime  ·  No email required for billing

FAQ

Common questions

Is the CLI free, or do I need a subscription?
The CLI is a paid product. You can install the binary for free and run freevpn doctor, freevpn status, and browse regions — but to bring a tunnel up with freevpn up you need an active subscription. Pricing is right above this FAQ.
How is this different from the mobile / Mac app?
Same underlying network and server fleet. Different UX. The mobile apps are free and ad-supported, for tap-and-go users. The CLI is built for people who live in the terminal: scriptable, JSON-first, agent-friendly, no tray icon, no pop-ups.
What CPU architectures and distros are supported?
macOS 12+ (Intel + Apple Silicon), Linux x86_64 and ARM64. Any distro with glibc 2.35 or newer works — tested on Ubuntu 22.04/24.04, Debian 12, Fedora 38+, Arch, Raspberry Pi OS, and Oracle Cloud ARM.
Is it safe to run freevpn up on a server I'm SSHed into?
Yes. On Linux the CLI detects active SSH sessions by parsing /proc/net/tcp and pins each remote peer IP via the original default gateway before re-routing the default route through the tunnel. Your SSH session won't drop.
How do I give the CLI to my AI agent?
Run freevpn skill to print the SKILL.md to stdout — or drop a copy of it into your agent's skills folder. It documents every command, flag, JSON schema and common recipe the agent needs.
I lost my laptop / wiped the disk. Can I recover my subscription?
Yes. On the new machine, run freevpn login --recover and enter your billing email. We'll mail a 6-digit code; typing it in transfers your Stripe subscription to the new device ID. Old device loses access on its next refresh.
What data do you collect?
No email, no password, no account. We see a device ID (generated locally and never tied to you), your Stripe customer ID (from payment), and standard VPN flow metadata. No browsing logs, no DNS logs, no traffic inspection — the tunnel is encrypted end-to-end with AES-256-GCM.
Open source?
The CLI wraps a closed-source VPN core (the same one used by the mobile apps, hand-rolled C, been in the field for 10+ years). The Go wrapper, the installer, and the SKILL.md will be opened up over time — follow the blog for announcements.

Go on, try it.

One command away. Works on the machine you're reading this on.

$ curl -fsSL https://freevpnapp.org/install.sh | sh