Skip to content

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.

CLI

  • xport <port> — expose a local port through a public tunnel URL
  • xport <file> — share a file through a temporary download link (Range requests supported)
  • xport <folder> — browsable folder listing with streaming ZIP downloads
  • xport 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 command
  • xport list / xport stop <id> — local share registry with ~/.local/state/xport/shares.yaml; --detach runs any share in the background
  • Persistent flags in every mode: --name, --domain, --policy-file, --expires, --password, --qr, --copy, plus --json for machine-readable output
  • xport info — version, build info, effective configuration
  • xport 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) — bare xport exposes 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 oauth mode: 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
  • 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 via relay.region
  • Persistent aliases — stable names such as demo.xport.sh via 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)