Project Info
Inspiration
Physical debugging is still painfully manual. When software breaks, we have Git history, diffs, and blame. When a real world workflow breaks, teams usually scrub hours of video and guess what happened. That gap inspired ctrl+f: a system that treats physical environments like a version controlled timeline, so you can ask “what changed, when, and why?” instead of manually hunting through footage. Our idea originated from struggles in maintaining persistent memory in long context video modalities especially when passed to a vision language model. We wanted a good way to identify key frames of references and represent the world state as efficient as possible.
What it does
ctrl+f is physical version control for real spaces. It continuously observes a workspace, tracks object level changes, and builds a semantic event history. Users can then run natural language investigations such as: “Where did the blue book go?” “When was the laptop moved?” “What changed before the failure?” The system returns ranked, timestamped evidence in an investigation interface with: Table view for structured evidence review Calendar view for time based exploration Paginated results for deeper investigation Instead of raw clips only, users get queryable, structured memory.
How we built it
We built ctrl+f as a three layer pipeline. 1. Edge Perception Layer (Jetson class stack) DeepStream + YOLO inference for real time detections Custom multi frame tracking for stable identity and movement state On device VLM checks for movement, disappearance, and reappearance reasoning This layer converts raw pixels into structured object level events. 2. Semantic Memory Backend FastAPI service deployed with Modal Text + metadata ingestion endpoints Embedding generation Vector indexing with Elasticsearch for semantic retrieval This transforms scene changes into searchable memory. 3. Investigation Frontend React + TypeScript interface Query → process → results investigation flow Timeline style date exploration Paginated evidence display We focused on building a practical investigation UX, not just a model demo.
Challenges we ran into
Detection instability in real scenes Occlusions, temporary missed detections, and class label drift created noisy event streams. We had to design tracking logic that tolerated real world imperfections. Latency vs reasoning depth We needed richer semantic reasoning without blocking edge responsiveness. This required a hybrid approach: fast detection first, deeper reasoning selectively. Search quality depends on schema quality Retrieval improved only after refining event text structure and metadata consistency. Good embeddings alone were not enough. Full stack integration pressure Synchronizing edge outputs, backend contracts, and frontend UX under hackathon constraints required tight coordination across the stack. Jetson Nano Struggles Trying to get our pipelines to work on the jetson nano for the first time as we have had no exposure to such Nvidia devices prior
Accomplishments we're proud of
Built a true end to end prototype from live perception to semantic investigation Implemented robust tracking logic that handles physical world noise Turned scene changes into a queryable memory layer Delivered a practical investigation interface, not just model outputs Framed and validated a strong product concept: “Git Blame for Reality”
What we learned
In edge AI systems, reliability engineering matters as much as raw model accuracy Hybrid pipelines combining fast detectors and selective deeper reasoning work well in practice Explainable, time grounded logs are essential for trust and usability Great demos require tight coupling between ML outputs and user facing workflows
What's next
Add stricter privacy first mode with semantic retention by default and configurable media retention Expand to multi camera and multi agent coordination Improve causal diagnostics so the system explains why something likely happened, not only what changed Add deployment hardening: monitoring, evaluation benchmarks, and failover behavior Extend to mobile sensing workflows for broader real world coverage ctrl+f is our first step toward making physical environments as debuggable as software systems.
Ctrl-F: Intelligent Video Observation & Search
Built for TreeHacks 2026 — Full Project Details on Devpost
Ctrl-F is an end-to-end, edge-to-cloud intelligent surveillance system that transforms raw video feeds into a searchable, semantic database. Instead of just recording footage, it "understands" the scene locally and allows users to query history using natural language.
👥 The Team
- Benjamin Aleman (alemanb)
- Abhinav Srivatsa (adsrivatsa)
- Wei Jiang (mr2wei)
- Preet Sojitra (preetsojitra2712)
🚀 System Architecture
The system is split into a high-performance edge pipeline and a scalable cloud intelligence layer:
1. Edge Compute (NVIDIA Jetson Orin Nano Super)
Located in the deepstream/ directory, the edge node handles the heavy lifting of computer vision:
- Vision Pipeline: DeepStream + YOLO for real-time object detection and multi-object tracking (MOT).
- Local Reasoning: NanoLLM / local VLM service provides semantic enrichment, turning raw bounding boxes into natural-language observations.
- Frame Server: A lightweight HTTP server serves captured frames directly from the edge for UI inspection.
- Ingestion: Asynchronously pushes enriched observations to the cloud backend.
2. Cloud Backend (Modal)
Located in the backend/ directory, deployed as serverless functions on Modal:
- FastAPI: Provides
/ingestand/searchendpoints. - Intelligent Search: A multi-agent RAG workflow involving query expansion and temporal reasoning.
- Embedding & Storage: Uses Jina embeddings to store data in Elasticsearch Cloud (Vector + Metadata store).
3. Frontend (React + TypeScript)
Located in the frontend/ directory:
- Investigation UI: A modern dashboard for searching through historical observations.
- Visualization: Calendar and table views with direct deep-links to frame images hosted on the Jetson edge device.
🛠️ Tech Stack
- Hardware: NVIDIA Jetson Orin Nano Super
- Edge AI: NVIDIA DeepStream, NanoLLM, YOLO
- Cloud/Infra: Modal (Serverless), Elasticsearch Cloud
- LLM/Embeddings: OpenAI GPT-4o, Jina AI
- Frontend: React, TypeScript, Vite, Tailwind CSS
🔄 Data Flow
- Capture: Webcam feed processed by DeepStream on the Jetson.
- Analyze: VLM generates natural-language descriptions of tracked objects.
- Sync: Observations are POSTed to the Modal backend.
- Index: Modal embeds the text and indexes it into Elasticsearch.
- Query: User enters a natural language query in the React UI.
- Retrieve: Backend agents perform a vector search + re-ranking and return the most relevant video frames.
Analysis
View
Metric
- 9
- 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
- HTMLIn code
- JavaScriptIn code
- OpenAIIn code
- PythonIn code
- ReactIn code
- Tailwind CSSIn code
- TypeScriptIn code
- FastAPIClaimed
- Node.jsClaimed
- OllamaClaimed
8 of 11 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
No AI coding agent signals were found in this repository.
Detected from committed agent config files and commit authorship. Absence of a signal is not proof an agent was unused.
Codebase size
Source size
528 KB
Source files
84
Counts recognized source files only; vendored directories, binaries and lockfiles are excluded, so this is smaller than the repository on disk.
Repository
alemanb/treehacks-2026
101 files · 1.3 MB · @ b62e369
Structure
Interface
18 files · 18%Screens, components and styles rendered to the user.
API & routing
2 files · 2%Request entry points: routes, handlers and controllers.
Application logic
35 files · 35%Domain rules, services and shared utilities.
Data & schema
3 files · 3%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
- Python48%
- Markdown37%
- TypeScript10%
- Shell4%
- CSS1%
- HTML0%
- Other (1)0%
Share of indexed source by file size. Binary and vendored files are excluded.
Dependencies
frontend/package.json
npm · 26- @tailwindcss/vite
- @tanstack/react-table
- class-variance-authority
- clsx
- date-fns
- lucide-react
- radix-ui
- react
- react-day-picker
- react-dom
- tailwind-merge
- tailwindcss
- +14 more
modal/pyproject.toml
pypi · 8- agno
- dateparser
- elasticsearch
- fastapi[standard]
- modal
- openai
- pytest
- requests
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.