zrok is a free, open source file management & sync project written in Go and released under Apache-2.0. It has 4,711 GitHub stars, 224 forks and 125 open issues, and was last pushed 3 months ago. On this registry it ranks #18 of 26 tracked projects in File Management & Sync, with 5 head-to-head comparisons available.

What is zrok?

zrok is an open-source, Apache-2.0 licensed secure sharing tool written in Go that lets developers, operators, and self-hosters expose web services, folders, and TCP or UDP resources over the internet or to specific users without firewall changes or port forwarding.

What it is

zrok is a zero-trust sharing utility built on OpenZiti, a programmable zero-trust network overlay. It lives in the Go ecosystem and ships as a single binary containing everything needed to run a share or a complete zrok service instance. The client uses identity-based access rather than IP allowlists, establishes peer-to-peer connections where possible, and encrypts traffic end to end so that even the zrok servers do not see plaintext. Public sharing, private sharing, HTTP/HTTPS, TCP, UDP, and file sharing are all handled by the same tool, and the same codebase powers both the free hosted service at zrok.io and any self-hosted deployment.

The concrete problem it solves is inbound reachability. Local web apps, folders, and network services normally require a public IP address, a firewall rule, a port-forward, and a reverse proxy before anyone outside the local network can reach them — and each of those steps widens the attack surface. zrok replaces that port-forwarding and public-exposure workflow by making an outbound connection from the machine running the share, so no inbound connectivity is required at all. A folder becomes a shareable network drive, and a service on localhost becomes reachable without the host ever accepting an inbound connection.

Key capabilities

  • Public web sharing with zrok share public localhost:8080, which exposes a local service over the internet without router or firewall configuration.
  • File and directory sharing with zrok share public --backend-mode drive ~/Documents, which turns any folder into a network drive that can be mounted in a file manager.
  • Private sharing with zrok share private localhost:3000, which limits access to other zrok users and avoids public internet exposure entirely.
  • Multiple transport protocols: HTTP/HTTPS, TCP, UDP, and file sharing over a single interface.
  • Zero-trust security model inherited from OpenZiti, including end-to-end encryption, identity-based access, and peer-to-peer connections where a direct path exists.
  • Cross-platform clients for Windows, macOS, Linux, and Raspberry Pi.
  • A Go SDK for embedding sharing into applications, using sdk.CreateShare, sdk.ShareRequest, sdk.TcpTunnelBackendMode, sdk.PrivateShareMode, and sdk.NewListener.

Who uses it and how

  • Developers who need to demo a web app running on localhost to a client or teammate without deploying it or opening a port.
  • Teams that need to hand a folder to a remote colleague as a mounted network drive instead of copying it through a third-party service.
  • Operators sharing TCP or UDP services privately with named zrok users, keeping the service off the public internet.
  • Self-hosters running their own zrok service instance, from a single Raspberry Pi up to enterprise scale, using the same codebase as the public zrok.io service.
  • Application developers embedding sharing directly into their own products through the Go SDK rather than shelling out to the CLI.

Getting started

Install zrok for the target platform, obtain an account with zrok invite, then run zrok enable to activate sharing on that machine; the README describes this as a setup that takes under two minutes. The free hosted zrok.io service can be used for the account, or a self-hosted service instance can be deployed following the self-hosting guide.

How it compares

The facts provided name no paid products that zrok replaces, and the only other project referenced is OpenZiti, which is the zero-trust overlay zrok is built on rather than a competing tool. On the evidence available, zrok stands alone in this registry.

When to use it — and when not to

Self-hosting means operating a zrok service instance yourself, and while the single binary keeps that tractable, the README does not spell out what else a deployment depends on. Anyone who wants no operational responsibility at all should use the hosted zrok.io service instead. The project also carries 125 open issues at the time of writing, and the README offers no release history or versioning detail, so teams that need a documented support relationship and a formal release cadence should weigh that before standardising on it.

project readme (upstream, from github) — read inline

zrok - Secure internet sharing made simple

zrok logo

Share anything, anywhere, instantly. Enterprise reliability. No firewall changes. No port forwarding. No hassle.

zrok lets you securely share web services, files, and network resources with anyone—whether they're across the internet or your private network. Built on zero-trust networking, it works through firewalls and NAT without requiring any network configuration changes.

Quick start

Get sharing in under 2 minutes:

  1. Install zrok for your platform
  2. Get an account: zrok invite (use the free zrok.io service)
  3. Enable sharing: zrok enable

That's it! Now you can share anything:

# Share a web service publicly
$ zrok share public localhost:8080

# Share files as a network drive  
$ zrok share public --backend-mode drive ~/Documents

# Share privately with other zrok users
$ zrok share private localhost:3000

zrok Web Console

What you can share

Web services

Instantly make local web apps accessible over the internet:

zrok share public localhost:8080

zrok share public

Files & directories

Turn any folder into a shareable network drive:

zrok share public --backend-mode drive ~/Repos/zrok

zrok share public -b drive mounted zrok drive

Private resources

Share TCP/UDP services securely with other zrok users—no public internet exposure.

Key features

  • Zero Configuration: Works through firewalls, NAT, and corporate networks
  • Secure by Default: End-to-end encryption with zero-trust architecture
  • Public & Private Sharing: Share with anyone or just specific users
  • Multiple Protocols: HTTP/HTTPS, TCP, UDP, and file sharing
  • Cross-Platform: Windows, macOS, Linux, and Raspberry Pi
  • Self-Hostable: Run your own zrok service instance

How it works

zrok is built on OpenZiti, a programmable zero-trust network overlay. This means:

  • No inbound connectivity required: Works from behind firewalls and NAT
  • End-to-end encryption: All traffic is encrypted, even from zrok servers
  • Peer-to-peer connections: Direct connections between users when possible
  • Identity-based access: Share with specific users, not IP addresses

Developer SDK

Embed zrok sharing into your applications with our Go SDK:

// Create a share
shr, err := sdk.CreateShare(root, &sdk.ShareRequest{
    BackendMode: sdk.TcpTunnelBackendMode,
    ShareMode:   sdk.PrivateShareMode,
})

// Accept connections
listener, err := sdk.NewListener(shr.Token, root)

Read the SDK guide for complete examples.

Self-hosting

Run your own zrok service—from Raspberry Pi to enterprise scale:

  • Single binary contains everything you need
  • Scales from small personal instances to large public services
  • Built on the same codebase as the public zrok.io service

Self-Hosting Guide

Resources


Ready to start sharing? Get started with zrok →

Frequently asked questions

Is zrok free to use?

zrok is open source under the Apache-2.0 licence. There is no licence fee and no seat count — you can self-host it or, where the project offers one, pay a vendor for a managed version instead.

What does zrok do?

Secure internet sharing made simple.

What is zrok written in?

zrok is primarily written in Go. Its source is publicly available at https://github.com/openziti/zrok, and it has 4,711 GitHub stars.