ReTunnel Client
ReTunnel is a secure tunnel service that allows you to expose local servers to the internet. This is the official Python client library and CLI.
Features
- 🚀 Easy to use - Single command to expose your local server
- 🔒 Secure - All connections are encrypted
- 🌐 HTTP/HTTPS and TCP - Support for web and TCP services
- 🔑 Automatic registration - No sign-up required for basic usage
- ⚡ High performance - Built with asyncio for efficiency
- 🎛️ Professional CLI - Rich terminal interface with Typer
Installation
pip install retunnel
Requires Python 3.9 or higher.
Quick Start
HTTP Tunnel
Expose a local web server on port 8080:
retunnel http 8080
TCP Tunnel
Expose a local TCP service on port 22:
retunnel tcp 22
With Custom Subdomain
Request a specific subdomain (subject to availability):
retunnel http 8080 --subdomain myapp
With Authentication
Protect your tunnel with HTTP Basic Auth:
retunnel http 8080 --auth user:password
Configuration
Server Endpoint
By default, ReTunnel connects to localhost:6400. You can configure this using:
- Environment variable:
RETUNNEL_SERVER_ENDPOINT=your.server.com:port - Command-line option:
--server your.server.com:port - Configuration file:
server_addr: your.server.com:port
Save Authentication Token
Save your auth token for persistent access:
retunnel authtoken YOUR_AUTH_TOKEN
Configuration File
Create a retunnel.yml file to define multiple tunnels:
server_addr: ${RETUNNEL_SERVER_ENDPOINT:localhost:6400}
auth_token: ${RETUNNEL_AUTH_TOKEN}
log_level: INFO
tunnels:
- name: web
protocol: http
local_port: 8080
subdomain: myapp
- name: api
protocol: http
local_port: 3000
auth: user:pass
- name: ssh
protocol: tcp
local_port: 22
Then start all tunnels:
retunnel start retunnel.yml
Environment Variables
RETUNNEL_SERVER_ENDPOINT- Server endpoint (default:localhost:6400)RETUNNEL_AUTH_TOKEN- Authentication tokenRETUNNEL_LOG_LEVEL- Logging level (DEBUG, INFO, WARNING, ERROR)
Python API
import asyncio
from retunnel import ReTunnelClient, TunnelConfig
async def main():
# Create client
client = ReTunnelClient()
# Connect to server
await client.connect()
# Create HTTP tunnel
config = TunnelConfig(protocol="http", local_port=8080)
tunnel = await client.request_tunnel(config)
print(f"Tunnel URL: {tunnel.url}")
# Keep running
await asyncio.Event().wait()
asyncio.run(main())
Advanced Usage
Custom Server
Connect to a self-hosted ReTunnel server:
retunnel http 8080 --server your-server.com:8000
Multiple Tunnels
Use the configuration file to manage multiple tunnels simultaneously.
Logging
Set log level for debugging:
retunnel http 8080 --log-level DEBUG
CLI Commands
retunnel http PORT- Create HTTP tunnelretunnel tcp PORT- Create TCP tunnelretunnel start CONFIG- Start tunnels from config fileretunnel authtoken TOKEN- Save authentication tokenretunnel config- Manage configurationretunnel version- Show versionretunnel credits- Show open source credits
Development
Setup
# Clone repository
git clone https://github.com/retunnel/retunnel-client
cd retunnel-client
# Install with development dependencies
make install-dev
Testing
# Run tests
make test
# Run linting
make lint
# Run type checking
make typecheck
# Format code
make format
Building
make build
License
MIT License - see LICENSE file for details.
Credits
ReTunnel uses these excellent open source libraries:
- aiohttp - Async HTTP client/server
- websockets - WebSocket client/server
- msgpack - Efficient serialization
- typer - CLI framework
- rich - Terminal formatting
- pydantic - Data validation
Support
- Documentation: https://docs.retunnel.com
- Issues: https://github.com/retunnel/retunnel-client/issues
- Email: support@retunnel.com
Release files for retunnel 3.2.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| retunnel-3.2.1.tar.gz | 59.7 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| retunnel-3.2.1-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 109.8 kB
Release files / retunnel-3.2.1.tar.gz
| Download URL | retunnel-3.2.1.tar.gz |
|---|---|
| Size | 59.7 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
1b75c255d95b9133df7b344e6d7aa8614036b7d02f75e9513191a79e7df853e5
|
|
BLAKE2b-256 checksum How to use checksums |
1655b62f4f41459901552256b1b94ddfec4c59aebeb2ed74798bd9a9ac56ea75
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.14.6
|
Release files / retunnel-3.2.1-py3-none-any.whl
| Download URL | retunnel-3.2.1-py3-none-any.whl |
|---|---|
| Size | 50.1 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
1e982adf21d0e049d52dc957ee6bd3d0e561f99c6ab46349a20ce23499dacccc
|
|
BLAKE2b-256 checksum How to use checksums |
9be3f65827f98a87bb3c5f952154095bb2f9bba47a7c1809a094a0000d901a0c
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.14.6
|