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.2

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.2
File Size Uploaded
gadgetpanda-0.1.2.tar.gz 518.0 kB Details

Built distribution (wheel)

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

Total release size: 1.0 MB

Release files / gadgetpanda-0.1.2.tar.gz

Download URL gadgetpanda-0.1.2.tar.gz
Size 518.0 kB
Tags Source
SHA-256 checksum
How to use checksums
a3c232e862387403ea11ddb55e2f06b056ad32687f8073bb1bfa2d46629e03c8
BLAKE2b-256 checksum
How to use checksums
b38f73862eacfd9485c031ddbed32406ba9392700bdbf23fb3ca2612a0e6f38f
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.2-py3-none-any.whl

Download URL gadgetpanda-0.1.2-py3-none-any.whl
Size 498.1 kB
Tags Python 3
SHA-256 checksum
How to use checksums
55124cc2b45dc7dda189361a263387272769600911a97c9f9ba28d1c72f552c6
BLAKE2b-256 checksum
How to use checksums
5409457a7be76c5c58732fd7e95de775c350472918064cf675d7fb99c4fdf455
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

0.1.3

2 release files

This release

0.1.2 This release

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