Project Info
Most Impactful; [OpenAI] Artificial Intelligence Track ([1st] Lunch with OpenAI engineers at the office + 1 year of ChatGPT Pro [2nd] 1 year of ChatGPT Pro [3rd] OpenAI swag)
Mira
Inspiration
Three of us have grandparents with Alzheimer's or dementia. If you've been around it, you know the loop: "Have you seen my pills?" five times in an afternoon. It's not just forgetting. It's the loss of autonomy, the slow erosion of someone's confidence that they can manage their own life. Several of us have backgrounds in robotics, simulation infrastructure, manipulation policies, and 3D perception. Across the team we'd been exploring XR, lab automation, and healthcare. We considered other directions: smart glasses for blind navigation, lab automation assistants. But we kept coming back to this: we all have moments where we'd kill for a recording of our lives. Where did I put my keys? Did I already take that pill? Looking at the tech available right now (real-time 3D reconstruction, visual foundation models, tool-using LLMs, consumer AR glasses), we realized this is the most futuristic thing we could actually build in a weekend. Many dementia patients refuse traditional care, insisting family handle everything, which puts enormous strain on people who can't be present 24/7. Mira is designed for this gap: asynchronous monitoring without pulling out a phone, assistance at 3 AM, and a caregiver dashboard that keeps family informed. For someone with Alzheimer's, a searchable spatial memory isn't a convenience. It's dignity. So we built Mira: an AI companion on smart glasses that understands your home in 3D, and when you say "where are my pills?", actually finds them. What It Does Mira is a voice-first AI assistant for dementia patients that combines 3D scene understanding with medical knowledge and caregiver alerts. It runs on Ray-Ban Meta glasses. For the patient: "Where's my pill bottle?" Mira searches a 3D reconstruction of the room (built from a short video walkthrough), locates the object, and flies the 3D viewer to it. "What medications do I take and when?" Pulls from the patient's health record, cross-references clinical guidelines, and returns evidence-graded answers with every claim tagged to its source (PubMed, NIH, clinical databases). "Help, I've fallen." The caregiver gets an email within seconds with full context: the event, actions leading up to it, and the patient's recent activity timeline. For the caregiver: Real-time dashboard showing health summaries, a live event timeline, and emergency alerts. Updates are instant with zero polling, so the caregiver always sees the latest state without refreshing. Email escalation for emergencies so they don't need to be actively watching the dashboard. When something urgent happens, they get full context in their inbox: what the patient said, what Mira did, and the recent activity leading up to it. Every interaction logged as an immutable event for audit. Questions asked, tools called, alerts triggered, all timestamped and searchable. No menus, no apps, no screens to read. The patient just talks. How We Built It 3D Scene. A video walkthrough gets reconstructed into a dense 3D point cloud via structure-from-motion on Modal A100 GPUs. Grounding DINO detects objects per frame, and each detection gets backprojected into 3D using depth maps and camera poses. Detections of the same object across different views are merged by geometric overlap and CLIP similarity, producing a 3D Scene Object Graph mapping object labels to real-world coordinates. Live Pose Tracking. The glasses' video stream feeds DPVO for continuous 6DoF pose tracking. DPVO is fast but drifts over time, so after a few minutes your estimated position can be meters off. HLoc re-localization periodically anchors the pose against the pre-built 3D map, correcting drift. Voice Pipeline. Ray-Ban Meta SDK only exposes camera and mic to Android, so glasses connect to an Android phone first. Bluetooth audio to phone, JPEG frames over hotspot to laptop, RTMP to media server, Tailscale for tunneling. An absurd number of hops for "listen to a sentence." It works. Agent. LLM agent (OpenRouter) with function-calling tools: spatial navigation (3D scene graph + live pose), patient info (OpenEvidence/FHIR), medication lookup (Perplexity Sonar with evidence grading). Whisper for STT, OpenAI TTS for response. Escalation. Emergencies trigger an email to the caregiver with full context. Works alongside the real-time dashboard. Real-time. Supabase Postgres with Realtime subscriptions. Every interaction is an immutable event. Dashboard updates via postgres_changes, zero polling. Privacy. Records are based off of FHIR R4 and are de-identified before reaching any LLM. Age ranges and condition names only, never raw identifiers. Challenges We Ran Into 3D Orientation. Point clouds don't know which way is up. A room can render upside-down and the geometry is equally valid. We built a Gemini-based detector that renders three candidate rotations and asks which looks like an actual room. Inelegant. Works. Stanford WiFi. Stanford's network blocks a lot of traffic. Our streaming pipeline kept dying because the university WiFi was dropping connections. Tailscale mesh VPN was the only thing that reliably punched through. Browser-side ML. Running YOLOv8n via ONNX Runtime Web for the patient experience required WASM webpack config and render loop optimization. Smooth real-time detection overlays in a browser are harder than they sound. Modal at Hackathon Speed. Multiple heavy models (Grounding DINO, DPVO, depth estimation, 3D scene reconstruction) on Modal A100 GPUs. Every new model or dependency change meant rebuilding containers with complex dependency trees. A lot of pure engineering to get latency down and orchestrate everything under time pressure. Accomplishments We're Proud Of End-to-end voice to 3D object localization in under ten seconds. Complete 3D scene reconstruction from casual phone video on Modal GPUs. The point clouds came out detailed enough to identify individual objects on shelves. Seeing the first reconstruction was one of those moments where the whole team gathered around a screen. Real-time event propagation to the caregiver dashboard plus email escalation. Zero polling, instant updates, every interaction logged. Evidence-graded medical citations where every answer is tagged with source and confidence level. Most AI assistants just give you an answer. Mira tells you why you should or shouldn't trust it. Patient records de-identified before reaching any LLM. The model never sees a name, date of birth, or identifying information. What We Learned Don't ask a foundation model to do geometry. We tried getting Gemini to predict 3D coordinates directly. Models hallucinate spatial information. Let the model do perception in 2D, handle the 3D math yourself with projection matrices and known geometry. Composing specialist models beats monoliths. Our pipeline chains Whisper, Gemini, Grounding DINO, depth estimation, visual odometry, and more. Same argument behind Grounded SAM: composition is more flexible than one unified model. Add a capability, plug in a specialist. Nothing retrains. Voice-first design changes everything. We prototyped with a touchscreen. Then we thought about using it with low vision, tremor, and cognitive impairment. Scrolling, tapping a 44px button, parsing a settings menu, all become walls. When your user is 80, the only interface that works is speech. Consumer AR hardware isn't there yet. Ray-Ban Metas have no IMU data exposed to developers, no depth sensor, SDK is Android-only. Meta seems to be deliberately restricting developer access because they want to ship their own products on these features first. No display control, no raw sensor data. We hit the ceiling quickly. What's Next for Mira Continuous scene updates. The 3D model is currently from a one-time walkthrough. Objects move. The system should update incrementally as the resident goes about their day. Predictive object tracking. If the event log shows Mrs. Chen leaves her glasses in the fridge every Tuesday, the system should learn that and check there first. Dedicated sensor hardware for fall detection. Ray-Bans don't expose IMU data, so fall detection needs external hardware. A wearable with accelerometer and gyroscope, combined with 3D scene context, could distinguish a real fall from sitting down. Remote monitoring and health device integration. Cameras in common areas, Apple Watch vitals, other health peripherals feeding into the same event stream. Scaling point clouds. One room works. A full facility with hallways, common areas, and dozens of rooms requires procedural rendering and level-of-detail management for very large point clouds, similar to what Foxglove does for robotics data.
Mira — TreeHacks 2026
An AI companion on smart glasses that understands your home in 3D. When a dementia patient says "where are my pills?", Mira actually finds them.
Voice-first assisted living platform combining 3D scene understanding, medical knowledge, and real-time caregiver alerts. Runs on Ray-Ban Meta glasses.
Tech Stack: Next.js · React · Tailwind CSS · Supabase (Postgres + Realtime) · OpenRouter · Whisper STT · OpenAI TTS · Modal (A100 GPU) · Viser · ONNX Runtime Web · Python · FastAPI
System Architecture
Inspiration
Three of us have grandparents with Alzheimer's or dementia. If you've been around it, you know the loop: "Have you seen my pills?" five times in an afternoon. It's not just forgetting — it's the loss of autonomy, the slow erosion of someone's confidence that they can manage their own life.
Many dementia patients refuse traditional care, insisting family handle everything, which puts enormous strain on people who can't be present 24/7. Mira is designed for this gap: asynchronous monitoring without pulling out a phone, assistance at 3 AM, and a caregiver dashboard that keeps family informed.
For someone with Alzheimer's, a searchable spatial memory isn't a convenience. It's dignity.
Modules
3D Reconstruction
| Module | What it does |
|---|---|
| scenegraph/ | Video → 3D scene graph. End-to-end pipeline on Modal (A100): structure-from-motion, Grounding DINO object detection per frame, backprojection into 3D via depth maps + camera poses, geometric overlap + CLIP similarity merging into a Scene Object Graph. See scenegraph/README.md. |
| reconstruction/ | Dense 3D reconstruction — video → dense depth, camera poses, point clouds. |
Camera Localization
| Module | What it does |
|---|---|
| hloc_localization/ | Visual localization via SuperPoint + LightGlue + PnP. Builds an SfM reference map from video (Modal GPU), then localizes new frames against it in 6DoF. Live pose tracking uses DPVO for continuous 6DoF with periodic HLoc re-localization to correct drift. |
Object Localization
| Module | What it does |
|---|---|
| segmentation/ | Image + language query → object segmentation. Open-vocabulary detection and mask generation. |
| depthanything/ | Monocular depth estimation per frame. Used to get depth of segmented objects — median/trimmed mean since mask edges bleed into background. |
Apps & Services
| Module | What it does |
|---|---|
| explorer/ | Interactive 3D point cloud viewer (Viser + FastAPI). Natural language query → Gemini multi-view detection → raycast into point cloud → animated camera fly-to. Auto-detects scene orientation via Gemini rotation voting. |
| mira-chat/ | Full-stack Next.js app — resident voice/text chat (LLM + function calling for spatial nav, medical Q&A, medication lookup), supervisor dashboard with real-time event timeline, caregiver escalation via email. Supabase Realtime for zero-polling updates. See mira-chat/README.md. |
| android/ | Android client app — receives Bluetooth audio + JPEG frames from Ray-Ban Meta glasses, bridges to backend via Tailscale. |
| securitycam/ | Security camera streaming — mediamtx config for RTMP/RTSP/HLS/WebRTC ingestion. |
| vic-backend/ | Backend services. |
Team
| Member | Contributions |
|---|---|
| Nathan | ML pipeline & GPU compute on Modal — object localization, 3D scene reconstruction, camera pose tracking with visual odometry. Security cam integration, point cloud viewer. |
| Victor | Streaming video and audio from the Ray-Ban Meta SDK, linking to frontend, delivering audio feedback back to the user. |
| Madhuhaas | Agentic system and tool-calling pipeline — pulling patient info, web search for medication lookup. Frontend development. |
| Antonio | Online object localization, animated camera fly-to in the 3D viewer, high-level pitch direction, demo video editing. |
What's Next
- Continuous scene updates. The 3D model is currently from a one-time walkthrough. Objects move. The system should update incrementally as the resident goes about their day.
- Predictive object tracking. If the event log shows someone leaves their glasses in the fridge every Tuesday, the system should learn that and check there first.
- Dedicated sensor hardware. Ray-Bans don't expose IMU data, so fall detection needs external hardware — a wearable with accelerometer and gyroscope combined with 3D scene context.
- Health device integration. Apple Watch vitals, cameras in common areas, other health peripherals feeding into the same event stream.
- Scaling point clouds. One room works. A full facility requires procedural rendering and level-of-detail management for very large point clouds.
Analysis
View
Metric
- 32
- 20
- 14
- 7
- 6
Figures cover GitHub contributors during the hackathon window. A co-authored commit counts in full for each author, so per-member totals add up to more than the whole-team figures.
Technology
- CSSIn code
- FastAPIIn code
- HTMLIn code
- KotlinIn code
- Next.jsIn code
- PythonIn code
- ReactIn code
- SQLIn code
- SupabaseIn code
- Tailwind CSSIn code
- TypeScriptIn code
- Google GeminiClaimed
- OpenAIClaimed
- PostgreSQLClaimed
11 of 14 appear in the indexed code. 3 claimed on Devpost could not be matched to code, which may simply mean the tool leaves no trace in the repository.
AI coding agents
- Claude CodeCommits
- CursorCommits
Detected from committed agent config files and commit authorship. Absence of a signal is not proof an agent was unused.
Codebase size
Source size
1.1 MB
Source files
164
Counts recognized source files only; vendored directories, binaries and lockfiles are excluded, so this is smaller than the repository on disk.
Repository
nathanjzhao/treehacks2026
214 files · 49.8 MB · @ 1093d0d
Structure
Interface
77 files · 36%Screens, components and styles rendered to the user.
+1 moreAPI & routing
13 files · 6%Request entry points: routes, handlers and controllers.
Application logic
55 files · 26%Domain rules, services and shared utilities.
+8 moreData & schema
4 files · 2%Schema definitions, migrations and data access.
Supporting
Layers are inferred from where files sit in the tree, not from reading the code. A project that names its directories unconventionally will read oddly here — open the file browser to check anything the diagram implies.
Languages
- Python38%
- Kotlin24%
- TypeScript23%
- Markdown11%
- HTML2%
- XML2%
- Other (3)1%
Share of indexed source by file size. Binary and vendored files are excluded.
Dependencies
mira-chat/package.json
npm · 17- @supabase/supabase-js
- dotenv
- next
- onnxruntime-web
- react
- react-dom
- streamdown
- ws
- +9 more
explorer/requirements.txt
pypi · 9- fastapi
- google-genai
- httpx
- jinja2
- numpy
- Pillow
- trimesh
- uvicorn[standard]
- viser
vic-backend/requirements.txt
pypi · 8- fastapi
- google-cloud-firestore
- google-cloud-storage
- google-cloud-texttospeech
- google-generativeai
- httpx
- python-multipart
- uvicorn[standard]
hloc_localization/frontend/requirements.txt
pypi · 7- fastapi
- httpx
- jinja2
- numpy
- trimesh
- uvicorn[standard]
- viser
scenegraph/requirements.txt
pypi · 7- fastapi
- jinja2
- numpy
- open3d
- trimesh
- uvicorn[standard]
- viser
reconstruction/requirements.txt
pypi · 6- fastapi
- jinja2
- numpy
- trimesh
- uvicorn[standard]
- viser
Declared in the repository’s manifests at the indexed commit. A declared package is not proof it is used, and runtime dependencies are listed first.
This project’s features have not been analysed yet.
Export this project's context (description, README, evidence, key source files) to chat with an AI agent elsewhere.