π 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.
β¨ Features
- π Simple Setup - One command to expose your localhost
- β‘ Fast - Built with Go for high performance
- π Global Access - Access your projects from anywhere
- π― Custom Subdomains - Choose your own subdomain
π οΈ Installation
Package Managers
Homebrew (macOS)
brew tap juandi247/skipper
brew install skipper
Chocolatey (Windows)
choco install skipper
β οΈ Pending for approval
Direct Downloads
Download the latest version (v0.0.7) directly for your platform:
| Platform | Download |
|---|---|
| Linux AMD64 | skipper_0.0.7_linux_amd64.tar.gz |
| Linux ARM64 | skipper_0.0.7_linux_arm64.tar.gz |
| Windows AMD64 | skipper_0.0.7_windows_amd64.tar.gz |
| Windows ARM64 | skipper_0.0.7_windows_arm64.tar.gz |
| macOS AMD64 | skipper_0.0.7_darwin_amd64.tar.gz |
| macOS ARM64 (M1) | skipper_0.0.7_darwin_arm64.tar.gz |
π¦ View all releases on GitHub
π Quick Start
Getting started with Skipper is as simple as running a single command:
skipper -port 3000 -subdomain myapp
This will expose your local application running on port 3000 at:
https://myapp.skipper.lat
Parameters
-port: The port where your local application is running-subdomain: The subdomain you want to use (will be available at subdomain.skipper.lat)
ποΈ Architecture
Skipper operates through a sophisticated architecture with advanced Go patterns:
π Core Architecture
- TCP Persistent Connection: Bidirectional communication between proxy and tunnel
- Custom Framing Protocol: 20-byte binary header for efficient message routing
- Stream Multiplexing: Multiple flows over single TCP connection
π§ Concurrency Patterns
- Worker Pools: Efficient concurrent task management
- Fan-In/Fan-Out: Dynamic message distribution patterns
- Reactor Pattern: Message dispatching by type and StreamID
ποΈ State Machine Design
- Functional FSM: Tunnel as concurrent state machine
- Graceful Shutdown: Controlled resource cleanup with context
- Error Handling: Robust state transitions and recovery
π¦ Protocol & Serialization
- Protocol Buffers: Compact, fast serialization
- Go Idioms: Context, select, interfaces
- Extensible Design: Decoupled handlers for testing
π Meet Skipper
Skipper: looks cute, contributes nothing to the repo
π€ Contributing
We welcome contributions from the community! Here's how you can help:
- π Report bugs on our GitHub Issues page
- π‘ Suggest new features or improvements
- π Help improve our documentation
- π§ Submit a Pull Request with your improvements
π Contact
- GitHub: @juandi247
- Email: [email protected]
- LinkedIn: Juan Diego Diaz