Skip to main content

Boot & Target Utility - image flashing and provisioning for bare-metal systems

Project description

bty: Boot & Target Utility

CI Docs Documentation PyPI Python License: GPL v3

Bare-metal provisioning toolkit. Flashes pre-built ("cooked") system images onto target disks (locally from a USB stick or remotely over PXE) and configures them via cloud-init or CIJOE workflows. Designed for both ad-hoc one-off provisioning and DevOps fleet operation.

bty is one Python package: the bty module, distributed on PyPI as bty-lab, with three console-script entry points:

  • bty: main CLI (image inspection, target discovery, flashing, provisioning).
  • bty-cli: command-line client for a remote bty-web server (bty-cli login, bty-cli logout, future fleet ops).
  • bty-tui: terminal UI (requires the tui extra).
  • bty-web: HTTP server with browser UI (requires the web extra).

Plus a sibling appliance-image builder under bty-media/ that produces the bootable USB live image and the server appliance image.

Install

pipx install bty-lab            # CLI + bty-cli, zero third-party Python deps
pipx install "bty-lab[tui]"     # adds the bty-tui terminal UI
pipx install "bty-lab[web]"     # adds the bty-web HTTP server
pipx install "bty-lab[all]"     # everything

The CLI flow (bty list disks, bty inspect image, bty flash --dry-run) needs only Python 3.11+ and stdlib; full flashing (bty flash --yes) relies on system binaries (dd, qemu-img, zstd, lsblk, etc.) the operator's distribution is expected to provide.

Status

This is the working tree of an in-progress rewrite. The original Flask app and PXE/syslinux configuration have been removed; the new foundation is being laid out per PLAN.md.

Planning and design

  • PLAN.md: roadmap and design intent.
  • docs/: full documentation (Sphinx + MyST).

Development

uv is the project's dependency manager. Install it via pipx if you don't already have it:

pipx install uv

Then sync the dev environment:

uv sync --all-extras --group dev

Run the test suite, linter, and type-checker:

uv run pytest
uv run ruff check
uv run mypy src

Documentation

The docs tooling installs as a separate pipx app:

pipx install ./docs/tooling

Then, from inside docs/:

bty-docs-serve              # live-rebuild dev server on :8000
bty-docs-build-html         # one-shot HTML build
bty-docs-build-pdf          # one-shot PDF build (requires LaTeX)

License

GPL-3.0-only.

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

bty_lab-0.2.0.tar.gz (603.9 kB view details)

Uploaded Source

Built Distribution

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

bty_lab-0.2.0-py3-none-any.whl (460.6 kB view details)

Uploaded Python 3

File details

Details for the file bty_lab-0.2.0.tar.gz.

File metadata

  • Download URL: bty_lab-0.2.0.tar.gz
  • Upload date:
  • Size: 603.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for bty_lab-0.2.0.tar.gz
Algorithm Hash digest
SHA256 d8776eb3c6daf4c33dbdf77f6e80c8988eb0aef352be127b6f3c06096ade12ff
MD5 0b6eb2e2c362a4a348d643daeb0855ba
BLAKE2b-256 d99d99bc53f13c9e20f3a10f7627e19a90605b00e00d8465dfd43617dd54a4bd

See more details on using hashes here.

Provenance

The following attestation bundles were made for bty_lab-0.2.0.tar.gz:

Publisher: release.yml on safl/bty

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file bty_lab-0.2.0-py3-none-any.whl.

File metadata

  • Download URL: bty_lab-0.2.0-py3-none-any.whl
  • Upload date:
  • Size: 460.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for bty_lab-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 cd6998e6834a495d0b5dbf88e136da1d0315616c998098879cbaf1067bbe80fd
MD5 b9b38de5a7b7b61d581b1ab3f45a2247
BLAKE2b-256 feddf4069bb4891795395c35f6e28d0cf67b88570318d4cc0063f415ccec0ecf

See more details on using hashes here.

Provenance

The following attestation bundles were made for bty_lab-0.2.0-py3-none-any.whl:

Publisher: release.yml on safl/bty

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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