Skip to main content

xbloom-py

Async Python library for xBloom Studio coffee brewers: the BLE protocol, recipe validation, over-the-air firmware updates, and the optional cloud account API.

Unofficial, and not affiliated with or endorsed by xBloom. See Disclaimer.

Install

pip install xbloom-py            # pure-python core: spec, recipes, validation
pip install "xbloom-py[ble]"     # + local Bluetooth control
pip install "xbloom-py[cloud]"   # + cloud account, recipe sync, firmware check
pip install "xbloom-py[all]"     # everything

Import as xbloom:

from xbloom import spec, recipe_validate

Dependencies are declared with lower bounds only and no upper pins, so the package drops into an environment that already pins these without fighting it.

What is in it

Module Needs What it does
spec — Machine constants: ranges, enums, pattern and unit maps. The single source of truth.
recipe_validate — Validate and normalise recipe dictionaries.
brew_scale — Scale a recipe's dose and water.
models — Recipe and reading dataclasses.
exceptions — XBloomError, XBloomAPIError.
ble [ble] at runtime Frame encoding/decoding, ACK-gated send/confirm, packet builders.
ota [ble] at runtime Validated, arm-gated firmware flashing. Read Firmware updates first.
mode_listener [ble] at runtime Live knob and scale event stream.
client [cloud] Share-link recipe fetching.
cloud [cloud] Account login, recipe CRUD, firmware version check.

ble, ota and mode_listener import their Bluetooth dependencies lazily, so they can be imported for packet construction with no extras installed.

Development

uv sync --all-extras
uv run pytest

The suite runs without extras too; test_cloud.py is skipped when aiohttp and cryptography are absent.

Firmware updates

Read this before you use ota. Firmware flashing is the one thing in this library that can permanently damage your machine. Use it only if you accept that.

ota verifies the update's MD5 before anything is sent, and every block is acknowledged by the machine as it is written. That makes a bad flash unlikely — it does not make it impossible. Bluetooth is a wireless link, and a wireless link can drop. If it drops in the middle of a firmware write, the machine can be left unbootable, with no way to recover it over BLE.

If you choose to use it:

  • Keep the machine powered and close to the Bluetooth adapter for the whole flash.
  • Never start a flash during a brew.
  • Don't kill the process, or let the host sleep, while one is running.

You do this entirely at your own risk. This is unofficial software talking to an undocumented protocol that was worked out by inspection, and it is not endorsed by or connected to xBloom in any way. The authors and contributors accept no responsibility and no liability for any damage to your machine, loss of warranty, or any other loss arising from using this library — the firmware updater above all. If that isn't a risk you want to take, don't import ota; everything else works without it.

Disclaimer

This is an independent, community project. It is not affiliated with, authorized, or endorsed by xBloom. "xBloom" is used only to say which machine this talks to. It communicates with the machine over its local BLE protocol, worked out for interoperability, which may change at any time with a firmware update and break this library without warning.

The software is provided as is, without warranty of any kind, express or implied. You use it at your own risk, and the authors and contributors are not liable for any damage, loss, or injury resulting from its use. See the Firmware updates section for the risk that matters most.

License

MIT

Metadata

Release files for xbloom-py 0.3.1

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

Source distribution (sdist)

Source distribution for xbloom-py 0.3.1
File Size Uploaded
xbloom_py-0.3.1.tar.gz 165.6 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for xbloom-py 0.3.1
File Interpreter ABI Platform
xbloom_py-0.3.1-py3-none-any.whl Python 3 none any Details

Total release size: 232.7 kB

Release files / xbloom_py-0.3.1.tar.gz

Download URL xbloom_py-0.3.1.tar.gz
Size 165.6 kB
Tags Source
SHA-256 checksum
How to use checksums
71a38bb3689cf6ba554d4f6bfeb53da5f0cdeed44718171775e770f84cb3ecbb
BLAKE2b-256 checksum
How to use checksums
a13650806bf542ba61dc7bde6d285fd706d4e7dfe7db2d35ee3191e3e1a348b7
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 Sep 21, 2026.

Transparency log

Release files / xbloom_py-0.3.1-py3-none-any.whl

Download URL xbloom_py-0.3.1-py3-none-any.whl
Size 67.1 kB
Tags Python 3
SHA-256 checksum
How to use checksums
8289ccef5da53e1d91647042f4dff4c8f0cdf9596a0596156b2d6eb0af6863bb
BLAKE2b-256 checksum
How to use checksums
2deee30359c6ff30c6a2562ebdc2a40bc360a90429a697bed920d9a0358e0e2a
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 Sep 21, 2026.

Transparency log

Release history Release notifications | RSS feed

0.4.0

2 release files

This release

0.3.1 This release

2 release files

0.3.0

2 release files

0.2.0

2 release files

0.1.3

2 release files

0.1.2

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