Give AI agents, external consultants, or any collaborator temporary, scoped access to private resources. One binary. One WebSocket. Auto-expires.
No VPN enrollment. No credentials to rotate. No admin tickets. The user who already has access delegates a subset of it — with full audit trail and configurable security policies.
Someone outside your perimeter needs to reach something inside it. Today, the options are bad.
Paste a DB password in Slack. Pray they delete it after. They won't. It leaks in 3 months.
File a ticket. Wait for IT. VPN enrollment. 2FA setup. They need it for 30 minutes. The account lives forever.
Open a firewall rule "temporarily". Forget to close it. Shodan finds it in 4 hours.
Two modes, one binary. The free tier is self-service from zero. The Pro tier adds delegated access passes — an admin or authorized user creates a scoped pass and shares it with the recipient.
Run wzctl register. Self-service, no portal. Credentials saved locally.
Run wzctl token --cidrs to create a publisher enrollment URL.
On the private server, install the publisher with the token.
Run wzctl connect --daemon. Resource on localhost. Auto-expires.
Via the Web UI or wzctl pass create. Scoped to host:port, with TTL.
Send the pass ID to the consultant, CI job, or AI agent. It's a short opaque token.
Runs wzctl connect --pass. No registration needed. Resource on localhost.
Connection closes. Audit log written. Zero cleanup. No zombie accounts.
Collaborator / AI Agent Your private infrastructure
┌─────────────────────┐ ┌──────────────────────────┐
│ wzctl connect │ WebSocket (443) │ WireZTNA Broker │
│ localhost:5432 ───┼──────────────────────────►│ validates session │
│ │◄─── TCP relay ──────────► │ opens TCP in namespace │──► PostgreSQL
│ 5 MB static binary │ TLS via Cloudflare │ full audit trail │ 10.50.1.100:5432
└─────────────────────┘ └──────────────────────────┘
│
No NET_ADMIN. No WireGuard. ▼
No credentials. No VPN. Publisher network (private)
Works from containers, CI, sandboxes. ────────────────────────────
The same mechanism serves AI agents operating autonomously and human collaborators working on a deadline. One protocol, two worlds.
Expose internal APIs, MCP Servers, and enterprise tools to AI agents — without VPNs, public endpoints, or credential sharing.
The entire AI agent ecosystem — OpenAI Agents SDK, Claude Code, Cursor, Docker MCP, LangGraph, CrewAI, AutoGen — increasingly depends on MCP (Model Context Protocol) to connect agents with tools. But most enterprise tools live behind private networks. Today your options are: expose them to the internet (dangerous), run the agent inside the VPN (complex), or give up on private tool access entirely.
wzctl solves this in one line:
Give your MCP server access to internal databases, APIs, or services — without exposing them publicly. The agent calls MCP tools; tools reach private infra through the tunnel.
Cursor, Copilot, Windsurf, Claude Code — let them query staging databases, hit internal APIs, or access private package registries. Scoped, temporary, audited.
Autonomous ops bots diagnosing incidents, checking K8s clusters, querying Prometheus, or running playbooks against private infrastructure. Time-boxed by design.
Data extraction agents that need temporary read access to internal databases or document stores for knowledge base indexing. No standing credentials.
LangGraph, CrewAI, AutoGen multi-step workflows that need to interact with private services at specific steps. Each step gets its own scoped pass.
Agents running in Docker, Firecracker, E2B, or any sandbox with no NET_ADMIN. Only needs outbound HTTPS — wzctl runs unprivileged.
Every AI agent framework is converging on MCP for tool access. But the transport layer assumes tools are either public or running locally. Enterprise tools are neither. wzctl bridges this gap: your MCP server runs anywhere (cloud, laptop, CI), and reaches private resources through a scoped, time-limited, auditable tunnel. No VPN on the agent host. No public endpoints. No credentials to leak.
Delegation is powerful. Uncontrolled delegation is dangerous. That's why every layer has explicit admin controls.
Admins explicitly mark which publishers allow delegation (delegable: true). Private data publishers stay protected by default. No flag = no passes can target it.
Only users with can_delegate: true can create access passes. The admin grants this selectively. New users can't delegate by default.
Admin configures max TTL per tenant (e.g., 2 hours). Users can request less, never more. Passes cannot be renewed — create a new one with a new audit entry.
A user can never delegate more than they have. If you can reach 10.50.1.100:5432, you can delegate exactly that. Not the whole /16. Not other ports.
Every pass creation generates an audit event visible in the dashboard. Admins can revoke any pass instantly — active WebSocket connections are terminated within 1 second.
Optional per-pass limits: max bytes transferred, max concurrent connections. Prevents exfiltration even if the scope is legitimate. Auto-closes on threshold.
For regulated environments: passes can be created in pending_approval state. An admin reviews and approves before the pass becomes usable. The TTL doesn't start counting until approval. Full compliance with SOC 2, ISO 27001, and least-privilege audits.
Because temporary access should be temporary. Not "temporary until someone remembers to revoke it."
| Full VPN account | Access Pass | |
|---|---|---|
| Setup for recipient | Enrollment, login, client install, config | One binary, one command |
| Scope | Everything in their group | Specific host:port only |
| Lifecycle | Permanent until admin revokes | Auto-expires. Zero cleanup. |
| Who provisions it | Admin (ticket, approval chain) | The user who already has access |
| Audit context | Generic "user accessed network" | Who delegated, why, for how long, what they did |
| Requirements | WireGuard, NET_ADMIN, root/admin | Outbound HTTPS. That's it. |
Static binary. No runtime, no dependencies. Works in any environment.
Or install via Go: go install github.com/wireztna/wzctl@latest
Download wzctl, register, deploy a publisher, connect. Full step-by-step guide with examples for Docker, CI/CD, and macOS.
Free Tier quick start guideWorks anywhere you can run a binary or import a package.
wzctl is included with every WireZTNA plan. No add-on fees.