Skip to main content
Pre-release

This release is a pre-release and may not be stable for production use.

ubo-gui-client

The Kivy GUI client for ubo-app. It is a thin renderer: it holds no application state and contains no business logic. It connects to the headless core over gRPC, subscribes to the computed view stream, draws it, and dispatches the user's input back as actions.

It is the reference implementation of the client contract — its C/LVGL sibling (ubo_lvgl/) and the TUI (ubo_app/tui/) render the same stream.

Running

uv run ubo-core                      # the headless core, serves 127.0.0.1:50051
uv run --directory ubo_app/gui ubo-gui-client
Flag Meaning Default
--host gRPC server host localhost
--port gRPC server port 50051
-v / --verbose DEBUG logging off

It installs into its own virtualenv, separate from the core's — it depends on headless-kivy and ubo-gui, which the headless core deliberately does not. OTA updates and poe device:deploy install it as a separate wheel. Type-check it with uv run poe typecheck:gui, which targets that venv.

What it renders

The core sends serializable ViewData; nothing callable or Kivy-shaped crosses the wire. view_renderer.py turns each view into widgets:

Area Modules
App shell & lifecycle app.py, __main__.py, splash.py, display.py
gRPC transport client.py
View dispatch view_renderer.py
Menu chrome menu_central.py, menu_header.py, menu_footer.py, menu_notification_handler.py
Input keyboard.py
Device eeprom.py, constants.py, gui_utils.py

widgets/ holds the generic render widgets, registered by kind in GENERIC_RENDER_WIDGETS: qr_code, qr_code_carousel, readings, status, text_viewer, image_viewer, frame_stream — plus chat, home_page, notification_info and the video_viewer.

Two rules that bite

  • The application registry is local. The core's store holds an ApplicationStackItem(application_id=...), never a widget class. Full-screen pages must be registered twice: with register_application(...) in ubo_app/store/ubo_actions.py on the core side, and again in this process's own registry (pages/__init__.py), which exists precisely because the core's registry is not importable from this venv.
  • Kivy work belongs on the main thread. gRPC callbacks arrive on other threads; anything touching widgets has to hop back via @mainthread.

See .claude/rules/coding-style.md for the serializable-state rules this client depends on, and docs/architecture/UI_REDUX_ARCHITECTURE.md for the store/view model.

Metadata

Release files for ubo-gui-client 2.0.1.dev260819103102489955

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

Source distribution (sdist)

Source distribution for ubo-gui-client 2.0.1.dev260819103102489955
File Size Uploaded
ubo_gui_client-2.0.1.dev260819103102489955.tar.gz 90.6 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for ubo-gui-client 2.0.1.dev260819103102489955
File Interpreter ABI Platform
ubo_gui_client-2.0.1.dev260819103102489955-py3-none-any.whl Python 3 none any Details

Total release size: 195.8 kB

Release files / ubo_gui_client-2.0.1.dev260819103102489955.tar.gz

Download URL ubo_gui_client-2.0.1.dev260819103102489955.tar.gz
Size 90.6 kB
Tags Source
SHA-256 checksum
How to use checksums
5cf444e216da269be94954f16bf2d4c235df78dd40ba8556f50ea1b6e33ab410
BLAKE2b-256 checksum
How to use checksums
9be7a057a10c0eafe245370cdf05da30e1c5bed301d3c20d9cc0fbdfde992c39
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Aug 20, 2026.

Transparency log

Release files / ubo_gui_client-2.0.1.dev260819103102489955-py3-none-any.whl

Download URL ubo_gui_client-2.0.1.dev260819103102489955-py3-none-any.whl
Size 105.1 kB
Tags Python 3
SHA-256 checksum
How to use checksums
9e243e3e1cf714742a31e7b5cae1e9c0b00f9fc7e0c911fef93d27df0e6b778e
BLAKE2b-256 checksum
How to use checksums
4d55898adbd39ebb462840e784339c04c9e3d70d4eb2a75fbeda0b6f02190c8a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Aug 20, 2026.

Transparency log

Release history Release notifications | RSS feed

2.1.0

2 release files

This release

2.0.0

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