Skip to main content

hle-tui

An interactive terminal dashboard for HLE, shipped as a plugin for hle-client.

pip install hle-tui
hle tui

Installing the package is the whole integration: hle tui appears in hle --help, and uninstalling it makes the command go away again. The core client is not modified either way and never imports textual — which is the point. hle-client has to stay small enough for a pfSense or OpenWrt box, and those machines want the tunnel, not a rendering library.

What it does

Three tabs over the same service layer the CLI uses (hle_client.ops). There is no second copy of the API client, the systemd handling or the config lookup in here, and every edit shows the hle … command it stands for in the status bar, so anything done here can be scripted afterwards.

Tab Table Detail
Tunnels subdomain, live/idle, upstream service, auth mode Enter opens the tunnel: public URL, state, and editing for its access rules, gate mode, PIN, basic auth and share links
Agents name, online/offline/disabled, endpoints, version, last seen the highlighted agent's version, host, last seen, and whatever else the relay reports
Daemons installed services, scope, kind, state l tails the log

The tunnel pane covers:

Section Actions Same as
Access rules add [provider:]email, remove the selected rule hle tunnel access add/remove
Gate mode SSO or public (asks first) hle tunnel auth-mode --set
PIN set, remove (asks first) hle tunnel pin set/remove
Basic auth set user and password, remove (asks first) hle tunnel basic-auth set/remove
Share links create for 1h/24h/7d with a label, list, revoke hle tunnel share create/list/revoke

A new share link's URL is shown once, and copied to the clipboard where the terminal allows it. The relay keeps only a prefix, so that is the only time the full link exists.

On a terminal narrower than 120 columns the tunnel pane opens as its own screen instead of beside the table.

Keys

Key Where Action
Enter Tunnels Open the tunnel pane
o Tunnels Open the tunnel in a browser
d Tunnels Delete the tunnel record (asks first)
n Tunnels Show the CLI command to create a tunnel
s Daemons Restart the daemon (asks first)
l Daemons Tail the daemon's log (last 200 lines, re-read every 2s)
r anywhere Refresh now
Esc pane or screen Close it
q anywhere Quit

Anything that deletes, restarts or opens a gate asks first. A dashboard makes a keystroke cheap, which is exactly why those must not be one.

The cursor follows the row, not the position: after a refresh that reorders the list it is still on the tunnel, agent or daemon it was on.

Errors never close the dashboard. A refused key says so and says what to run; "Could not reach the relay" means exactly that.

Still CLI-only

  • Creating a tunnel (hle tunnel create), webhooks and preflight.
  • Installing, uninstalling and refreshing daemons, and following a log live (hle daemon logs -f).
  • Agent enrolment, hle agent services, forwards, hle update, hle auth.
  • The per-agent endpoint list, install method and platform: the relay's agent list does not return them yet. The pane shows them the day it does.

Options

hle tui --refresh 30     # poll the relay every 30s (0 disables polling)
hle tui --api-key hle_…  # otherwise read from HLE_API_KEY or the config file

Writing another plugin

The mechanism is a hle_client.plugins entry point pointing at a click.Command:

[project.entry-points."hle_client.plugins"]
myplugin = "my_package.plugin:command"

A plugin that fails to import is skipped with a warning rather than taking the CLI down, and one that tries to shadow a built-in command is refused. Set HLE_NO_PLUGINS=1 to skip discovery entirely.

MIT licensed, same as hle-client.

Release files for hle-tui 2609.10

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for hle-tui 2609.10
File Size Uploaded
hle_tui-2609.10.tar.gz 26.7 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for hle-tui 2609.10
File Interpreter ABI Platform
hle_tui-2609.10-py3-none-any.whl Python 3 none any Details

Total release size: 48.3 kB

Release files / hle_tui-2609.10.tar.gz

Download URL hle_tui-2609.10.tar.gz
Size 26.7 kB
Tags Source
SHA-256 checksum
How to use checksums
c84db4465e1aa5462128dd955a58271db8288aa29da05a6731cec86fe5610ab7
BLAKE2b-256 checksum
How to use checksums
2af2405b474e7c1f2830504eb9062141ce078cab667dfeabef8bca2944532612
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.9

Release files / hle_tui-2609.10-py3-none-any.whl

Download URL hle_tui-2609.10-py3-none-any.whl
Size 21.6 kB
Tags Python 3
SHA-256 checksum
How to use checksums
7585c974d1d02e218763f18956920041a55bc84b0fc174d82b87fb8eeede09af
BLAKE2b-256 checksum
How to use checksums
7081837e74085aa5a7b3331a404e1df62a98f0099c261c881ae7b0c6e3ee4fa4
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.9

Release history Release notifications | RSS feed

This release

2609.10 This release

2 release files

2609.9

2 release files

2609.8

2 release files

2609.5

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page