-
Notifications
You must be signed in to change notification settings - Fork 12
Why rustguac
rustguac is a Rust web server that puts a browser in front of SSH, RDP, VNC, headless Chromium, and per-user Docker desktops, by speaking the Guacamole protocol over WebSockets and proxying it to upstream guacd. It ships as a single statically-linked binary, keeps connection credentials in HashiCorp Vault (or OpenBao) instead of a webapp database, and uses OIDC for SSO with group-based ACLs.
If you already run Vault and an OIDC provider, the operational footprint is just rustguac + guacd. No JVM, no servlet container, no application database to migrate.
rustguac is built on top of guacd from the apache/guacamole-server project. That's the C daemon that does the actual SSH/RDP/VNC protocol translation, and it's the part of Guacamole that took a decade of community work to get right. We didn't try to replace it; we ship a slightly-patched build of upstream guacd (the patches are for FreeRDP 3.15+ on Debian 13 and are linked back to upstream where applicable).
Beyond guacd, rustguac is interoperable with Guacamole at the boundaries that matter:
- The wire protocol between webapp and guacd is the upstream Guacamole protocol, unchanged.
- The browser-side JavaScript client library is
guac-common-js, used verbatim from upstream. - Session recordings are in the standard Guacamole
.guacformat and play back in the upstream player. - There's an import tool that pulls a Guacamole MySQL/MariaDB database into rustguac's Vault-backed connections.
The Apache Guacamole project is a mature, widely-deployed platform with a real community behind it. rustguac isn't trying to displace it. It's a different shape, aimed at a different operational profile.
- A Rust web server (axum) that speaks the Guacamole wire protocol over WebSockets.
- A bundled
guacd(built from upstream apache/guacamole-server with FreeRDP 3.15+ patches). - An admin UI for OIDC roles, API keys, audit logs, recordings.
- A connections page backed by Vault KV v2.
- Five session types: SSH, RDP, VNC, headless-Chromium-on-Xvnc ("web sessions"), and per-user Docker desktops ("VDI").
- A drop-in replacement for the Apache Guacamole webapp. Same wire protocol, interchangeable recordings, but the admin model and extension surface are different.
- A multi-tenant SaaS. The role model assumes one organisation, OIDC groups for ACLs, and a small operator team.
- A clustered HA system. One rustguac, one guacd, one SQLite. Horizontal scaling of guacd is on the long-term roadmap (issue #100) but not near-term.
- Sol1 (the maintainers) for our internal engineering jumpbox. Most product decisions are calibrated to that use case.
- Teams that already operate Vault or OpenBao and want their connection credentials there instead of in another database.
- Organisations that want browser-based remote access without operating a JVM.
- Folks who want OIDC SSO + group-based ACLs + audit logs without writing the integration themselves.
Sol1 runs a managed-services jumpbox for engineers. We started rustguac as an experiment to see whether we could keep guacd and replace just the webapp half with something smaller. It stuck. The first public release was v0.1; the current one is on the releases page.
There's a downstream commercial fork called JumpboxVDI (Sol1) that adds enterprise-oriented VDI drivers (Nomad, Proxmox, cloud) and curated images on top of the same rustguac core. rustguac itself stays small and Docker-only on the VDI side; that's where the line is between the open-source project and the commercial product.
Background
Deployment
Security
Help