⚠️ Open-LIFU is an investigational device — limited by US Federal law to investigational use. Not FDA-evaluated.
Quick Start · Open-LIFU

Open-LIFU Quick Start

Install the standalone App — or run from source at whichever layer of the stack you need.

2 Paths App or Source
3 Source Layers Extension · Python · SDK
~15 min Clone → First PR

Welcome to Open-LIFU

Open-LIFU is Openwater's programmable Low Intensity Focused Ultrasound platform — a console, transducer, and a software stack that goes from a one-click standalone App down to a Python SDK that talks directly to the hardware. This page is the single source of truth for getting started. Repositories, READMEs, and the device user manual all link here.

The stack at a glance

┌──────────────────────────────────────────────────────────────────┐ │ OpenLIFU-App ◄── standalone installer (bundles Slicer) │ ├──────────────────────────────────────────────────────────────────┤ │ SlicerOpenLIFU ◄── 3D Slicer extension (10 modules) │ ├──────────────────────────────────────────────────────────────────┤ │ openlifu ◄── Python library: algorithms, planning │ ├──────────────────────────────────────────────────────────────────┤ │ openlifu-sdk ◄── low-level hardware I/O │ │ openlifu-test-app ◄── QML engineering UI (binary + source) │ └──────────────────────────────────────────────────────────────────┘

Either install the top of the stack (the App) or run from source at the layer that matches what you're doing. You don't need to install multiple layers — pick one entry point.

On this page

  1. Choose your path
  2. Path A · Standalone App
  3. Path B · Run from Source
    1. B1 · 3D Slicer + SlicerOpenLIFU extension
    2. B2 · openlifu-python (the openlifu library)
    3. B3 · openlifu-sdk (low-level + Test App)
  4. Make your first contribution
  5. Optional: photogrammetry add-ons (Meshroom, Android, ADB)
  6. Get help

Choose Your Path

Two entry points. Don't install both — pick the one that matches what you're doing today.

📦

Path A · Standalone App

Download the installer, run. Bundles its own Slicer and all OpenLIFU modules. No framework setup. No Python.

  • Best for clinicians & research operators
  • Guided clinical workflow
  • No 3D Slicer install required
  • No Python environment required
Start with the App →
🛠️

Path B · Run from Source

Build/run from any layer of the stack. Three sub-paths depending on whether you want a UI, a library, or raw hardware I/O.

  • B1 · Slicer + extension — power-user GUI
  • B2 · openlifu — scripting & pipelines
  • B3 · openlifu-sdk — firmware & hardware comms
  • Best for contributors & researchers
Start from Source →

Path A · Standalone App

Three steps. The App bundles its own Slicer — do not install 3D Slicer separately for this path.

Download the latest installer

Grab the system-specific installer (.exe on Windows, .tar.gz on Linux). Approve the security warning if prompted.

Latest Release →
NVIDIA GPU required for a number of features. Make sure your system has one before you start.

Run the installer

Start the installer and follow the prompts.

⚠️ Windows path gotcha: The install path cannot contain spaces. The default folder includes a space after "OpenLIFU" — remove it. Also make sure your Windows username has no spaces (install elsewhere if it does).

First launch

Launch the app. First run finishes installing dependencies before opening to the home page. That's it — you're in the guided workflow. Use PrePlanning → pick a target, then SonicationPlanner → simulate.

🎉 The App handles everything. You don't need Slicer, Python, or anything else for this path.

Path B · Run from Source

Pick the layer that matches what you're building. Each sub-path is independent — you don't stack them.

Best for · Power-user researchers in Slicer

B1 · 3D Slicer + SlicerOpenLIFU extension

Use your own 3D Slicer install. SlicerOpenLIFU exposes all ten OpenLIFU modules (Home, Database, Login, Data, PrePlanning, TransducerLocalization, SonicationPlanner, SonicationControl, ProtocolConfig, Lib). Every parameter is reachable; no curated wrapper.

Install

  1. Install 3D Slicer (version listed in the SlicerOpenLIFU release notes).
  2. Open Slicer → Extensions Manager → search "OpenLIFU" → install.
  3. Restart Slicer.

Or build from source

Follow the standard Slicer extension build process for the SlicerOpenLIFU repository.

First workflow

  1. Open OpenLIFUHome.
  2. OpenLIFUDatabase → point at a local clone of openlifu-sample-database.
  3. Sign in as example_admin.
  4. PrePlanning → pick a target → SonicationPlanner → simulate.
SlicerOpenLIFU repo →
Best for · Scripting, pipelines, ML, simulations

B2 · openlifu-python (the openlifu library)

The core Python library. Algorithms, planning, simulation, protocols, database structures. No GUI. Used as a standalone library or as the engine that drives SlicerOpenLIFU.

Install the published package from PyPI:

pip install openlifu

Or for development (Python 3.10–3.12 on Windows or Linux):

git clone https://github.com/<your-username>/openlifu-python.git cd openlifu-python git remote add upstream https://github.com/OpenwaterHealth/openlifu-python.git python -m venv env # Linux: source env/bin/activate # Windows: .\env\Scripts\activate pip install -e . # basic # or: pip install -e '.[dev]' # with dev tools # Smoke test python -c "import openlifu; print(openlifu.__version__)"

Then pull the sample database via Git LFS and browse examples/:

git lfs install git clone https://github.com/OpenwaterHealth/openlifu-sample-database
openlifu-python repo →
Best for · Firmware, hardware comms, embedded work

B3 · openlifu-sdk + Test App

The lowest layer: direct communication with the TX module and HV controller. Use this if you're working on firmware, debugging hardware, or building tooling that needs raw device I/O without the planning layer on top.

The Python SDK

Published to PyPI:

pip install openlifu-sdk

Or for development:

git clone https://github.com/OpenwaterHealth/openlifu-sdk.git cd openlifu-sdk pip install -e ".[dev]"

Sanity check the hardware connection:

from openlifu_sdk import LIFUInterface interface = LIFUInterface() tx_connected, hv_connected = interface.is_device_connected() print("TX:", tx_connected, " HV:", hv_connected)

The Test App (engineering UI)

For end-to-end hardware bring-up, verification, and diagnostics, use the OpenLIFU Test App — a QML-based engineering UI with dedicated pages for console/transmitter bring-up, sonication, automated verification scripts, firmware updates, and PDF reporting.

Easiest: grab the prebuilt Windows binary from the openlifu-test-app releases page and run TestApp.exe (or TestApp_console.exe to see console output).

From source (Python 3.10+, requires both openlifu-sdk and openlifu installed):

git clone https://github.com/OpenwaterHealth/openlifu-test-app.git cd openlifu-test-app python -m venv .venv # Windows: .venv\Scripts\activate # macOS/Linux: source .venv/bin/activate pip install -e . # or .[dev], .[test], .[dev,test]
openlifu-sdk repo → openlifu-test-app repo →
🔬 Advanced · simultaneous source development across layers. SlicerOpenLIFU and openlifu can be developed together. Inside Slicer's Python console, use slicer.util.pip_install / slicer.util.pip_uninstall to side-load your local openlifu build, and add your local SlicerOpenLIFU clone to Slicer's Application Settings → Modules so it loads from your working tree. This is the recommended workflow for active extension development — you're running customized versions of both the UI and the engine simultaneously. You own compatibility when you do this; SlicerOpenLIFU normally pins a tested openlifu version on purpose.

Make Your First Contribution

The fork → branch → commit → PR → CLA → merge loop is the same regardless of which layer you started at.

The universal first-PR loop

Pick one of these and ship it:

git checkout -b fix/short-description # make changes git add . git commit -m "Docs: fix typo in transducer README" git push origin fix/short-description # then open a PR on GitHub
CLA: First PR triggers an automated CLA signature. Takes under 2 minutes.

Where to land the PR

Browse Good First Issues →

Optional · Photogrammetry Add-ons

Only needed if you're running transducer-tracking workflows with the Android scanner. Applies to all paths above.

Install Meshroom 2025.1.0

Required if you're using openlifu.nav.photoscan (Python) or running transducer tracking through the App.

  1. Download Meshroom 2025.1.0 for your OS from the official Meshroom 2025.1.0 release.
  2. Extract the archive to a directory of your choice.
  3. Windows: add the folder containing Meshroom.exe to your user PATH (Start menu → "Edit environment variables for your account" → User variables → Path → Edit → New).
  4. Linux: add the extracted folder to your PATH (export PATH="<path-to-meshroom>/Meshroom-2025.1.0-Linux:$PATH", or persist by appending to ~/.bashrc).
  5. Optional GPU (Windows): NVIDIA Control Panel → 3D Settings → Manage 3D settings → Program Settings → add Meshroom.exe → set "High-performance NVIDIA processor".
App users: launch the App from an environment that has Meshroom on its PATH.

Install Android Platform Tools (ADB)

Option 1: Download Google's platform-tools, extract, and add the folder containing adb.exe to your PATH. Verify with adb --version.

Option 2 (PowerShell):

Set-ExecutionPolicy RemoteSigned -Scope CurrentUser irm get.scoop.sh | iex scoop install android-platform-tools

Install the Android photogrammetry app

  1. On your Android phone, open OpenLIFU-3DScanner.
  2. Open Releases → pick the latest version → tap the .apk.
  3. Approve install. Open the app and allow camera and storage permissions.

Enable Developer Mode + USB Debugging

  1. Settings → About Phone → tap Build number 7 times.
  2. Settings → System → Developer options → enable USB debugging.
  3. Plug into your PC and check "Always allow" when prompted.

Get Help

The fastest path to unstuck.

💬

Discord (fastest)

Real-time help from the community in #help.

Join Discord
🗣️

GitHub Discussions

Best for design questions and shared answers.

OpenLIFU-App Discussions
📧

Email the team

For anything that doesn't fit a public channel.

community@openwater.health

Ready to ship your first PR?

Browse open issues, pick one, and we'll review within 48 hours.