Roadmap
A curated view of where xPort stands and where it is heading. Items are listed without dates; things ship when they are ready and verified end-to-end.
Shipped
Section titled “Shipped”CLI
xport <port>— expose a local port through a public tunnel URLxport <file>— share a file through a temporary download link (Range requests supported)xport <folder>— browsable folder listing with streaming ZIP downloadsxport receive— public upload page, multi-file, collision-safe naming, plus file requests (--message,--accept,--maxfilesize)echo … | xport— share stdin content (text inline, binary as download)- One-time secrets —
echo … | xport --secret [--once|--burn]with a reveal-gated page xport share <path>— explicit share commandxport list/xport stop <id>— local share registry with~/.local/state/xport/shares.yaml;--detachruns any share in the background- Persistent flags in every mode:
--name,--domain,--policy-file,--expires,--password,--qr,--copy, plus--jsonfor machine-readable output xport info— version, build info, effective configurationxport update— signature-verified self-update (swap in place, backup kept; sudo fallback when the install dir is read-only)xport login/xport auth/xport logout— browser OAuth login (authorization code + PKCE), tokens auto-refresh, relay-side validation via introspection- YAML configuration with
XPORT_*environment overrides - AI agent integration — agent skill and MCP server
(
share_port,share_file,list_shares,stop_share); the installer detects Claude Code, Kimi Code and Codex and offers to install the skill - Server-side share lists — relay-reported session metadata powers the dashboard overview + 30-day history (content never stored)
- Named endpoints (
xport start) — persistent tunnels defined in config.yaml, started by name (xport start demo,--all); the endpoint name becomes the session name - Project profiles (
xport.yaml) — barexportexposes a whole stack: built-in templates (Laravel, WordPress, Node), custom committable profiles, preflight checks, private services verified but never exposed, group stops
Infrastructure
- Go relay: WebSocket control and data plane, working end-to-end with the CLI
- Raw TCP tunnels (
xport tcp): one listener port per session from a configured range, raw byte bridging over the same data plane; Pro/Team on the hosted service, free when self-hosting (RFC-0003, TCP Forwarding Extension) - Relay auth modes: static bearer token or OAuth token introspection (RFC 7662-style, 60 s cache) against the account server
- Name policy enforcement in
oauthmode: anonymous random names, per-plan custom-name limits, blocked words, persistent reservations - Traffic policies: CEL-guarded rules (ip restrictions, rate limits, basic auth, redirects, header mutation) validated by the CLI and enforced by the relay per session
- Custom domains (BYOD): account-verified domains — exact hosts by
CNAME, whole wildcard trees (
*.acme.com) by TXT token, covering single- and multi-level subdomain claims; relay-side poll, automatic Let’s Encrypt certificates (HTTP-01 and Cloudflare DNS-01) on the edge - Branded share pages: local config override everywhere; account-driven branding (logo, name, accent) via introspection claims on the hosted relay
- Internal admin API for the account server (names list/release, verified-domain list)
- Paid plans — Pro/Team subscriptions (monthly + yearly) with hosted checkout and a self-service customer portal for invoices
- Go gateway: wildcard host-label routing to relays
- Zero-storage design — content is relayed, never persisted
Planned
Section titled “Planned”- TLS tunnels (
xport tls) — SNI-based routing so a TCP tunnel can serve your own hostname with proper certificates - Zero-knowledge encryption (Phase 2) — client-side encryption with the key in the URL fragment, making the relay content-blind
- Desktop app (macOS / Windows) — titlebar app showing all your active URLs and tunnels, built on the local share registry
- Multi-region relays — e.g.
eu1/us1/ap1.xport.host, selected viarelay.region - Persistent aliases — stable names such as
demo.xport.shvia the gateway routing table - Team sharing — shared names, domains and branding across a team (membership management already ships in the dashboard)
- xPort Gate — AI layer on top of shared endpoints (under consideration)

