{"id":50851783,"url":"https://github.com/rodmena-limited/retunnel-client","last_synced_at":"2026-06-14T14:03:25.143Z","repository":{"id":297997950,"uuid":"998525879","full_name":"rodmena-limited/retunnel-client","owner":"rodmena-limited","description":"Retunnel Client","archived":false,"fork":false,"pushed_at":"2025-12-07T21:40:09.000Z","size":734,"stargazers_count":4,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-06-14T14:03:21.287Z","etag":null,"topics":["gateway","gateway-api","tunnel-client","tunnel-proxy","tunneling"],"latest_commit_sha":null,"homepage":"https://retunnel.com","language":"Python","has_issues":false,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/rodmena-limited.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-06-08T19:48:41.000Z","updated_at":"2026-01-05T05:45:49.000Z","dependencies_parsed_at":null,"dependency_job_id":"e77a9372-0e32-401b-9961-aed5bcac3f90","html_url":"https://github.com/rodmena-limited/retunnel-client","commit_stats":null,"previous_names":["rodmena-limited/retunnel-client"],"tags_count":5,"template":false,"template_full_name":null,"purl":"pkg:github/rodmena-limited/retunnel-client","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rodmena-limited%2Fretunnel-client","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rodmena-limited%2Fretunnel-client/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rodmena-limited%2Fretunnel-client/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rodmena-limited%2Fretunnel-client/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/rodmena-limited","download_url":"https://codeload.github.com/rodmena-limited/retunnel-client/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rodmena-limited%2Fretunnel-client/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34324004,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-14T02:00:07.365Z","response_time":62,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["gateway","gateway-api","tunnel-client","tunnel-proxy","tunneling"],"created_at":"2026-06-14T14:03:21.495Z","updated_at":"2026-06-14T14:03:25.138Z","avatar_url":"https://github.com/rodmena-limited.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# ReTunnel Client\n\n[![PyPI Version](https://badge.fury.io/py/retunnel.svg)](https://pypi.org/project/retunnel/)\n[![Python Versions](https://img.shields.io/pypi/pyversions/retunnel.svg)](https://pypi.org/project/retunnel/)\n[![License](https://img.shields.io/badge/License-MIT-blue.svg)](LICENSE)\n\nReTunnel is a secure tunnel service that allows you to expose local servers to the internet. This is the official Python client library and CLI.\n\n## Features\n\n- 🚀 **Easy to use** - Single command to expose your local server\n- 🔒 **Secure** - All connections are encrypted\n- 🌐 **HTTP/HTTPS and TCP** - Support for web and TCP services\n- 🔑 **Automatic registration** - No sign-up required for basic usage\n- ⚡ **High performance** - Built with asyncio for efficiency\n- 🎛️ **Professional CLI** - Rich terminal interface with Typer\n\n## Installation\n\n```bash\npip install retunnel\n```\n\nRequires Python 3.9 or higher.\n\n## Quick Start\n\n### HTTP Tunnel\n\nExpose a local web server on port 8080:\n\n```bash\nretunnel http 8080\n```\n\n### TCP Tunnel\n\nExpose a local TCP service on port 22:\n\n```bash\nretunnel tcp 22\n```\n\n### With Custom Subdomain\n\nRequest a specific subdomain (subject to availability):\n\n```bash\nretunnel http 8080 --subdomain myapp\n```\n\n### With Authentication\n\nProtect your tunnel with HTTP Basic Auth:\n\n```bash\nretunnel http 8080 --auth user:password\n```\n\n## Configuration\n\n### Server Endpoint\n\nBy default, ReTunnel connects to `localhost:6400`. You can configure this using:\n\n- Environment variable: `RETUNNEL_SERVER_ENDPOINT=your.server.com:port`\n- Command-line option: `--server your.server.com:port`\n- Configuration file: `server_addr: your.server.com:port`\n\n### Save Authentication Token\n\nSave your auth token for persistent access:\n\n```bash\nretunnel authtoken YOUR_AUTH_TOKEN\n```\n\n### Configuration File\n\nCreate a `retunnel.yml` file to define multiple tunnels:\n\n```yaml\nserver_addr: ${RETUNNEL_SERVER_ENDPOINT:localhost:6400}\nauth_token: ${RETUNNEL_AUTH_TOKEN}\nlog_level: INFO\n\ntunnels:\n  - name: web\n    protocol: http\n    local_port: 8080\n    subdomain: myapp\n    \n  - name: api\n    protocol: http\n    local_port: 3000\n    auth: user:pass\n    \n  - name: ssh\n    protocol: tcp\n    local_port: 22\n```\n\nThen start all tunnels:\n\n```bash\nretunnel start retunnel.yml\n```\n\n## Environment Variables\n\n- `RETUNNEL_SERVER_ENDPOINT` - Server endpoint (default: `localhost:6400`)\n- `RETUNNEL_AUTH_TOKEN` - Authentication token\n- `RETUNNEL_LOG_LEVEL` - Logging level (DEBUG, INFO, WARNING, ERROR)\n\n## Python API\n\n```python\nimport asyncio\nfrom retunnel import ReTunnelClient, TunnelConfig\n\nasync def main():\n    # Create client\n    client = ReTunnelClient()\n    \n    # Connect to server\n    await client.connect()\n    \n    # Create HTTP tunnel\n    config = TunnelConfig(protocol=\"http\", local_port=8080)\n    tunnel = await client.request_tunnel(config)\n    \n    print(f\"Tunnel URL: {tunnel.url}\")\n    \n    # Keep running\n    await asyncio.Event().wait()\n\nasyncio.run(main())\n```\n\n## Advanced Usage\n\n### Custom Server\n\nConnect to a self-hosted ReTunnel server:\n\n```bash\nretunnel http 8080 --server your-server.com:8000\n```\n\n### Multiple Tunnels\n\nUse the configuration file to manage multiple tunnels simultaneously.\n\n### Logging\n\nSet log level for debugging:\n\n```bash\nretunnel http 8080 --log-level DEBUG\n```\n\n## CLI Commands\n\n- `retunnel http PORT` - Create HTTP tunnel\n- `retunnel tcp PORT` - Create TCP tunnel\n- `retunnel start CONFIG` - Start tunnels from config file\n- `retunnel authtoken TOKEN` - Save authentication token\n- `retunnel config` - Manage configuration\n- `retunnel version` - Show version\n- `retunnel credits` - Show open source credits\n\n## Development\n\n### Setup\n\n```bash\n# Clone repository\ngit clone https://github.com/retunnel/retunnel-client\ncd retunnel-client\n\n# Install with development dependencies\nmake install-dev\n```\n\n### Testing\n\n```bash\n# Run tests\nmake test\n\n# Run linting\nmake lint\n\n# Run type checking\nmake typecheck\n\n# Format code\nmake format\n```\n\n### Building\n\n```bash\nmake build\n```\n\n## License\n\nMIT License - see LICENSE file for details.\n\n## Credits\n\nReTunnel uses these excellent open source libraries:\n\n- aiohttp - Async HTTP client/server\n- websockets - WebSocket client/server\n- msgpack - Efficient serialization\n- typer - CLI framework\n- rich - Terminal formatting\n- pydantic - Data validation\n\n## Support\n\n- Documentation: https://docs.retunnel.com\n- Issues: https://github.com/retunnel/retunnel-client/issues\n- Email: support@retunnel.com\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frodmena-limited%2Fretunnel-client","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frodmena-limited%2Fretunnel-client","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frodmena-limited%2Fretunnel-client/lists"}