Breathe

About Us / Our Philosophy
"Breathe, breathe in the air. Don't be afraid to care."

Mission Statement

Information about the air people breathe every day should be accurate, immediate, and verifiable.

BreatheOSS was built in response to a clear gap between reported air quality and lived reality. In a region where people depend heavily on official AQI data, that data must reflect actual exposure, including short-term spikes and inconsistencies. We aim to provide ground-level, real-time measurements that remain transparent at every stage, ensuring that what is shown corresponds to what people are truly breathing.

Available On

Breathe is a multi-platform ecosystem. All clients share the same backend API and display real-time data from the same ground sensor network.

Android

Kotlin + Jetpack Compose. Material You dynamic theming, AMOLED dark mode, home screen widgets. Android 8.1+. Alternatively, you can get the APK directly from our GitHub.

iOS

Swift + SwiftUI. Fluid animations, map overlay, 24-hour graph, home screen widgets. Works on iPhone, iPad and Mac

Web

TypeScript + Leaflet. Responsive, light & dark themes, interactive map, weather-tagged AQI history.

Discord Bot

Python + discord.py. Slash commands, fuzzy location matching, 24-hour trend graphs, cigarette equivalence.

Desktop (Qt)

C++17 + Qt 6 Widgets. Native cross-platform desktop app. An early work-in-progress.

16
Ground Sensors
25
Zones Tracked
10
Cities with Ground Truth
2
AQI Standards

The Problem

Publicly available AQI data for Jammu, Kashmir and Ladakh is, at best, unreliable. The region has very few government-operated reference stations. Other platforms fill the gap with satellite estimates or interpolated models, but without ground-level validation, those numbers are difficult to trust. None of this data is open, and very little of it is explained.

J&K Government Sensor Map
"Only 3 CAAQMS government ground sensors in the entire state of J&K"
JKPCB Monthly Data Report
"The JKPCB publishes air quality data for their air quality stations, but only as monthly averages, and with no transparency into how those averages are derived. A single reading taken at the end of the month would produce the same number as thirty daily measurements."

Our Approach

We believe in ground truth. Our network uses a hybrid approach: official AirGradient kits which are safe, verifiable and accurate while maintaining rigorous, open standards. Where we lack ground coverage, satellite modeling (CAMS) fills in the gaps for regional trends.

AirGradient Hybrid

Official kits + India-assembled DIY open-hardware, validated against reference instruments.

Satellite (CAMS)

Regional trends via CAMS modeling via Open-Meteo, used for areas without ground sensors.

How We Calculate AQI

AQI is not a raw sensor reading, it is a standardised index computed from multiple pollutant concentrations. Here is precisely how we do it.

1
Data Acquisition

Ground sensors (AirGradient) are prioritised. If a sensor is offline, reporting stale data, or an unrealistic spike is detected, the system automatically falls back to satellite modelling (Open-Meteo / CAMS) for that zone.

2
Multi-Sensor Averaging

When a city has multiple nodes, their readings are averaged before the AQI formula is applied. Erratic nodes are flagged and excluded via a grace-period mechanism.

3
Sub-Index Calculation

Each pollutant (PM₂.₅, PM₁₀, NO₂, SO₂, CO, O₃) is converted to its own sub-index using the official breakpoint formula shared by both US EPA and CPCB: I = [(I_hi − I_lo) / (C_hi − C_lo)] × (C − C_lo) + I_lo, evaluated against each standard's respective breakpoint table. Values are capped at 500.

4
Final AQI = Dominant Pollutant

AQI is the maximum sub-index, not an average. The pollutant that drives this highest value is surfaced as the "main pollutant." Both Indian NAQI and US EPA AQI are computed and returned.

5
Two Time Windows

Live AQI is computed from instantaneous sensor readings for spike tracking. A separate 24-hour rolling average AQI is computed per CPCB/EPA regulation for official reporting. Both are returned in every API response. Along with Saved Historical Data.

Network Coverage

We currently track 25 zones across Jammu, Kashmir, and Ladakh. 10 cities have physical ground sensors deployed; the remaining 15 receive satellite-modelled data from Open-Meteo CAMS.

AirGradient ground sensor
Satellite (Open-Meteo / CAMS)
Srinagar
Jammu
Leh
Rajouri
Bandipora
Doda
Udhampur
Samba
Reasi
Kargil
Anantnag
Baramulla
Ganderbal
Handwara
Katra
Kathua
Kishtwar
Kulgam
Kupwara
Pahalgam
Poonch
Pulwama
Ramban
Shopian
Sopore

We are actively expanding the sensor network. Contact us if you can host a node in a zone that lacks ground coverage.

Help Expand the Network

The biggest limitation of this project is that we cannot deploy ground sensors everywhere. If you have a stable power source and internet connection. At home, in a shop, on a rooftop: you can host an AirGradient sensor node and contribute real data to the region's air quality record.

contact@breatheoss.app Join our Discord

Philosophy

Open source is not just a licensing decision for us. The code is open so anyone can audit what we claim. The methodology is documented so anyone can challenge it. The data is free so anyone can use it. We think that is how it should be, and believe that should never be changed. Open-source is fundamentally about dismantling artificial boundaries and democratizing access to truth. In a country as vast and structurally complex as India, decentralized and transparent systems are the most logical counter to infrastructural opacity. This project grounds its philosophy in the same critical observation that defined much of Pink Floyd's work: a rejection of isolation and a demand to examine the systems built around us.

The Origin & Technical Specifications

To read more about the origin, story, and technical specifications behind Breathe, check out our deep-dive blog post on how we built it from the ground up.

Read the Blog Post