mrkeyoor.com_
Tue 01 Sept 17:42 UTC
Self-Hostedevaluationupdated 26 Aug 2026

warpgate review

Warpgate is a self-hosted access proxy for SSH, HTTPS, Kubernetes, MySQL, PostgreSQL, RDP, and VNC. Users connect with ordinary clients or a browser, while administrators assign specific targets, require TOTP or OpenID Connect, and record sessions from one control point.

+40stars / 7d
Verdict

Our Warpgate checkout installed 27 frontend packages with 0 npm advisories, but it exposed no npm build or test target and our run never compiled the Rust service. Shortlist it when direct-client access, target-level permissions, and session recording fit a modest self-hosted deployment. Demand a source build, protocol-by-protocol test, restore drill, and immediate v0.28.4-or-newer security patch before placing it in a DMZ.

We ran it

Lab card: what happened when we ran warpgateScreenshot of warpgate (warpgate.null.page)
Install✓ · 15s27 packages · 14 MB
Buildn/ano build script
Testsn/ano test script
Known vulns00 critical · 0 high · 0 moderate · 0 low (npm audit)
Repo791 files~104,867 lines of source · 5 MB · 14 CI workflows · tests dir

Answers from our run

Does warpgate build from source?

Dependencies installed in 15 seconds (27 packages), and the project has no separate build step. We cloned commit c4b19cb into a clean Debian container with 3 CPUs and no project-specific setup.

Does warpgate have tests you can run?

Not through a standard command: the project exposes no test script or target that our harness could run.

Does warpgate have known vulnerabilities in its dependencies?

npm audit found none in the dependency tree at the time of our run.

Who should not use warpgate?

Teams requiring a documented, proven active-active design: issue #2488 asks what node-local state must be shared after target-specific failures behind an AWS load balancer.

What are the alternatives to warpgate?

Teleport, Boundary, Apache Guacamole. Our Warpgate checkout installed 27 frontend packages with 0 npm advisories, but it exposed no npm build or test target and our run never compiled the Rust service.

Setup4/5Release binary and guided setup are simple; DMZ design is not
Docs4/5Protocol, login, SSO, tickets, Docker, and source paths exist
Community4/57,726 stars with same-day release and issue activity
Maturity4/5Wide protocol support, tempered by HA and live-config reports

Discussed on

  1. hnWarpgate: Smart SSH bastion that works with any SSH client120 points
  2. hnShow HN: Warpgate 0.27 (FOSS Teleport alternative) adds RDP/VNC support3 points

Who it’s for

Small and midsize infrastructure teams that need audited access to several internal protocols without a custom client.
Self-hosters who want target-level assignments, session replay, TOTP, and OIDC in one service.
Organizations comfortable operating a security-sensitive Rust service in a DMZ and backing up its database and recordings.

Who it’s NOT for

Teams requiring a documented, proven active-active design: issue #2488 asks what node-local state must be shared after target-specific failures behind an AWS load balancer.
Organizations that need Microsoft RDP Gateway or RDP over HTTPS compatibility: open issue #2471 requests that capability.
Operators who expect edited SSH credentials to apply without verification: issue #2463 reports a switch from password to public key taking effect only after a service restart.
Anyone unable to patch quickly: v0.28.4 fixed a missing permission check that let a scoped admin revive expired or revoked role assignments.

Setup reality

Our Node-facing sandbox installed 27 npm packages in 15 seconds and used 14 MB. The repository exposed no npm build or test script or target, so both steps were skipped. Npm audit reported 0 known vulnerabilities across critical, high, moderate, and low severities.

Running Warpgate needs a generated configuration, listening ports for the enabled protocols, target credentials, administrator accounts, and durable storage for the SQLite database and recordings. OIDC adds identity-provider registration, while TLS and DMZ placement remain operator responsibilities.

The project itself is primarily Rust with a Svelte frontend. Building from source requires Rust, Node.js, npm, and just; our Node harness did not compile the Rust binary. Production evaluation must use a release binary or the documented Cargo build and then exercise every enabled protocol.

Seven protocols share one access policy and audit trail

Warpgate accepts SSH, HTTPS, Kubernetes, MySQL, PostgreSQL, RDP, and VNC connections at the edge of a private network. Administrators map users to specific targets rather than granting access to the whole network behind a VPN. Native clients keep working, and browser clients cover SSH, RDP, and VNC. TOTP, OpenID Connect, brute-force protection, live sessions, and recordings sit in the same service. For a small infrastructure team, that is a useful amount of access control without a separate desktop agent.

It is a proxy, not a conventional jump shell. A user formats credentials so Warpgate can identify the requested target, then Warpgate opens the upstream connection and relays traffic. HTTPS users can choose among assigned targets and switch during a session. The administrator interface manages users, targets, assignments, session history, and recordings. This keeps the security boundary legible, but it also means one service holds credentials, identity state, network reach, and recorded activity.

A single binary still needs careful DMZ engineering

The distribution is a dependency-free Rust binary, and warpgate setup interactively writes configuration including port bindings. Docker instructions and release binaries provide faster routes than compiling source. Deployment still needs DNS, TLS certificates, firewall rules, durable database storage, recording storage, backups, monitoring, and a way to update without losing access. SQLite defaults under /var/lib/warpgate; PostgreSQL is available for deployments that need an external database.

The threat model deserves a written review. Warpgate reaches internal targets and can record what users type or see. Restrict its outbound routes to registered targets, keep the admin interface off public networks where possible, encrypt backup media, and set retention for recordings. Test the emergency path for disabling an account or bypassing a failed proxy. Session recordings are valuable evidence, but they can also contain commands, terminal output, or visible secrets that require stricter access than ordinary logs.

What happened when we ran it

Our sandbox cloned commit c4b19cb and installed 27 npm packages in 15 seconds. Those packages used 14 MB on disk. The source checkout held 791 files, about 104,867 lines, and occupied 5 MB. Npm audit found 0 known vulnerabilities: 0 critical, 0 high, 0 moderate, and 0 low. The repository had 14 CI workflow files and a tests directory, with no Dockerfile in the measured checkout.

There was no npm build script or target, so our harness skipped the build. There was also no npm test script or target, so it skipped tests. This does not contradict the repository's Rust CI or its documented source build. It means our Node 22 Debian procedure only installed the frontend package set and audited that dependency slice. We did not compile Cargo crates, launch Warpgate, connect a protocol, or inspect a recording.

The source instructions require Rust, Node.js, npm, and just. They install admin-interface dependencies, build the Svelte frontend, then compile the service with Cargo. Anyone building from source should run that complete chain and the project's Rust checks. Buyers using a release binary should verify its signature or provenance, pin the version, and exercise the exact artifact. Our 15-second npm result is not evidence that the security proxy itself builds or works.

Version 0.28.4 is a mandatory security baseline

Release v0.28.4 was published August 26, 2026 with a security fix for update_user_role. The notes say an administrator lacking AccessRolesAssign could re-enable an existing expired or revoked role assignment, restoring a user's former target access. The project recommends immediate updating for deployments with scoped administrators. The release also added SQLite CLI tooling to its Docker image and fixed several RDP and session-recording problems.

That advisory changes the adoption sequence. Install v0.28.4 or newer, create a scoped admin without role-assignment permission, and verify that expired and revoked access cannot be revived through either UI or API. Review audit entries for role changes. A bastion is judged by denied actions as much as successful logins, so negative authorization tests should accompany each release rather than waiting for a public advisory.

Live configuration and clustering need their own trials

Issue #2463 reports that changing one SSH target from password to public-key authentication on v0.28.0 persisted in the admin interface but did not affect new connections until a full restart. The reporter confirmed the old method in target-side logs and the new method immediately after restart. That is one upgrade history and version, not proof that all configuration reloads fail. It supports a practical check: after editing credentials, inspect the next upstream authentication and keep a controlled restart procedure.

High availability is less settled in the public material. Issue #2488 describes two v0.26.1 instances behind an AWS Network Load Balancer with shared PostgreSQL, keys, certificates, and recording storage. Some targets failed only when traffic reached the second node, leading the reporter to ask what additional node-local state needed synchronization. Teams with a hard active-active requirement should resolve that architecture and failure mode before choosing Warpgate, rather than assuming a shared database makes instances interchangeable.

Active maintenance supports a cautious shortlist

GitHub showed 7,726 stars, 212 open issues and pull requests, and a last push on August 26, 2026. Version 0.28.4 shipped the same day. The repository has 14 workflow files, public security reporting, a roadmap, and specific documentation for SSO, login protection, tickets, Docker, and source builds. Those are good signs for an access product, though our own harness did not reach the Rust build.

Warpgate is most attractive when a team wants several protocols, ordinary clients, narrow target assignments, and replayable sessions without buying a larger access platform. It is less convincing for an immediate multi-node rollout or an organization that cannot run protocol and authorization tests after upgrades. Start with a disposable network segment, restore its database and recordings from backup, validate every target type, and only then place the service on the real trust boundary.

Alternatives

ProjectWhat it isPick it when
TeleportA larger access platform for servers, Kubernetes, databases, applications, and desktops.pick this instead when enterprise identity, certificate workflows, and a broader clustered platform justify custom clients and more operations.
BoundaryHashiCorp's identity-aware remote access broker for private targets.pick this instead when brokered sessions and integration with the HashiCorp stack matter more than browser clients and built-in recording.
Apache GuacamoleA clientless browser gateway centered on remote desktop protocols and SSH.pick this instead when browser-based desktop access is the main job and database or Kubernetes proxying is unnecessary.

What people are saying

  1. [github-trending] warp-tech/warpgate

Sources

  1. Warpgate README
  2. Warpgate documentation
  3. Warpgate v0.28.4 release
  4. Issue #2463: SSH credential change requires restart
  5. Issue #2488: active-active deployment question
  6. Issue #2471: RDP Gateway request

More self-hosted reviews

v2 · OpenShell · wigolo · Mindwtr · club-3090 · reclip · the whole board →