Free, open-source airway analysis dashboard for PAP therapy users. See what your machine can't show you — flow limitation, breathing instability, oxygen patterns — all in your browser.
AirwayLab reads the raw flow waveform from your ResMed SD card and runs four independent analysis engines — entirely in your browser.
| Engine | What it measures |
|---|---|
| Glasgow Index | 9-component breath shape scoring (skew, flat top, spike, etc.) on a 0–8 scale |
| WAT (Wobble Analysis Tool) | FL Score, Regularity (Sample Entropy), Periodicity (FFT spectral analysis) |
| NED Analysis | Peak-to-mid inspiratory flow ratio with automated RERA detection |
| Oximetry Pipeline | 17-metric SpO2 and heart rate framework from Viatom/Checkme O2 Max CSV |
- Interactive dashboard with per-night drill-down
- Multi-night trend analysis with per-metric drill-down
- Night heatmap for visual pattern recognition
- Rule-based clinical insights with traffic light thresholds
- Export to CSV, JSON, PDF, and forum-ready text
- Built-in demo mode with realistic synthetic data
- localStorage persistence (30-day history)
- Therapy change date marker for before/after comparison
Your PAP machine collects detailed breath-by-breath data every night. Most of it goes unanalysed. Clinicians typically check AHI and move on, but AHI misses flow limitation, RERAs, and breathing pattern instability — the things that explain why you might still feel exhausted with an AHI under 5.
AirwayLab makes that data visible. It's free because we believe therapy insight should be accessible to everyone. It's open source because we believe you should be able to verify what happens with your medical data. It runs in your browser because your data is yours.
- All core analysis happens in your browser — your sleep data never leaves your device by default
- No cookies, no fingerprinting, no tracking pixels
- Optional server features (AI insights, cloud storage, data contribution) require explicit opt-in consent
- Fully auditable open-source code (GPL-3.0)
| Device | Status |
|---|---|
| ResMed AirSense 10 | ✅ Fully supported |
| ResMed AirCurve 10 (VPAP) | ✅ Fully supported |
| ResMed AirSense 11 |
| Feature | AirwayLab | OSCAR | SleepHQ | myAir |
|---|---|---|---|---|
| Price | Free | Free | Free / $150yr Pro | Free |
| Platform | Web (any device) | Desktop | Web + Mobile | Mobile |
| Install required | No | Yes | No | Yes (app) |
| Data stays local | ✅ Yes | ✅ Yes | ❌ Cloud | ❌ Cloud |
| Flow limitation engines | 4 (Glasgow, WAT, NED, Oximetry) | 1 | Basic | None |
| Breath shape scoring | ✅ Glasgow Index | ❌ | ❌ | ❌ |
| RERA detection | ✅ Automated | Manual | ❌ | ❌ |
| Multi-manufacturer | ResMed only | Multi | ResMed focus | ResMed only |
| Open source | ✅ GPL-3.0 | ✅ GPL-3.0 | ❌ | ❌ |
AirwayLab is designed to complement OSCAR, not replace it.
Visit airwaylab.app — no install needed.
git clone https://github.com/airwaylab-app/airwaylab.git
cd airwaylab
npm install
npm run devOpen http://localhost:3000.
npm test- Framework: Next.js 14, TypeScript (strict)
- Styling: Tailwind CSS + shadcn/ui (with @base-ui/react)
- Charts: Recharts 3.8
- Processing: Web Workers for non-blocking analysis
- Testing: Vitest + Testing Library
- Fonts: IBM Plex Sans + JetBrains Mono
Open an issue before submitting large PRs. We especially welcome help with:
- AirSense 11 parser improvements
- Philips Respironics device support
- Additional pulse oximeter formats
- Internationalisation (i18n)
If AirwayLab helps you understand your therapy data:
- ⭐ Star this repo — it helps others discover the project
- 🐛 Report bugs — open an issue
- 💬 Share your results — post on r/SleepApnea or ApneaBoard
- 🔧 Contribute — PRs welcome, especially for device support
GPL-3.0. See LICENSE.
The Glasgow Index engine is based on DaveSkvn's Glasgow Index (GPL-3.0).
AirwayLab is not a medical device. It is not FDA or CE cleared. All analysis is for informational and educational purposes only. Always discuss results with your sleep physician before making therapy changes.