Skip to main content

Gadget Panda

One Python host. Three toys. Infinite maker projects.

IDEA → CODE → PROTOTYPE → COMMUNITY

Open-source runtime for makers who want raw sensors and real control — not a locked wellness app.

Device Link What you get
RING503PANDA Bluetooth LE PPG · IMU · HR/HRV · temp · SpO₂ · sport/health · battery
SoftDog (X1) Bluetooth LE Actions · move/hold · program queue · web remote
FLOW-UFO Wi‑Fi UDP + RTSP Stick loop · takeoff/land · FPV remote · Wi‑Fi join helpers

Runs on Mac · Linux · Windows · Raspberry Pi.

pip install 'gadgetpanda[ui]'
gadgetpanda ring ui --demo    # http://127.0.0.1:8765
gadgetpanda dog ui --demo     # http://127.0.0.1:8766
gadgetpanda drone ui --demo   # http://127.0.0.1:8767

Why Gadget Panda

  • Host-side Python — scan, connect, stream, command from your laptop or Pi
  • Realtime UIs included (Tesla-inspired black / red / gold) when you install [ui]
  • Fine-grained APIs — event callbacks, CLI shells, MQTT bridge (optional)
  • MIT — fork it, ship it, teach with it

Ring — wear it, stream it

Heart rate, PPG waveform, 6-axis IMU, temperature, SpO₂, sport/health packs.

import asyncio
from gadgetpanda import Ring

async def main():
    ring = await Ring.find()
    ring.on("heart_rate", lambda s: print("HR", s.bpm))
    ring.on("imu", lambda samples: print(samples[0] if samples else ""))
    ring.on("ppg", lambda samples: print("ppg", len(samples)))
    async with ring:
        await ring.set_raw_enabled(True)
        await asyncio.Event().wait()

asyncio.run(main())
gadgetpanda ring scan
gadgetpanda ring live
gadgetpanda ring ppg
gadgetpanda ring ui --mode ppg

Dashboard modes: all · BLE HR · PPG+HR · vitals · motion · activity
Docs: docs/concept.md · docs/protocol.md


SoftDog — play, program, remote

BLE fun dog (X1 profile): sit, jump, voice FX, directional hold, program sequences.

gadgetpanda dog scan
gadgetpanda dog connect <addr> --shell
gadgetpanda dog action <addr> sit_down
gadgetpanda dog move <addr> forward
gadgetpanda dog ui <addr>          # React remote @ :8766
gadgetpanda dog ui --demo
from gadgetpanda.dog import Dog, Action, Move

async with Dog(address) as dog:
    await dog.action(Action.SIT_DOWN)
    await dog.hold_move(Move.FORWARD, seconds=1.0)
    await dog.run_program([Action.JUMP, Move.TURN_LEFT, Action.VOICE])

Docs: docs/dog/concept.md · docs/dog/protocol.md


FLOW-UFO — stick, fly, see

Wi‑Fi mini drone (GL stick frames): 50 ms stick loop, heartbeat, takeoff/land, RTSP preview.

# Join the craft hotspot first (Mac/Linux helpers included)
gadgetpanda drone wifi join "FLOW-UFO-xxxx"
gadgetpanda drone wifi status
gadgetpanda drone scan
gadgetpanda drone ui --wifi "FLOW-UFO-xxxx" --model flow
gadgetpanda drone ui --demo
from gadgetpanda.drone import Drone

async with Drone("192.168.1.1", model="flow") as drone:
    await drone.command("takeoff")
    await drone.hold_stick("forward", seconds=1.5)
    await drone.command("land")

FPV remote at http://127.0.0.1:8767 (needs craft Wi‑Fi + ffmpeg via [ui]).
Docs: docs/drone/concept.md · docs/drone/protocol.md


Install

pip install gadgetpanda           # core (BLE + drone protocol)
pip install 'gadgetpanda[ui]'     # dashboards + FPV (FastAPI, ffmpeg)
pip install 'gadgetpanda[mqtt]'   # MQTT bridge

From source:

git clone <repo> && cd gadgetpanda
python3 -m venv .venv && source .venv/bin/activate
pip install -e ".[ui,dev]"

Needs: Python 3.11+ · real BLE/Wi‑Fi hardware (no radio in emulators)
Docker (Linux): host network + BlueZ/NetworkManager — see docs/docker.md


CLI map

Namespace Highlights
gadgetpanda ring … scan live ppg user ui
gadgetpanda dog … scan connect action move ui
gadgetpanda drone … wifi scan connect stick cmd ui
gadgetpanda license … optional soft entitlements

Soft license (optional)

Honor-system feature keys (30-day, one device). Soft by default — no key means open.
See docs/license.md.

gadgetpanda license features
gadgetpanda license activate gp_live_…
gadgetpanda license status

License

MIT — host Python in src/gadgetpanda/, examples, tests, and maker docs.

Metadata

Release files for gadgetpanda 0.1.3

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

Source distribution (sdist)

Source distribution for gadgetpanda 0.1.3
File Size Uploaded
gadgetpanda-0.1.3.tar.gz 525.1 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for gadgetpanda 0.1.3
File Interpreter ABI Platform
gadgetpanda-0.1.3-py3-none-any.whl Python 3 none any Details

Total release size: 1.0 MB

Release files / gadgetpanda-0.1.3.tar.gz

Download URL gadgetpanda-0.1.3.tar.gz
Size 525.1 kB
Tags Source
SHA-256 checksum
How to use checksums
51e079f320e29af09767c1e0785e78cbc7b7dd2441dc67809e890684ac8dc0c5
BLAKE2b-256 checksum
How to use checksums
20524fb7a7924bb9a11dfcc8a52712235dd7a05c04b3f6ee4aa209876e75866e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.14.6

Release files / gadgetpanda-0.1.3-py3-none-any.whl

Download URL gadgetpanda-0.1.3-py3-none-any.whl
Size 504.5 kB
Tags Python 3
SHA-256 checksum
How to use checksums
707ecce73b6935cea9214632913e2c86ea12263417709b85b4804ad87889dee3
BLAKE2b-256 checksum
How to use checksums
d3369aaa9591a3bea54f2e0aba9fc0a5f04048c13191472d9c0857520d9fbcda
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.14.6

Release history Release notifications | RSS feed

0.1.4

2 release files

This release

0.1.3 This release

2 release files

0.1.2

2 release files

0.1.1

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