Skip to main content

UnitPort local helper 鈥?headless daemon bridging local Isaac Lab / MuJoCo / resources to the UnitPort cloud canvas.

Project description

unitport — UnitPort local helper

Headless daemon that connects a local GPU / Isaac Lab host (workstation or the user's own cloud server) to the UnitPort cloud canvas. The canvas is the remote control (遥控器); this process has no GUI — only terminal output.

Authoritative design: ../knowledges/local_helper_design.md (rulings LH-D1…LH-D6, contracts C10 pairing / C11 control protocol).

What it is (and is not)

  • Is: an outbound-only WebSocket agent exposing a fixed verb set to the cloud (report capabilities, publish an asset index, receive a bundle from the user's own canvas, start/stop a training run, stream telemetry).
  • Is not: a shell, an exec server, or a GUI. The cloud can never send an arbitrary command — only the fixed verbs, only from a paired session of the same account, only bundles that originate from the user's own canvas (least-privilege red line, LH-D4 / C11).

The same binary serves execution target ① (UserServerTarget, user cloud server) and ③ (LocalHelperTarget, local host) — only the host differs (LH-D5).

Install

pip install unitport

Cross-platform (Windows + Linux). Runtime deps: websockets (the live link) and, on Python < 3.11, tomli (TOML reader). Everything else is stdlib.

CLI (headless — everything else is driven remotely from the canvas)

Command Purpose
unitport login Browser-approve device pairing; stores a refreshable helper token
unitport up (serve) Dial out to the cloud relay and serve the fixed verb set
unitport status Connection / run state, paired account, config summary
unitport config Declare Isaac/MuJoCo interpreter paths + resource roots
unitport doctor Fail-loud self-check (interpreters, deps, cloud, token)

There are deliberately no pull / train / push local subcommands — those are remote verbs, triggered from the canvas (C11 §4).

Config

  • Config dir: %APPDATA%\unitport\ (Windows) · $XDG_CONFIG_HOME/unitport/ or ~/.config/unitport/ (POSIX). Override with UNITPORT_HOME.
  • config.toml — cloud base URL, engine interpreter paths, resource_roots, workspace dir. Human-editable; also managed by unitport config.
  • token.json — the helper token (secret; chmod 600 on POSIX). Never printed, never logged.
  • device.json — the persistent (non-secret) device_id.

Status

Under active construction (phases LH-P1…LH-P8, Isaac Lab first). See the design doc §12 for the phase map. This tree currently implements the local foundation (config, capability detection, doctor, CLI) plus the pairing/transport clients; the workers/relay Durable Object cloud side lives in ../workers/relay.

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

unitport-0.0.13.tar.gz (72.9 kB view details)

Uploaded Source

Built Distribution

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

unitport-0.0.13-py3-none-any.whl (72.6 kB view details)

Uploaded Python 3

File details

Details for the file unitport-0.0.13.tar.gz.

File metadata

  • Download URL: unitport-0.0.13.tar.gz
  • Upload date:
  • Size: 72.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.7

File hashes

Hashes for unitport-0.0.13.tar.gz
Algorithm Hash digest
SHA256 3f662e3a78be69986af49df8d5b129cc34d19de25d64b705d8953d564a2fbc4a
MD5 7d36b43bb2f0fc88c72fd33f0e9919b1
BLAKE2b-256 193fb060d80c3ecc8f8be426fbf30ebf99bc9024d5e369048138bfccf5ee2268

See more details on using hashes here.

File details

Details for the file unitport-0.0.13-py3-none-any.whl.

File metadata

  • Download URL: unitport-0.0.13-py3-none-any.whl
  • Upload date:
  • Size: 72.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.7

File hashes

Hashes for unitport-0.0.13-py3-none-any.whl
Algorithm Hash digest
SHA256 a8ac7885310378e96b5ebfce7c29725bbde5f2274b484c40df47040b0a3acd9e
MD5 b4348da5299ae8a2e9ad8dfe23fccc20
BLAKE2b-256 8b3fad4cac365cd06ed959e6e32ca7bf593609201049097648f37fb2d70f8a4e

See more details on using hashes here.

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