govee-toolkit (Python)
Control Govee devices over the LAN from Python, with the undocumented commands observed on the wire.
Documentation: gvetk.com
Community project. Not affiliated with, sponsored by or endorsed by Govee.
The package is a PyO3 binding over the Rust core in
packages/rust, not a second implementation of the protocol. It builds
no frame of its own: the core builds every byte, and the conformance vectors in
the repository check the core. Arguments in, exact bytes out.
Install
pip install govee-toolkit
Python 3.11 and up. The wheel is abi3, so one wheel serves every version from
3.11. The release builds wheels for Linux and Windows on x86_64 and
aarch64, for macOS on aarch64, for Linux on armv7, and for musl on
x86_64, aarch64 and armv7.
The release publishes no source distribution. On a platform with no wheel, build
the wheel from a checkout of the repository with a Rust toolchain. The core
embeds the device files at build time, so a build needs the devices/
directory.
The wheel carries the device catalog, so there is no data file to install.
govee_toolkit.CORE_VERSION reports the version of the core that the wheel was
built from.
A first command
The API is asyncio only.
import asyncio
from govee_toolkit import Govee
async def main():
# Reads $XDG_CONFIG_HOME/govee-toolkit/config.yaml.
govee = await Govee.start()
devices = await govee.scan()
for device in devices:
print(device.id, device.sku, device.modes)
handle = govee.device(devices[0].id)
served = await handle.send("power", on=True)
print("served over", served.mode)
await govee.close()
asyncio.run(main())
handle.send() takes any command the device file declares. Each value is read
under the type that entry declares for the argument, so [0, 1, 2] is zone
indices, byte values or one color as the file says. The common ones also
have a method: power(), brightness(), color(), color_temp(), music(),
segment(), gradient() and provision_wifi(). handle.read() and
handle.status() ask the device instead. handle.open_stream() opens a segment
stream and paints frame by frame.
Modes
A command travels over your Wi-Fi (lan), over Bluetooth (ble) or through
Govee's servers (cloud). You enable the modes per device, in the configuration
file. One enabled mode means one mode: an unreachable device fails with an error
and says so. The package never substitutes a mode.
handle.serving_mode() names the mode a command goes over now, from the state
the SDK recorded. await handle.ensure_known() scans first if no mode knows the
device yet, then answers the same question.
gvetk.com/docs/modes has the rules.
Where command names come from
power, brightness and color are entries in the device's YAML file in
devices/, not identifiers in this package. handle.spec() returns
what that file declares for your device. A name the device does not define, or
an argument outside the declared range, is an error before anything reaches the
network.
Errors
GoveeError is the base class; CodecError, TransportError and ConfigError
are its subclasses. The subclass says where the failure happened: CodecError
if the command never reached the wire, TransportError if the link failed, and
ConfigError if a setting cannot work. Every one of them carries .code, the
stable identifier that the core gives the failure. Match on the code, not on
the message: the message is written for a person and can change.
A value the package cannot read at all, such as a color that is not three whole
numbers, is a ValueError. It carries no code, because the core never saw it.
from govee_toolkit import GoveeError
try:
await handle.brightness(50)
except GoveeError as err:
print(err.code) # for example "unknown_command" or "no_mode_available"
Next
| You want to | Go to |
|---|---|
| Install it and send a first command | gvetk.com/docs/start |
| Know whether your model works | gvetk.com/devices |
| Pick and configure the modes | gvetk.com/docs/modes |
| Read every command and method | gvetk.com/reference |
| Report a device, or add one | devices/README.md |
License
Release files for govee-toolkit 0.1.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Built distributions (wheels)
Total release size: 39.9 MB
Release files / govee_toolkit-0.1.0-cp311-abi3-win_arm64.whl
| Download URL | govee_toolkit-0.1.0-cp311-abi3-win_arm64.whl |
|---|---|
| Size | 3.9 MB |
| Tags | CPython 3.11 Windows ARM64 abi3 |
|
SHA-256 checksum How to use checksums |
0a3d688e6f09ebe40bfe5f57abdd96548591e0fd9658cd1ba653cdddb15ef122
|
|
BLAKE2b-256 checksum How to use checksums |
c4c065aa05b4fe12154bd861e2496473fe9600ebcb8a6610ec00b0016ba14cb7
|
| 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 15, 2026.
Transparency logRelease files / govee_toolkit-0.1.0-cp311-abi3-win_amd64.whl
| Download URL | govee_toolkit-0.1.0-cp311-abi3-win_amd64.whl |
|---|---|
| Size | 4.0 MB |
| Tags | CPython 3.11 Windows x86-64 abi3 |
|
SHA-256 checksum How to use checksums |
35ec7d890fc7cf4c95c869ee3db86c6b071a42bdf04f2fd563b4fba3c80cc54d
|
|
BLAKE2b-256 checksum How to use checksums |
2a5fc208c258bde2594121cadfd7ed1f09eecbb31e0113aec324d8a3e6b96285
|
| 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 15, 2026.
Transparency logRelease files / govee_toolkit-0.1.0-cp311-abi3-musllinux_1_2_x86_64.whl
| Download URL | govee_toolkit-0.1.0-cp311-abi3-musllinux_1_2_x86_64.whl |
|---|---|
| Size | 5.1 MB |
| Tags | CPython 3.11 Linux musl 1.2+ x86-64 abi3 |
|
SHA-256 checksum How to use checksums |
4064d4d0511070864570a747dc77400b0f30b71b06678b5a8a05b1d05205ce7f
|
|
BLAKE2b-256 checksum How to use checksums |
beef9236adae957ef54d71a0ead4fdf8a854bee83e8d70869d7d45d1285090c3
|
| 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 15, 2026.
Transparency logRelease files / govee_toolkit-0.1.0-cp311-abi3-musllinux_1_2_armv7l.whl
| Download URL | govee_toolkit-0.1.0-cp311-abi3-musllinux_1_2_armv7l.whl |
|---|---|
| Size | 4.5 MB |
| Tags | CPython 3.11 Linux musl 1.2+ ARMv7l abi3 |
|
SHA-256 checksum How to use checksums |
da7e04aa1427090af876bc9082446509866f5cee73ab4e2f9758acccac0a006d
|
|
BLAKE2b-256 checksum How to use checksums |
b960ad56c827e36263326fccdc172b6c11c524485a2ff265a5bba21488030a06
|
| 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 15, 2026.
Transparency logRelease files / govee_toolkit-0.1.0-cp311-abi3-musllinux_1_2_aarch64.whl
| Download URL | govee_toolkit-0.1.0-cp311-abi3-musllinux_1_2_aarch64.whl |
|---|---|
| Size | 4.8 MB |
| Tags | CPython 3.11 Linux musl 1.2+ ARM64 abi3 |
|
SHA-256 checksum How to use checksums |
bd24eb55eb9e1cadd5aaf26310f67fa027e2013f959820b8c78ede30a682b117
|
|
BLAKE2b-256 checksum How to use checksums |
ce9c16165c6c0b52d4aab6ac8553b807262c3586c3f624d6aab0857f963d76d8
|
| 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 15, 2026.
Transparency logRelease files / govee_toolkit-0.1.0-cp311-abi3-manylinux_2_38_x86_64.whl
| Download URL | govee_toolkit-0.1.0-cp311-abi3-manylinux_2_38_x86_64.whl |
|---|---|
| Size | 4.8 MB |
| Tags | CPython 3.11 Linux glibc 2.38+ x86-64 abi3 |
|
SHA-256 checksum How to use checksums |
519e2a7a059f51de965b4769fc4c11163235d84339c86f9af98591f23f2e53bf
|
|
BLAKE2b-256 checksum How to use checksums |
1f2a0d64d4a9a1a5c2c5aee80617ce7862384912d83f7590ccf602be02fde5b4
|
| 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 15, 2026.
Transparency logRelease files / govee_toolkit-0.1.0-cp311-abi3-manylinux_2_38_aarch64.whl
| Download URL | govee_toolkit-0.1.0-cp311-abi3-manylinux_2_38_aarch64.whl |
|---|---|
| Size | 4.6 MB |
| Tags | CPython 3.11 Linux glibc 2.38+ ARM64 abi3 |
|
SHA-256 checksum How to use checksums |
6e3f58ea8d0a00d0caf54bae15b9f2f674181bfbfc04af3dba5eb437af29497e
|
|
BLAKE2b-256 checksum How to use checksums |
ad71a6e57c1ce3449f9061efcd59c96b2272b1cfef10f186cabf396478e837da
|
| 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 15, 2026.
Transparency logRelease files / govee_toolkit-0.1.0-cp311-abi3-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
| Download URL | govee_toolkit-0.1.0-cp311-abi3-manylinux_2_17_armv7l.manylinux2014_armv7l.whl |
|---|---|
| Size | 4.2 MB |
| Tags | CPython 3.11 Linux glibc 2.17+ ARMv7l abi3 |
|
SHA-256 checksum How to use checksums |
cea61f959923a4403587deb333453a5b1bf46d57c5ef36ce41cc196ecde719f2
|
|
BLAKE2b-256 checksum How to use checksums |
70bab70d1730f4ad27c42b8a5de91bf96d75a1a063396ab9380d8b439f2c6366
|
| 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 15, 2026.
Transparency logRelease files / govee_toolkit-0.1.0-cp311-abi3-macosx_11_0_arm64.whl
| Download URL | govee_toolkit-0.1.0-cp311-abi3-macosx_11_0_arm64.whl |
|---|---|
| Size | 4.1 MB |
| Tags | CPython 3.11 abi3 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
9283750436d8cac4cc533e195a7140b4f943bcf1cbc47d0d773fbbde5efe0d42
|
|
BLAKE2b-256 checksum How to use checksums |
515d0d1933acb16d86b2f455bc86e5f6121cca645d2d12a88b4deefabfc8a58c
|
| 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 15, 2026.
Transparency log