This release is a pre-release and may not be stable for production use.
LUML Relay
Relay and agent that expose local web services through LUML. The agent runs next to a service on a machine nobody can reach, such as a job on a cluster, and keeps one outgoing connection to a relay. The relay serves the service under a hostname of its own, and LUML decides who may open it.
LUML uses it for relayed flows: a Flow instance that runs next to an experiment and is opened from the LUML app.
Installation
pip install "luml-relay[luml]"
The luml extra lets the agent start sessions at LUML with an API key. The server extra is only needed to run a relay.
To expose a flow, install the SDK with the flow extra instead. It brings the relay along and starts the agent for you:
pip install "luml_sdk[flow]" lumlflow
Exposing a service
luml-relay expose exposes a service that listens on a loopback port. It reads the LUML API key from LUML_API_KEY and starts a session in an orbit that has a relay assigned:
export LUML_API_KEY="luml_your_api_key"
luml-relay expose 5000 --organization "My organization" --orbit "Research" --label "resnet-sweep"
The command prints the session's public address and serves it until it is stopped or LUML ends the session. --bearer-token sends a bearer token to the service with every request, such as Flow's session token from the launch URL of lumlflow ui.
Running a relay
A relay is registered in the Relays tab of the organization settings in LUML, with a label, a base domain and the wss address agents connect to. Registering shows the relay's token once.
The relay is published as the container image ghcr.io/luml-ai/luml-relay. It reads the address of LUML from LUML_BASE_URL and its token from LUML_RELAY_TOKEN, and it listens on port 8080:
docker run -d -p 8080:8080 \
-e LUML_BASE_URL=https://api.luml.ai \
-e LUML_RELAY_TOKEN=dfsrelay_your_relay_token \
ghcr.io/luml-ai/luml-relay:latest
The same server runs from the package with pip install "luml-relay[server]" and luml-relay serve. luml-relay serve --help lists its limits.
The relay serves plain HTTP, so TLS is terminated in front of it. The base domain needs a wildcard DNS record and a wildcard certificate. Set LUML_RELAY_COOKIE_SECRET to keep viewers' browser sessions across restarts.
Documentation
Metadata
Release files for luml-relay 0.1.0rc1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| luml_relay-0.1.0rc1-py3-none-any.whl | Python 3 | none | any | Details for luml_relay-0.1.0rc1-py3-none-any.whl |
Release files / luml_relay-0.1.0rc1-py3-none-any.whl
| Download URL | luml_relay-0.1.0rc1-py3-none-any.whl |
|---|---|
| Size | 36.2 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
27e4a03756b263009ab8860f368b8ce17621c2e7a4a16c1814011533bf446d95
|
|
BLAKE2b-256 checksum How to use checksums |
70f73aa52ca51f3c2790d06540d2cd909ab22279f05d97d2c0d75cfc96b67623
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.13.7 {"installer":{"name":"uv","version":"0.13.7","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Security for luml-relay 0.1.0rc1
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.