/Loop

A closed-loop insulin delivery app for iOS, built on LoopKit

Primary LanguageSwiftOtherNOASSERTION

Loop for iOS

App Icon WatchApp Icon

Build Status Join the chat at https://gitter.im/LoopKit/Loop

Loop is an app template for building an artificial pancreas. It is a stone resting on the boulders of work done by @bewest, @ps2 and many others.

Please understand that this project:

  • Is highly experimental
  • Is not approved for therapy

Screenshot of status screen Screenshot of bolus screen Screenshot of battery change notification Screenshot of loop failure notification Screenshot of bolus failure notification

Screenshot of glucose complication on Apple Watch Screenshot of carb entry on Apple Watch Screenshot of bolus entry on Apple Watch Screenshot of the app menu on Apple Watch Screenshot of bolus failure notification on Apple Watch Screenshot of bolus failure notification on Apple Watch

Requirements

Insulin Pump
MM 522/722 MM 523/723 MM 554/754
CGM Dexcom G4 1 2 1 3 1 3
Dexcom G5 2 3 3
MM CGM 4 3 3


1. Offline access to glucose requires a Receiver with Share and the Share2 app to be running on the same device. Internet-dependent access via Share servers is also supported.
2. Pump must have a remote ID added in the Remote Options menu.
3. Early firmware (US <= 2.4A, AU/EUR <= 2.6A) is required for using Closed Loop and Bolus features.
4. It's not impossible, but comms-heavy and there's some work to be done. File an issue if you're someone who's up for the challenge and can test this hardware configuration.

RileyLink

Bluetooth LE communication with Minimed pumps is enabled by the RileyLink, a compact BLE-to-916MHz bridge device designed by the incredible @ps2. Please visit the repository and the gitter room for more information.

LoopKit

Loop is built on top of LoopKit. LoopKit is a set of frameworks that provide data storage, retrieval, and calcluation, as well as boilerplate view controllers used in Loop.

Getting Started

Fork and clone this repository so you can commit the changes you'll make below.

Sign up for the Loop Users announcement list to stay informed of critical issues that may arise.

Assigning a Bundle Identifier

Assigning a bundle identifier

Open Loop.xcodeproj in Xcode. In the Project Navigator on the left-hand side, open Loop.xcconfig. Change the value of MAIN_APP_BUNDLE_IDENTIFIER to a unique reverse-domain name of your choosing.

Installing Carthage

Carthage is used to manage framework dependencies. It will need to be installed on your Mac to build and run the app, but most users won't have a need to explicitly rebuild any dependencies.

Configuring Services

Loop optionally supports select third-party remote services, which are configured in the Settings screen.

Service Description
Dexcom Share Downloads glucose data if a local G5 Transmitter or G4 Receiver with Share is not available.
Nightscout Uploads treatments and other pump data. Note that you will need to set "Nightscout history uploading" to "On" in Settings for treatments to be fetched from your pump and uploaded to Nightscout.
mLab Uploads diagnostic data about each loop run, as well as app errors. At this time, it is strongly recommended that you configure this service in case retrospective analysis is needed.
Amplitude Tracks private, single-user behavioral and system analytics (no health data is sent)

Making it Your Own

Please visit the Wiki for more info on customizing the app

License and Code of Conduct

Please read the LICENSE and CODE_OF_CONDUCT