One app for every leg of your trip — jeepney, bus, MRT, LRT, and walking — powered by MMDA data and on-device AI.
How do you usually get around?
KAirOS tailors your routes, parking, and coding alerts to how you travel. Pick one — you can change it any time in Profile.
Your data never leaves your phone.
KAirOS runs AI on-device for instant, offline, private route decisions.
On-device AI
100% private
Offline ready
Location
For live navigation & arrival ETA
Notifications
MMDA incident alerts along your route
Microphone
Taglish voice trip input (optional)
Home
Magandang umaga, Gene 👋
Saan tayo ngayon?
0min
Saved today
0
Crash zones dodged
0
Coding violations avoided
Suggested right now
Upcoming scheduled trips
Predictive ETAs from the MMDA road-speed curve — planned before you leave.
Road closures · from MMDA
Planner-published closures that affect your area. Tap a trip to re-route around them.
Commute coach · personal
Calculating best window…
…
vs leaving at 8:30 — corridor speeds from MMDA Q1 2023; hourly shape is illustrative (source has no time-of-day column). Shift off-peak and you feed MMDA's demand forecast. On-device AI, your patterns over time.
Station crowding
Shape from MMDA corridor speeds · per-station offset illustrative
MRT Cubao
Moderate · 7–9 AM peak
LRT-1 Baclaran
Low · best window 10 AM
BGC Bus Stop
Moderate · 5–7 PM peak
Built on MMDA Q1 2023 road-speed data · hourly shape is illustrative
Cubao
Ayala, Makati
Leaving now · 9:41 AM
Optimize for
WalkJeepneyMRTBus
Fastest
38 min
Walk 5 min
MRT-3 (4 stops)
Walk 7 min
Leave by 7:42 AM Saves 17 min
Safest
44 min
0 crash zones
Walk 6 min
LRT-1 → MRT-3 transfer
Walk 8 min
Recommended for night
Coding-safe
51 min
UVVRP-compliant
Walk 4 min
Jeepney · España–Lacson
Walk 9 min
Avoids plate-window
Same trip · choose your impact
TDM
Time-of-day estimate from the MMDA speed curve · illustrative. Your off-peak shift feeds the planner's demand forecast.
Same destination · two modes
Demo · illustrative fares & fuel
No active trip
Plan a trip from Home first, then KAirOS compares Drive vs Commute for you.
Re-route available.Crash on EDSA–Quezon Ave. Alt saves 6 min.
ETA
10:23 AM
14 min remaining
Smart mode-change announcement 0.31s
In 2 min, exit at MRT-3 Ayala on the north side. Platform is crowded — keep your belongings close. Walk 7 min along Ayala Ave to your destination.
Sa 2 minuto, bumaba sa MRT-3 Ayala, hilagang daan. Maraming tao sa platform — ingatan ang gamit. Maglakad ng 7 minuto sa Ayala Ave patungong destinasyon.
Generated on-device · context-aware · bilingual
Now
Walk 4 min
to MRT Cubao Station — use the north entrance
Next · bilingual
Board MRT-3 northbound
4 stops to Ayala · arrives 10:19 AM
Sakay ng MRT-3 patungong Ayala · 4 na hintuan
MMDA alerts
5 active incidents affecting your saved routes
On-device summaryNo data leaves phone
Heads up: a high-severity crash is blocking the southbound EDSA–Quezon Ave approach. Your Fastest route is affected — re-routing through Quezon Ave saves ~6 min. LRT-1 option adds 4 min but dodges all crash zones.
Paalala: malakas na crash sa EDSA–Quezon Ave. Naaapektuhan ang iyong Fastest route. Mag-re-route sa Quezon Ave, makatitipid ng ~6 min. Ang LRT-1 ay +4 min pero walang crash zone.
Filtered to your saved routes Processed on device · no data left phone
Station crowding
Shape from MMDA corridor speeds · per-station offset illustrative
MRT Cubao · today
Best windows: 10 AM – 3 PM, after 8 PM
5a
6a
7a
8a
9a
10a
11a
12p
1p
2p
3p
4p
5p
6p
7p
8p
LowModerateHigh
Loading tip…
Reading the latest MMDA speed curve.
Current streak
7 days
142
Points
Badges
Off-peak Hero
Coding-Safe 7
Multi-modal
CO₂ Saver
30-day Streak
Unlock at 30-day streak
Safer Streets
Unlock at 5 crash zones dodged
This week
Off-peak hero
5 trips before 7 AM
0%
0 of 5 · done
Coding-compliant week
7 days without plate-window violation
0%
0 of 7 days
Multi-modal explorer
Use 3+ transport modes this week
0%
0 of 3 modes
Your impact
Last 30 days · personal TDM contribution
—
Trips planned
—
Crash zones avoided
—
Coding violations avoided
—
CO₂ saved
Your fuel savings · personal
Based on
—
Fuel not burned
—
Litres avoided
—
Km saved
Your saved minutes, translated to fuel and pesos — vehicle-aware (car or motorcycle). Demo · illustrative.
Trip time reduction
17%
You · 32 min avg
Metro Manila baseline · 38 min avg
On target for the 15–20% spec goal ✓
Behavioral change
Modal shift adoption
Chose public transit for a faster route
25%
Daily route queries
Avg of your logged trips · spec target 2–3
2.7
AI response time
Voice/text → route output on-device
1.4s
Weekly trend
G
Gene Jr E. Gulanes
KAirOS · AI Developer & Web Engineer
How you get around
Plate & UVVRP
We automatically reroute around UVVRP-restricted roads on coding days.
Truck routes avoid narrow CBD cores and run at freight speed (set by MMDA in Routing policy).
Saved routes
Home — Cubao
38 min via MRT-3
Work — BGC
44 min via Bus
Preferences
Language
UVVRP coding alerts
Data & privacy
Notifications
Overview
Live · --:-- PHT
Aggregated · zone-level only
Low demandModerateHigh Persistent map · overlay toggles via the KairosMap API · state survives panel switches
Network totals
—
Active commuters
Metro scope · estimated active
—
Trips today
modal shift to PT
—min
Avg trip time
avg · network trips
—
Modal shift to PT
PT share of scoped trips
Live activity · last 5 min
0 trips
Demo ticker · synthetic events streamed live during the demo so the dashboard doesn't look frozen. Real build would ingest MMDA operator logs.
Loading slowest corridors from MMDA Travel Time Data…
Road network coverage · by city
18 cities · 10,260 segments
City
Segments
kph
%
Loading coverage from MMDA Travel Time Data…
AI vehicle detection + plate reads · on-device
A real YOLOv8n model detects & boxes vehicles in-browser via ONNX Runtime Web on sample traffic clips — not live MMDA feeds. Plate reads and vehicle counts are simulated for this demo. Footage is decoded on-device and never uploaded. Drop a .webm/.mp4 to count your own clip.
AI: loading…
Camera grid · click to focus
6 sample clips
Each clip is real traffic footage, counted live on-device by the YOLOv8n model — no live MMDA feed in this demo.
The on-device model is ready — pick a sample clip above, or drop your own footage to start counting.
Drop a .webm/.mp4 to count your own footage · processed on-device, never uploaded
AI Model: loading…Inference 41ms24 FPSSession 00:00
Live vehicle count · CAM-C5
counting
0vehicles · 0/min
Vehicle counts are simulated for demo stability. The detection boxes on the feed are the live on-device YOLOv8n output — or a simulated fallback if the model is unavailable.
Plate reads · simulated
Demo · not real ALPR
reading0 coding violations
Load a clip to start reading plates
Simulated plate reads for this demo — generated locally, never real plates. Each read is checked against today's UVVRP coding schedule below.
Today
UVVRP coding
—
Plate endings restricted
AI-assisted detection pipeline (roadmap)
Roadmap · aspirational
License plate recognition — UVVRP violation flagging at camera positions (this demo shows a simulated version)
Speed analysis — cross-reference with Travel Time Data for ground-truth calibration
Incident detection — auto-detect crashes, stalls, and flooding; trigger commuter alerts + tow dispatch
Pick a road + window and Run for before/after impact. Publish writes the closure to the commuter app — it surfaces on Home, Alerts, and re-route banners. Demo · planner-published, persists in this browser.
Published closures · live to commuter app
0 active
Vehicle routing policy
Speed and avoidance rules per vehicle class. These feed the car / truck route options commuters see in the app. Demo · planner-set values.
Truck routing
Enable truck-optimized routes
Adds a Truck card to driver results
0.70
Trucks run slower than posted (weight + congestion)
Comma-separated · matched against road names (narrow CBD cores)
Car routing
1.00
Cars use posted MMDA speeds; no avoidance overlay
Car routes stay on the full drive graph with UVVRP compliance only. Lower this factor to model congestion for all drivers.
Preview · car vs truck (Cubao → BGC)
Live · current policy
Computed live with the current policy via the on-device router.
Companion pipeline tool that converts raw MMDA datasets into the
lightweight JSON the app loads. Static view — run
python3 scripts/build_data.py --status for the live report.
Target scale-out topology for KAirOS at city scale — SSE push + Pub/Sub backbone, two independent ingest paths, zone-level aggregation.
Target topology — not running in this demo. The demo is fully client-side (static JSON over python3 -m http.server, no API server). This is the planned production architecture, consistent with the spec's aspirational GraphHopper + Liquid AI stack. See the README "Roadmap" section for the honest mapping.
The Pub/Sub broker is the spine — every normalized event flows through it, decoupling which node produced data from which node holds a client connection. Run as a 3-node quorum: an odd count avoids split-brain on failover. It is the single highest-leverage HA component; if it is down, nothing flows.
Two scaling strategies
Different tiers scale differently — on purpose. Ingestion is a fixed, rate-limited funnel: one polite cached reader protects MMDA from overload (and protects us from their rate limits). Aggregation + Routing are stateless and autoscale freely with demand. Scaling the aggregator does not affect MMDA load — they never talk.
Stateful HA
The SSE Gateway is the only stateful consumer tier — it holds open sockets. Run it active-active and drain connections on scale-in so no client is dropped mid-stream. This is where naive autoscaling breaks; the broker + drain pattern is what makes it survivable.
Designed for three nines
99.9% uptime (≈8.76 h downtime/year) is an operational property, not a box-count property. The real levers: HA broker (quorum) + safe deploys (blue/green or canary, one-click rollback, health-checked auto-restart). Availability multiplies across tiers, so each tier carries headroom above the composite target.
Privacy boundary
The aggregation nodes are not just a performance tier — they are the privacy mechanism. Individual phone points collapse to zone counts before they are published to the broker. No individual trip or personally identifiable detail reaches consumers. This matches the spec's "all commuter data is aggregated at the zone level before display."
The product loop
The dashed round-trip is the core loop: one commuter's phone uplink → aggregation → broker → SSE Gateway → all phones receive an updated crowding/alert view. One rider's telemetry becomes everyone's live intelligence, fanned out in milliseconds.
Composite availability caveat: across ~5 tiers, per-tier availability multiplies. 0.999⁵ ≈ 99.5% composite, so each tier needs headroom above three-nines individually. The HA broker is the multiplier that drags the whole product down if it is weak.