Skipper

A powerful tunnel and reverse proxy that allows you to expose your localhost projects to the internet through a subdomain. Simple, fast, and secure - your local development environment, accessible from anywhere.

macOS Linux Windows

Made with ❤️ by Juan Diego Diaz, a passionate backend and low-level learner developer

This project is dedicated to Skipper, my loyal companion during the long hours of programming. Your presence keeps me motivated and brings joy to my development journey.

Installation

Using Homebrew (macOS)

brew tap juandi247/skipper
brew install skipper
brew upgrade skipper

Run this command to update to the latest version when new releases are available.

Using Chocolatey (Windows)

choco install skipper

Usage

Getting started with Skipper is as simple as running a single command:

skipper start -p 3000 -s myapp

This will expose your local application running on port 3000 at:

https://myapp.skipper.lat

You can also use the full flag names:

skipper start --port 3000 --subdomain myapp

-p, --port: The port where your local application is running
-s, --subdomain: The subdomain you want to use (will be available at subdomain.skipper.lat)

How It Works

Skipper operates through a sophisticated architecture running on Google Cloud:

The system consists of two main components:

  • HTTP Server: Handles incoming web requests and routes them based on subdomains
  • TCP Server: Manages secure tunnels between the cloud and your local machine

When you start Skipper:

  1. A secure tunnel is established between your local machine and our cloud infrastructure
  2. Requests to your subdomain are received by the HTTP server
  3. Using goroutines and worker pools, requests are efficiently routed through the tunnel
  4. Your local application processes the request and sends the response back through the tunnel
  5. The response is delivered to the end user through the HTTP server

Future Changes

We're constantly working to improve Skipper. Here's what's coming next:

Protocol Buffers

Implementation of Protocol Buffers for more efficient and type-safe communication between services.

WebSocket Support

Full WebSocket support for real-time bidirectional communication through your tunnels.

Server-Sent Events

Native support for SSE, enabling efficient server-to-client streaming.

Request Dashboard

Real-time monitoring dashboard to track and analyze requests to your subdomains.

Connection Management

Enhanced connection handling with automatic reconnection and load balancing.

Custom Domains

Support for custom domains with automatic SSL certificate management.

Contribute

⭐ Stars 🔀 Forks 👥 Contributors

Want to help make Skipper better?

We welcome contributions from the community! Here's how you can help:

  • Submit a Pull Request with your improvements
  • Report bugs on our GitHub Issues page
  • Suggest new features or improvements
  • Help improve our documentation
Check out our GitHub repository