MCPcopy Index your code
hub / github.com/openziti/zrok

github.com/openziti/zrok @v2.0.4

repository ↗ · DeepWiki ↗ · release v2.0.4 ↗ · + Follow
16,582 symbols 42,912 edges 1,577 files 9,646 documented · 58% updated 13d agov2.0.4 · 2026-05-18★ 4,524116 open issues
README

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 →

Extension points exported contracts — how you extend this code

EnableHandler (Interface)
EnableHandler interface for that can handle valid enable params [85 implementers]
rest_server_zrok/operations/environment/enable.go
IResourceManager (Interface)
(no doc) [7 implementers]
controller/automation/resource.go
UsageSink (Interface)
(no doc) [85 implementers]
controller/metrics/model.go
ApiResponse (Interface)
(no doc) [13 implementers]
sdk/nodejs/sdk/src/api/runtime.ts
ApiResponse (Interface)
(no doc) [13 implementers]
ui/src/api/runtime.ts
ApiResponse (Interface)
(no doc) [13 implementers]
agent/agentUi/src/api/runtime.ts
DeadPropsHolder (Interface)
DeadPropsHolder holds the dead properties of a resource. Dead properties are those properties that are explicitly defin [3 …
drives/davServer/prop.go
OAuthCookieConfig (Interface)
OAuthCookieConfig defines the interface that OAuth configurations must implement to work with the shared cookie utilitie [3 …
endpoints/oauthCookies.go

Core symbols most depended-on inside this repo

String
called by 283
controller/store/limitClass.go
Fatalf
called by 260
rest_server_zrok/server.go
call_api
called by 255
sdk/python/src/zrok_api/api_client.py
Close
called by 224
sdk/golang/pubsub/types.go
Error
called by 190
tui/messages.go
read
called by 174
sdk/python/src/zrok_api/rest.py
response_deserialize
called by 170
sdk/python/src/zrok_api/api_client.py
Marshal
called by 156
sdk/golang/pubsub/types.go

Shape

Method 10,018
Function 3,517
Struct 1,939
Interface 557
Class 404
FuncType 93
TypeAlias 46
Route 7
Enum 1

Languages

Go75%
TypeScript14%
Python11%

Modules by API surface

agent/agentGrpc/agent.pb.go184 symbols
sdk/python/src/zrok_api/api/admin_api.py142 symbols
ui/src/api/apis/AdminApi.ts104 symbols
sdk/nodejs/sdk/src/api/apis/AdminApi.ts104 symbols
drives/davServer/internal/xml/marshal_test.go92 symbols
rest_client_zrok/agent/remote_status_responses.go85 symbols
rest_client_zrok/admin/admin_client.go84 symbols
sdk/python/src/zrok_api/api/metadata_api.py78 symbols
rest_client_zrok/share/share_responses.go71 symbols
rest_client_zrok/admin/create_frontend_responses.go71 symbols
ui/src/api/runtime.ts70 symbols
sdk/nodejs/sdk/src/api/runtime.ts70 symbols

Dependencies from manifests, versioned

cel.dev/exprv0.24.0 · 1×
cloud.google.com/go/compute/metadatav0.9.0 · 1×
dario.cat/mergov1.0.1 · 1×
filippo.io/edwards25519v1.1.0 · 1×
github.com/AndreasBriese/bbloomv0.0.0-2019082515265 · 1×
github.com/Azure/go-ntlmsspv0.0.0-2022112819355 · 1×
github.com/Masterminds/goutilsv1.1.1 · 1×
github.com/Masterminds/semver/v3v3.3.1 · 1×
github.com/Microsoft/go-winiov0.6.2 · 1×

For agents

$ claude mcp add zrok \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact