Skip to content

CodesEasy/XPOS

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

2 Commits
Β 
Β 

Repository files navigation

XPOS

Instant public HTTPS URLs for localhost via SSH tunneling. Zero configs or downloads.

Status


What is XPOS?

XPOS is a secure SSH tunnel service that gives developers instant public HTTPS URLs for their local development servers. No installation, no configuration, no sign-up requiredβ€”just SSH and you're live.

Perfect for:

  • πŸͺ Testing webhooks locally (Stripe, GitHub, etc.)
  • πŸ“± Mobile device testing without deployment
  • 🎨 Sharing work-in-progress with clients
  • 🀝 Remote team collaboration
  • πŸ”— Accessing local servers from anywhere

Quick Start

ssh -p 443 -R0:127.0.0.1:8000 x@go.xpos.dev

Output:

Your public URL(s) (auto-expires in 3 hours):
https://calm-owl-a3f9b2.xpos.to

Press Ctrl+C to stop

That's it. Your localhost is now accessible at the public URL.

Customize the Port

Change 127.0.0.1:8000 to match your local server:

# React/Vite dev server (port 5173)
ssh -p 443 -R0:127.0.0.1:5173 x@go.xpos.dev

# Django dev server (port 8000)
ssh -p 443 -R0:127.0.0.1:8000 x@go.xpos.dev

# Next.js dev server (port 3000)
ssh -p 443 -R0:127.0.0.1:3000 x@go.xpos.dev

# Custom port
ssh -p 443 -R0:127.0.0.1:YOUR_PORT x@go.xpos.dev

Multiple Ports

Forward multiple local ports in a single SSH session:

ssh -p 443 -R0:localhost:8000 -R0:localhost:3000 x@go.xpos.dev

Output:

Your public URL(s) (auto-expires in 3 hours):
https://calm-owl-a3f9b2.xpos.to
https://brave-fox-d7e4c1.xpos.to

Press Ctrl+C to stop

Features

⚑ Lightning Fast

Get your public URL in under 100ms. Zero configuration, instant results every time.

πŸ”’ Secure by Design

  • SSH-based encryption end-to-end
  • Automatic HTTPS certificates
  • No plaintext traffic, ever
  • Built-in security warnings for browser access

πŸš€ Zero Config

  • No signup required
  • No installation needed
  • No config files to manage
  • One SSH command and you're live

🌐 Any Port

Forward any local portβ€”dev servers, APIs, databases, webhooks, anything running on localhost.

πŸ“± Mobile Testing

Test your local site on real mobile devices without deploying to staging servers.

πŸ”§ Developer Friendly

Works with your existing SSH client. No new tools to learn or install.


How It Works

  1. Run Command: Paste the SSH command into your terminal
  2. Get URL: Receive a unique public HTTPS URL instantly
  3. Share & Test: Share with clients or test webhooks anywhere

Under the Hood

XPOS uses SSH remote port forwarding (-R) to create a secure tunnel from your local machine to our edge servers. When visitors access your public URL, traffic is proxied through the tunnel to your local server.

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”     HTTPS      β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”     SSH Tunnel    β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚   Visitor   β”‚ ────────────►  β”‚  XPOS    β”‚ ─────────────────► β”‚ Your Local   β”‚
β”‚  (Browser)  β”‚                β”‚  Server  β”‚                    β”‚    Server    β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜                β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜                    β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

All traffic is encrypted via SSH, and HTTPS certificates are automatically managed for all public URLs.


Use Cases

Webhook Testing

Test webhooks from services like Stripe, GitHub, or Twilio without deploying:

# Start your local server
npm run dev

# Create tunnel
ssh -p 443 -R0:127.0.0.1:3000 x@go.xpos.dev
# β†’ https://calm-owl-a3f9b2.xpos.to

# Use the URL in your webhook settings

Client Demos

Share work-in-progress without pushing to production:

ssh -p 443 -R0:127.0.0.1:8000 x@go.xpos.dev
# Share the URL with your client

Mobile Testing

Test your local site on real devices:

ssh -p 443 -R0:127.0.0.1:5173 x@go.xpos.dev
# Open the URL on your phone/tablet

Remote Collaboration

Let remote team members access your local environment:

ssh -p 443 -R0:127.0.0.1:8080 x@go.xpos.dev
# Share the URL with your team

CI/CD Integration

Use in automated testing pipelines:

#!/bin/bash
# Start app in background
npm start &

# Create tunnel and capture URL
ssh -p 443 -R0:127.0.0.1:3000 x@go.xpos.dev &
# Run integration tests with the public URL

FAQ

Why do URLs expire after 3 hours?

This is a security feature by design. Temporary URLs prevent accidental long-term exposure of your local development environment. The 3-hour limit ensures that if you forget to close the tunnel, it automatically disconnects.

This protects you from accidentally leaving your local server exposed to the internet indefinitely. Plus, it encourages best practices: use tunnels for temporary testing, not permanent hosting.

Is my traffic encrypted?

Yes. All tunnels run over SSH with end-to-end encryption. Your connection is as secure as any SSH session. Additionally, all public URLs are served over HTTPS with valid TLS certificates.

What ports are supported?

Any TCP port you're running locally. Common examples:

  • 3000 (React, Express)
  • 5173 (Vite)
  • 8000 (Django, Laravel)
  • 8080 (general)
  • Any custom port between 1-65535

Do I need to open inbound firewall ports?

No. Your machine initiates the SSH connection out to port 443. As long as you can reach the internet on port 443 (HTTPS), you're good. No router configuration needed.

Can I use this in CI/CD?

Yes. The SSH command is non-interactive and scriptable, making it perfect for CI/CD pipelines, automated testing, and ephemeral preview URLs.

Is it free?

Yes, XPOS is currently free to use with 3-hour session limits. Future plans may include paid tiers for extended sessions and additional features.

Does HTTPS work on the public URL?

Yes. All public URLs are served over HTTPS with valid TLS certificates automatically managed. Your visitors see a green padlock in their browser.

What happens when someone visits my URL?

First-time visitors see a security warning explaining they're about to access a tunnel to someone's local machine. They must explicitly accept to proceed. This prevents accidental data exposure.

Can I get a custom domain?

Custom domains are not currently supported but are planned for future releases.

How is this different from ngrok?

XPOS is designed for maximum simplicity:

  • No account creation or authentication
  • No client installation (just SSH)
  • No configuration files
  • Instant public URLs (< 100ms)

If you need advanced features like custom domains, TCP tunnels, or persistent URLs, ngrok might be a better fit. XPOS prioritizes zero-friction developer experience.


Requirements

  • SSH client (pre-installed on macOS/Linux, available on Windows via Git Bash, WSL, or PuTTY)
  • A local server running on some port
  • Internet connection

That's it. No installation or configuration needed.


Security

What XPOS Does

  • βœ… End-to-end SSH encryption
  • βœ… Automatic HTTPS certificates
  • βœ… Security warnings for browser visitors
  • βœ… 3-hour auto-expiration
  • βœ… No permanent data storage

What You Should Do

  • πŸ”’ Don't tunnel production services
  • πŸ”’ Don't expose sensitive databases directly
  • πŸ”’ Don't share URLs with untrusted parties
  • πŸ”’ Close tunnels when done (Ctrl+C)
  • πŸ”’ Treat tunnel URLs like localhostβ€”they're just publicly accessible

Reporting Security Issues

If you discover a security vulnerability, please email security@xpos.dev instead of using the public issue tracker.


Technical Details

Architecture

  • Protocol: SSH remote port forwarding (-R)
  • Encryption: SSH (end-to-end) + HTTPS (edge to visitor)
  • Certificates: Automatic wildcard SSL via Let's Encrypt
  • DNS: Dynamic subdomain allocation
  • Timeout: 3 hours (configurable in future)

Performance

  • Tunnel creation: < 100ms
  • Proxy latency: < 10ms added overhead
  • Concurrent tunnels: 1000+ per server
  • Event logging: 100% asynchronous (zero developer wait time)

Limitations

  • HTTP/HTTPS traffic only (TCP tunnels not supported yet)
  • 3-hour session timeout
  • Random subdomain assignment (no custom domains yet)
  • No authentication required (frictionless but less control)

Roadmap

  • Paid tiers with extended session times (up to 24 hours)
  • Custom domain support (CNAME)
  • TCP tunnel support (not just HTTP/HTTPS)
  • Persistent URLs with authentication
  • CLI tool for management
  • Tunnel analytics dashboard
  • Team collaboration features
  • API for programmatic access

Support


Made with ❀️ by codeseasy

Visit xpos.dev to get started.

About

Instant public HTTPS URLs for localhost via SSH tunneling. Zero configs or downloads.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published