Skip to main content

Home Lab Everywhere — Expose homelab services to the internet with built-in SSO

Project description

HLE Client

PyPI Python License CI

Home Lab Everywhere — Expose homelab services to the internet with built-in SSO authentication and WebSocket support.

One command: hle expose --service http://localhost:8080

Your local service gets a public URL like myapp-x7k.hle.world with automatic HTTPS and SSO protection.

Install

pip (or pipx)

pip install hle-client
# or
pipx install hle-client

Curl installer

curl -fsSL https://get.hle.world | sh

Installs via pipx (preferred), uv, or pip-in-venv. Supports --version:

curl -fsSL https://get.hle.world | sh -s -- --version 0.4.0

Homebrew

brew install hle-world/tap/hle-client

Quick Start

  1. Sign up at hle.world and create an API key in the dashboard.

  2. Expose a service:

hle expose --service http://localhost:8080 --api-key hle_your_key_here

The API key is saved to ~/.config/hle/config.toml after first use, so you only need to provide it once.

CLI Usage

hle expose

Expose a local service to the internet.

hle expose --service http://localhost:8080              # Basic usage
hle expose --service http://localhost:8080 --label ha   # Custom subdomain label
hle expose --service http://localhost:3000 --auth none  # Disable SSO
hle expose --service http://localhost:8080 --no-websocket  # Disable WS proxying

Options:

  • --service — Local service URL (required)
  • --label — Service label for the subdomain (e.g. haha-x7k.hle.world)
  • --auth — Auth mode: sso (default) or none
  • --websocket/--no-websocket — Enable/disable WebSocket proxying (default: enabled)
  • --api-key — API key (also reads HLE_API_KEY env var, then config file)
  • --relay-host — Relay server host (default: hle.world)
  • --relay-port — Relay server port (default: 443)

hle tunnels

List your active tunnels.

hle tunnels

hle access

Manage per-tunnel email allow-lists for SSO access.

hle access list myapp-x7k                            # List access rules
hle access add myapp-x7k friend@example.com           # Allow an email
hle access add myapp-x7k dev@co.com --provider github # Require GitHub SSO
hle access remove myapp-x7k 42                        # Remove rule by ID

hle pin

Manage PIN-based access control for tunnels.

hle pin set myapp-x7k       # Set a PIN (prompts for 4-8 digit PIN)
hle pin status myapp-x7k    # Check PIN status
hle pin remove myapp-x7k    # Remove PIN

hle share

Create and manage temporary share links.

hle share create myapp-x7k                         # 24h link (default)
hle share create myapp-x7k --duration 1h           # 1-hour link
hle share create myapp-x7k --max-uses 5            # Limited uses
hle share list myapp-x7k                           # List share links
hle share revoke myapp-x7k 42                      # Revoke a link

Global Options

hle --version    # Show version
hle --debug ...  # Enable debug logging

Configuration

The HLE client stores configuration in ~/.config/hle/config.toml:

api_key = "hle_your_key_here"

API key resolution order:

  1. --api-key CLI flag
  2. HLE_API_KEY environment variable
  3. ~/.config/hle/config.toml

Development

git clone https://github.com/hle-world/hle-client.git
cd hle-client
uv venv && source .venv/bin/activate
uv pip install -e ".[dev]"

# Run tests
pytest

# Lint
ruff check src/ tests/
ruff format --check src/ tests/

License

MIT — see LICENSE.

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

hle_client-1.0.1.tar.gz (27.3 kB view details)

Uploaded Source

Built Distribution

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

hle_client-1.0.1-py3-none-any.whl (19.5 kB view details)

Uploaded Python 3

File details

Details for the file hle_client-1.0.1.tar.gz.

File metadata

  • Download URL: hle_client-1.0.1.tar.gz
  • Upload date:
  • Size: 27.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for hle_client-1.0.1.tar.gz
Algorithm Hash digest
SHA256 cbc6e5c44a17439ba591ed6bdff67f585ba931d4d0fc96ab3aed8c5c4bd6ea48
MD5 a2a83ee6412fdaa38c4eb7e9bfd02848
BLAKE2b-256 ebb68464424c30066abe181b168eac8f0272edeb551b87f02ba7d4f250cb0be6

See more details on using hashes here.

Provenance

The following attestation bundles were made for hle_client-1.0.1.tar.gz:

Publisher: publish.yml on hle-world/hle-client

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file hle_client-1.0.1-py3-none-any.whl.

File metadata

  • Download URL: hle_client-1.0.1-py3-none-any.whl
  • Upload date:
  • Size: 19.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for hle_client-1.0.1-py3-none-any.whl
Algorithm Hash digest
SHA256 9155bf489345de0cc3d8911b5de9ccd3f354c0a98b1685827bc4ce59d6cc98c4
MD5 5995d18bb2daf40adb7323eefcb6b9e0
BLAKE2b-256 c0db7214db207087d7d9acb1ac5d51170a243a0ed4bc9818d237ddaff8fa6067

See more details on using hashes here.

Provenance

The following attestation bundles were made for hle_client-1.0.1-py3-none-any.whl:

Publisher: publish.yml on hle-world/hle-client

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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