Hi everyone!
My name is Darshan Samuel Nayak, I have submitted an Original Idea proposal for GSoC 2026, and I wanted to drop the architectural summary here for asynchronous review by the Shell and Tracker teams, as I know Matrix is incredibly busy today with the deadline.
The Pitch: gnome-semsearch
Currently, standard desktop indexers rely on exact keyword matching. Proprietary alternatives (like Windows Recall) solve this using invasive screen recording or cloud-tethered AI.
I am proposing a lightweight, background system service that brings AI-powered natural language search to the GNOME desktop with a strict 100% offline, privacy-first guarantee. It locally indexes text files, markdown, and source code into vector embeddings, allowing users to query their files natively from the GNOME Shell overview (e.g., “Python script where I annotated the dataset”).
Proposed Tech Stack & Architecture
To ensure zero battery drain and no UI stuttering, this is treated as an Edge AI problem:
- Inference: A quantized
all-MiniLM-L6-v2model (~22MB) running purely on the CPU via ONNX Runtime (ortcrate). Inference takes milliseconds. - Storage: Local in-process vector storage using SQLite combined with the highly optimized
sqlite-vecC-extension. - Chunking:
tree-sitterbindings to parse ASTs, allowing code (C++, Python, Rust) to be chunked by semantic function/class boundaries rather than arbitrary character counts. - IPC: Exposing the search results directly to GNOME Shell via the
org.gnome.Shell.SearchProvider2D-Bus API usingzbus.
Proposed system architecture flow
An Open Architectural Question: Tracker Integration
My initial draft designs this as a standalone Rust daemon with its own file watcher (notify crate). However, to adhere to GNOME’s best practices and avoid duplicating file-watching overhead, I am highly open to architecting the ML inference pipeline as an extension for tracker-miners, provided Tracker’s SPARQL backend can accommodate or link to dense vector storage.
I would love to hear thoughts from the core maintainers on whether a standalone SearchProvider or a Tracker integration is the preferred “GNOME Way” for an experimental feature like this.
I have already submitted my formal proposal PDF to the GSoC dashboard to meet today’s deadline. I know the review period is chaotic, but if any mentors from the Shell, Mutter, or Tracker teams find this architecture interesting, I would be incredibly grateful for your feedback!
Thanks for your time and all your work on GNOME!
Darshan
