Deployment
Development
Deployment
Deployment covers building Ubo App, installing it on a Raspberry Pi (or Ubo Pod), and running it as a service. For end users, see Getting Started (image or install script). For developers, this page describes the deploy-to-device workflow.
What you see
- Prerequisites — SSH access to the device. Add a host in
~/.ssh/config, e.g.Host ubo-development-pod/Host ubo-development-pod-1withHostNameandUser pi. The deploy script usesubo-development-pod-$index(default index 1). Ensure the device hasubouser and/opt/ubo(e.g. from a prior image or install). - Build —
uv buildproduces a wheel indist/; the RPC workspace member is built too. Deploy script copies the latestubo_app-*.whlandubo_app_raw_bindings-*.whlto the device. - Install on device — Script installs wheels with
pip install --no-index --upgrade --force-reinstallinto the device’s venv (e.g./opt/ubo/env). With--deps, also upgrades dependencies. - Bootstrap and env — With
--bootstrap, runsubo-bootstrap, reloads systemd, restartsubo-system.service. With--env, copies.pod.dev.envinto the app package on the device for development env vars. - Run — After deploy, run the app:
poe device:deploy:restart(graceful restart via systemctl) orpoe device:deploy:kill(kill process; systemd may restart if enabled). One-time full setup:poe device:deploy:complete(deps + bootstrap + restart). - Packer —
scripts/packer/contains Packer configs (image.pkr.hcl,image-local.pkr.hcl) for building OS images that include Ubo App. - CI —
.github/workflows/(e.g.integration_delivery.yml,publish_to_pypi.yml) run tests and publish; see repo for exact steps.