OpenGlucose is an open-source, local-first Flutter workspace for exploring continuous glucose monitor (CGM) data. It includes a reference mobile app, a sensor-agnostic domain API, reusable Bluetooth Low Energy (BLE) contracts, and an AiDEX/LinX protocol driver.
Caution
OpenGlucose is early-stage wellness and reference software. It is not a medical device and must not be used for diagnosis, medication or insulin dosing, treatment decisions, or emergency monitoring. Confirm important readings with the sensor manufacturer's supported product and seek qualified medical help when appropriate.
| Path | Responsibility | Runtime |
|---|---|---|
openhealth/ |
OpenGlucose reference app and demo experience | Flutter |
packages/cgm_core/ |
Sensor-neutral readings, capabilities, snapshots, and session contracts | Dart |
packages/cgm_ble/ |
Platform-neutral BLE transport interfaces | Dart |
packages/cgm_aidex/ |
AiDEX/LinX protocol, session, history, calibration, and diagnostics | Dart |
packages/cgm_ble_flutter/ |
flutter_blue_plus adapter for the BLE contracts |
Flutter |
The package dependency direction and extension rules are documented in the architecture overview. Mobile builds use the real BLE-backed driver. Web and widget tests use a deterministic demo driver; the web build is not evidence of hardware compatibility.
The approved toolchain is Flutter 3.41.6, Dart 3.11.4, and Java 17. From a clean checkout:
make bootstrap
make hooks
make checkmake hooks installs the pinned repository hooks in the current worktree.
Hooks are fast local feedback; make check and CI remain authoritative.
Useful focused commands include:
make format
make format-check
make lint
make typecheck
make test-unit
make test-integration
make test-e2e
make test
make buildThe device end-to-end lane is explicitly deferred and currently reports that
status instead of claiming hardware coverage. make check runs tooling,
formatting, analysis, Dart/Flutter tests, Android and web builds, the negative
Android release-signing gate, and—on macOS—the unsigned iOS build plus native
Runner tests. Focused build targets remain available for iteration. The controls
register assigns the physical-device gap to @shroominic; the baseline-default
approval records a time-bounded exception through 2026-11-30, with redacted
manual device evidence still required for affected R2/R3 changes.
Run the demo UI without BLE hardware:
cd openhealth
flutter run -d chromeMobile development requires the platform Bluetooth permissions and a supported sensor. See the app README and compatibility policy before interpreting hardware results.
OpenGlucose is designed around these constraints:
- core use remains available without an account or mandatory cloud service;
- normalized domain models do not depend on a particular sensor vendor;
- protocol logic stays separate from the native BLE plugin boundary;
- portable file/data export and complete deletion are required product goals, but neither is a verified complete capability in the current app (the Apple Health integration is a separate opt-in write-only path);
- analytics must remain explainable, and optional AI must not become a dosing or emergency-decision path.
On native platforms, the baseline moves restricted sensor state to a dedicated
application-support file. The web demo continues to persist its
shared_preferences values in the browser's origin-scoped localStorage; it is
not a private, encrypted, backup-excluded, or supported health-data store.
The current implementation is not yet a production-readiness claim. Consult the architecture decisions for accepted direction and explicit implementation gaps.
Read CONTRIBUTING.md before opening a pull request. Use the issue tracker for reproducible bugs and feature proposals, but never attach glucose history, sensor identifiers, credentials, or other private health information.
The project-wide risk classes, Definition of Done, and controls register are in the engineering standards.
Security vulnerabilities should follow SECURITY.md. General support expectations are in SUPPORT.md. This community project cannot provide medical, emergency, or sensor-manufacturer support.
OpenGlucose source is available under the MIT License. Dependencies and platform components retain their own licenses; see NOTICE.md and the dependency policy.