mrkeyoor.com_
Wed 30 Sept 20:35 UTC
Dev Toolsevaluationupdated 26 Aug 2026

wgcf review

wgcf is an unofficial command-line client that registers a Cloudflare WARP account and turns it into a standard WireGuard configuration. It lets servers, routers, and other headless systems use WARP without Cloudflare's official app.

+19stars / 7d
Verdict

Our wgcf run installed 63 packages in 35 seconds, built in 39 seconds, and passed all 3 tests in 11 seconds. That clean result makes it an easy trial for a headless system that specifically needs a WARP-backed WireGuard profile. Use Cloudflare's client for ordinary desktops or any deployment where vendor support, dependable IPv6, and managed routing outweigh profile portability.

We ran it

Lab card: what happened when we ran wgcfScreenshot of wgcf (github.com/ViRb3/wgcf)
Install✓ · 35s63 packages
Build✓ · 39s
Tests✓ · 11s3 passed · 0 failed of 3 (go test)
Repo97 files~11,259 lines of source · 0.5 MB · 2 CI workflows · Dockerfile

Answers from our run

Does wgcf build from source?

Dependencies installed in 35 seconds (63 packages), and the build succeeded in 39 seconds. We cloned commit b0ffa96 into a clean Debian container with 3 CPUs and no project-specific setup.

Do wgcf's tests pass?

Yes: 3 of 3 passed when we ran the project's own test command (go test). Some failures need services or credentials a bare container does not have.

Who should not use wgcf?

Anyone who requires vendor support or a stable public API: the README calls wgcf unofficial, and v2.2.32 had to restore a TLS fingerprint after Cloudflare returned HTTP 429.

What are the alternatives to wgcf?

Cloudflare WARP client, wireguard-tools, warp-docker. Our wgcf run installed 63 packages in 35 seconds, built in 39 seconds, and passed all 3 tests in 11 seconds.

Setup4/535-second install; tunnel setup still belongs to the operator
Docs3/5Clear commands and WARP+ caveats, sparse network troubleshooting
Community4/58,641 stars with current user reports and pull request activity
Maturity4/5Six years old and focused, though tied to an unofficial interface

Who it’s for

Linux and server operators who want a normal WireGuard profile for Cloudflare WARP.
Router and container users who cannot run Cloudflare's desktop or mobile client.
WARP+ subscribers who understand the five-device limit and the fresh-account workaround.
Network operators prepared to test routes, DNS, MTU, and real HTTPS traffic.

Who it’s NOT for

Anyone who requires vendor support or a stable public API: the README calls wgcf unofficial, and v2.2.32 had to restore a TLS fingerprint after Cloudflare returned HTTP 429.
Users seeking a complete VPN app with connection controls and route management: wgcf generates a profile, then points readers to WireGuard's setup guide.
Networks that require IPv6 from every new account: open issue #601 reports that new profiles are IPv4-only while older profiles remain dual stack.
WARP+ users unwilling to create a fresh account before binding a license: the README says an account that has already connected may stay on warp=on.
Operators who will accept a handshake as proof of service: open issue #619 reports working handshakes, DNS, and ping while Google and GitHub HTTPS timed out.

Setup reality

Our sandbox installed 63 Go packages in 35 seconds. The build succeeded in 39 seconds, and all 3 tests passed in 11 seconds. The checkout at commit b0ffa96 contained 97 files, about 11,259 source lines, and occupied 0.5 MB.

Using the binary still requires Cloudflare registration and a separate WireGuard client. Registration writes account credentials to wgcf-account.toml; generation writes wgcf-profile.conf. WARP+ needs a subscription license key from the official 1.1.1.1 app and allows at most 5 linked devices.

Bringing up the profile needs administrator access plus working routes, DNS, and firewall rules. The generated MTU is 1280. wgcf is unofficial, so Cloudflare can change enrollment behavior independently of this code, and a successful generation step does not confirm IPv6 or end-to-end HTTPS traffic.

Five commands end with a WireGuard profile

The README assigns wgcf 5 jobs: registration, license updates, profile generation, account status, and WARP trace output. Registration saves account data in wgcf-account.toml, while generation writes wgcf-profile.conf for ordinary WireGuard software. This is useful on a router, server, container host, or another machine where the official 1.1.1.1 application is unavailable.

wgcf does not manage a persistent connection, firewall policy, route exclusions, or a kill switch. After profile generation, the README points to WireGuard's own quick start. The output is portable and easy to inspect, which suits headless systems. Desktop users who want one supported application should use Cloudflare's client.

Two commands still leave routing and DNS to you

The 2-command path is short: download a release, run wgcf register, then run wgcf generate. The profile uses an MTU of 1280, matching the value cited for Cloudflare's Android client. wgcf also has status for account details and trace for checking whether connected traffic reports warp=on or warp=plus. Those commands make enrollment easy to inspect.

Operating the tunnel calls for more work than the 2-command example shows. WireGuard needs administrator access and correct routes, DNS, firewall behavior, and service startup on the target host. The generated account and profile contain credentials, so both files need restricted permissions. Our lab could build and test the program without secrets, but that result does not prove that a given network will carry all required traffic.

What happened when we ran it

Our sandbox installed 63 Go packages in 35 seconds at commit b0ffa96. We used an unprivileged golang:1.24-bookworm container with 3 CPUs and 8 GB of RAM. The build completed in 39 seconds. The test step took 11 seconds and reported 3 passed with 0 failures. Nothing in those steps exposed a missing package, compiler failure, or broken unit test.

The repository itself was compact: 97 files, about 11,259 lines of source, and a 0.5 MB checkout. It included 2 CI workflow files and a Dockerfile, although it had no separate tests directory. Those are codebase facts rather than tunnel benchmarks. We did not measure bandwidth or latency, and the supplied lab record contains no claim about live WARP registration.

WARP+ binding can require a fresh account

WARP+ support comes with several conditions. The README accepts subscriptions bought directly through the official 1.1.1.1 app and says other keys are unsupported. One subscription can have at most 5 linked devices. Users copy the license key from the app, apply it with wgcf update, and generate a new profile. Device removal remains an account-management task in Cloudflare's app.

The awkward part is issue #85, which the README treats as a Cloudflare-side bug. An account that has already connected to WARP may continue to show warp=on after a valid WARP+ key is bound. The documented workaround starts with a fresh account and binds the key before any connection. That sequence is manageable for one machine, but it deserves an acceptance check before anyone repeats it across 5 device slots.

Issue 601 puts IPv6 and issue 619 puts HTTPS on the test list

Issue #601 reports that newly registered profiles were IPv4-only while older profiles still carried IPv4 and IPv6 on the same client and network. The reporter tested multiple keys and did not identify a local routing difference. It is one unresolved report, so it does not establish universal behavior. It does establish a sensible purchasing rule: if dual stack is required, verify a newly generated profile before deployment.

Issue #619 describes a different failure on Linux: WireGuard handshakes, DNS, ping, and some Cloudflare-hosted HTTPS worked, while requests to Google and GitHub timed out after 10 seconds. The reporter tried IPv4, multiple endpoints, two clients, and MTU values of 1280 and 1420. That report remains open. A production check should cover several real destinations and transfers, not stop at wg show or wgcf trace.

July's compatibility fix and August's push show maintenance

Release v2.2.32 shipped on July 23, 2026. It restored an older TLS fingerprint after issue #613 recorded HTTP 429 responses when version 2.2.31 created several profiles in succession. The fix and closed report show the maintainer reacting to a service compatibility change. They also show the cost of relying on enrollment behavior controlled outside the repository.

The last push was August 24, 2026, and recent activity included user reports plus dependency and build-action pull requests. GitHub listed 8,641 stars and 29 combined issues and pull requests when fetched. That is active maintenance around a six-year-old, MIT-licensed Go project. wgcf remains a good narrow utility when profile portability matters, provided the resulting tunnel is tested as carefully as any other network path.

Alternatives

ProjectWhat it isPick it when
Cloudflare WARP clientCloudflare's supported app manages enrollment, connections, and platform integration.pick this instead when vendor support and automatic network setup matter more than a portable WireGuard profile.
wireguard-toolsThe standard command-line tools for creating and operating WireGuard tunnels.pick this instead when you control the VPN server or already have a provider-issued profile and do not need WARP registration.
warp-dockerA container-focused way to run Cloudflare WARP for other workloads.pick this instead when Docker traffic is the target and you prefer a packaged container setup over a host WireGuard profile.

What people are saying

  1. [github-trending] ViRb3/wgcf

Sources

  1. wgcf repository and README
  2. wgcf v2.2.32 release
  3. Linux HTTPS timeout issue #619
  4. New registration IPv6 issue #601
  5. WARP+ account binding issue #85
  6. Registration rate-limit regression issue #613

More dev tools reviews

gander · lipgloss · roundhouse · GhostTrack · Codex-Dream-Skin · TokenTracker · the whole board →