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.9

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.9
File Size Uploaded
hle_tui-2609.9.tar.gz 26.7 kB Details

Built distribution (wheel)

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

Total release size: 48.3 kB

Release files / hle_tui-2609.9.tar.gz

Download URL hle_tui-2609.9.tar.gz
Size 26.7 kB
Tags Source
SHA-256 checksum
How to use checksums
1cc60f56aa6186d61161a6a7ea092494266909e476b77d76adf3e23aec7dde26
BLAKE2b-256 checksum
How to use checksums
cb765cc65475e6038ff935299d8a9bd9edf0c6c787c5a47857e12694d4e049f4
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.9-py3-none-any.whl

Download URL hle_tui-2609.9-py3-none-any.whl
Size 21.6 kB
Tags Python 3
SHA-256 checksum
How to use checksums
ddd87687ccc031b20c4d058af6e67860db8ef70693abf06c1752006fff949da0
BLAKE2b-256 checksum
How to use checksums
a01b9ef447952075dcf7614428e09ade66538b63b3d5c16d60a68abad9534b89
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.9 This release

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