Skip to main content

A simple TCP tunnel over WebSocket.

Project description

# yanghao.portlink

> Expose your local port to the public internet with a single command.

```bash
pip install yanghao.portlink
portlink tcp 8000

🚀 Quick Start

  1. Install

    pip install yanghao.portlink
    
  2. Expose a local TCP service

    portlink tcp 8000
    

    Output:

    ✓ Tunnel created
    Public URL: tcp://abc123.portlink.dev:8000 -> localhost:8000
    
  3. Programmatic usage

    from yanghao.portlink import Client
    
    async with Client(token="YOUR_TOKEN") as c:
        url = await c.expose(8000, protocol="http")
        print(url)
    

✨ Features

  • Zero-config – one binary, one command
  • TCP protocol – simple and reliable
  • Auto-reconnect – survives network hiccups
  • Async & sync APIs – fits any codebase
  • Cross-platform – Linux, macOS, Windows

📦 Installation

Method Command
PyPI pip install yanghao.portlink
Source git clone https://github.com/yahao333/portlink && pip install -e .

Requires Python 3.8+.


🛠 Usage

CLI

Command Description
portlink tcp 8000 Expose local port 8000
portlink tcp 22 Expose local SSH
portlink --config ~/.portlink.yml Use custom config

Python API (sync)

from yanghao.portlink import Client

client = Client(token="YOUR_TOKEN")
url = client.expose(8000, protocol="tcp")
print(url)  # tcp://abc123.portlink.dev:8000

Python API (async)

import asyncio
from yanghao.portlink import AsyncClient

async def main():
    async with AsyncClient(token="YOUR_TOKEN") as c:
        url = await c.expose(8000, protocol="tcp")
        print(url)  # tcp://abc123.portlink.dev:8000

asyncio.run(main())

⚙️ Configuration

Create ~/.portlink.yml:

token: YOUR_TOKEN
server: tcp://tunnel.portlink.dev
region: auto

Environment variables are also supported:

export PORTLINK_TOKEN="YOUR_TOKEN"

🔐 Authentication

  1. Sign in → Settings → API Tokens
  2. Copy the token, export or save in config.

🤝 Contributing

  1. Fork the repo
  2. pip install -e ".[dev]"
  3. pytest (≥ 90 % coverage required)
  4. Open a PR

📄 License

MIT © 2025 yahao333


💬 Help

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

yanghao_portlink-0.0.4.tar.gz (10.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

yanghao_portlink-0.0.4-py3-none-any.whl (6.1 kB view details)

Uploaded Python 3

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page