Skip to content

Components

grpc-transports is a set of pure-Go modules (no cgo) that each carry gRPC over a different secure carrier. They share one shape: a server constructor returning a net.Listener and a client constructor returning a grpc.DialOption.

Module Import path Carrier What it does
wireguard github.com/grpc-transports/wireguard WireGuard overlay Inter-VM gRPC regardless of physical location. ListenWireGuard brings up a WireGuard device and serves overlay TCP connections; DialOption tunnels gRPC to an overlay address. Userspace (wireguard-go + gVisor netstack) or Linux-kernel backend.
ssh github.com/grpc-transports/ssh SSH tunnel Transparent SSH-tunnelled gRPC. ListenSSH wraps inbound SSH connections as gRPC-ready net.Conn; DialOption opens gRPC channels over SSH. Ed25519 host keys, agent forwarding, pluggable AuthCallback.
vsock github.com/grpc-transports/vsock AF_VSOCK Host↔guest gRPC over the Linux virtio-vsock family (KVM/QEMU or Apple VZ), addressed by (context id, port) with no IP stack in the guest. Listen returns a net.Listener whose connections report the peer CID; Dialer.DialContext matches grpc.WithContextDialer. Dependency-free, Linux-only with a portable non-Linux stub.

wireguard and ssh depend on google.golang.org/grpc plus golang.org/x/crypto; wireguard additionally pulls in wireguard-go, wgctrl, netlink, and gVisor's netstack for the userspace data path. vsock has no third-party dependencies — it is pure stdlib.