Open-source cross-platform controller for Pulsetto vagal nerve stimulator
Control your Pulsetto device via Bluetooth - no account, no internet, no cloud required.
Pulse Libre is a cross-platform Flutter app that controls the Pulsetto vagal nerve stimulator over Bluetooth Low Energy. No account required. No internet required. Just you and your device.
Based on the BLE protocol reverse engineering by Juraj Bednar (original Python app), rebuilt as a cross-platform Flutter app by Parallax Intelligence Partnership, LLC.
parallaxintelligence.ai | parallaxintelligence.online | GitHub
The Pulsetto device is a vagal nerve stimulator that requires a mobile app with account creation and internet access to function. This is unnecessary - the device communicates over BLE with simple commands. Pulse Libre removes the cloud dependency entirely.
As the original author put it:
Why does an electric nerve stimulator need an account and access to the Internet?
- No Account Required - Direct BLE communication, no cloud, no login
- Auto-Discovery - Scans and connects to Pulsetto devices automatically
- Intensity Control - Set strength levels from 1 to 9
- Session Timer - Configurable timer with progress indicator
- Presets - Quick-select presets for common session types (Stress, Sleep, Pain, Burnout)
- Session History - Track your past sessions with local SQLite storage
- Battery Monitor - Real-time battery level and charging status
- Auto-Reconnect - Reconnects automatically if the device disconnects mid-session
- Cross-Platform - Android, iOS, and Windows from a single Flutter codebase
The device's original app has multiple modes (Stress, Pain, Burnout, etc.), but they are all identical - just with different timer recommendations. The only thing that actually changes is the intensity level (1-9) and session duration. Pulse Libre gives you direct control over both, plus saves your session history locally.
Get a Pulsetto device.
Download the latest release for your platform from the Releases page.
Prerequisites: Flutter SDK 3.6+
git clone https://github.com/parallaxintelligencepartnership/pulse-libre.git
cd pulse-libre
flutter pub get
flutter run- Turn on your Pulsetto device
- Launch Pulse Libre - it will scan for your device automatically
- If not found, tap Scan
- Once connected, select a preset or adjust intensity manually
- Tap Start to begin a session
- Tap Stop to end early, or wait for the timer to finish
| Platform | Status |
|---|---|
| Android | Supported |
| iOS | Supported |
| Windows | Supported |
| macOS | Planned |
| Linux | Planned |
lib/
ble/
connection.dart # BLE scanning, connection, reconnection
protocol.dart # Pulsetto command protocol
core/
battery.dart # Battery voltage calculation
presets.dart # Session preset definitions
session.dart # Session state management
data/
database.dart # SQLite session history
ui/
home_screen.dart # Main screen layout
theme.dart # Dark theme definition
widgets/ # Reusable UI components
constants.dart # BLE UUIDs, colors, defaults
main.dart # App entry point
Key packages: flutter_blue_plus (BLE), provider (state management), sqflite (local storage), permission_handler (Bluetooth permissions)
Pulse Libre is based on the BLE protocol reverse engineering by Juraj Bednar:
- pulse-libre-desktop - Original Python/Kivy desktop application
- PulseLibre - Original mobile app and BLE protocol documentation
The BLE protocol was reverse-engineered by Juraj Bednar. Pulsetto is a trademark of its respective owner. This project is not affiliated with or endorsed by Pulsetto.
Contributions are welcome! Please open an issue first to discuss what you'd like to change.
GLWTS (Good Luck With That Shit) - inherited from the original project.