Meta Stella App v273.0.0.21 Facial Recognition Analysis

Meta Stella App Contains Dormant Facial Recognition Pipeline

Analysis of the Stella companion app (version 273.0.0.21, package com.facebook.stella) for Meta's smart glasses reveals a fully assembled, functional, but dormant on-device facial recognition stack. While the system is not active for ordinary users on stock accounts, the complete machinery for detecting, fingerprinting, and identifying individuals is present in the build.

On-Device Biometric Model Stack

The app ships with three specific ExecuTorch (.pte) models delivered via Meta's NMLML asset-delivery system. These models enable the full pipeline from raw image to biometric fingerprint:

Asset Name File Size Function
android_facerec_scrfd SCRFD.pte 3.4 MB Face detection in images
android_facerec_kps_aligner KPSAligner.pte 117 KB Face cropping and alignment
android_facerec_sface SFace.pte 96 MB Generation of 2048-dimension biometric embeddings

These models are based on open-source architectures, including SCRFD (InsightFace) and SFace. Notably, Meta's SFace implementation is larger (96 MB) and produces a higher-dimension output (2048) than the standard public reference.

Vector-Similarity Index and Storage Schema

The recognition system utilizes a local SQLite database located at /data/user/0/com.facebook.stella/files/rldrive/person_profiles/objects.db. This database uses the sqlite-vec extension (vec0) to perform cosine-similarity searches against biometric fingerprints.

Database Schema

  • person table: Stores nodeid, name, uri, and a blob.
  • face table: Maps mediaPath to a personUri.
  • face_mediaPath_vec virtual table: Stores the 2048-float biometric fingerprints using a cosine distance metric, matching the output of the on-device SFace model.

Handling of Unrecognized Faces

When the pipeline encounters a face that does not match the local index, it writes the data to /data/user/0/com.facebook.stella/files/NameTagsPending/. This directory stores two files per unrecognized face:

  1. A .jpg file containing the cropped and aligned face image.
  2. An .emb file containing the 2048-number SFace fingerprint (8,192 bytes, L2-normalized float32).

This mechanism allows for the storage of biometric records that can be retroactively identified if a label is provided later.

User Interface and Notification Surface

The app includes a fully wired Android notification channel named nametags_recognition. When a match is found, the system triggers a high-importance notification with the title "Person recognized" and the body "Recognized [Name]".

UI Components

  • Deep Linking: Notifications include a contentIntent that deep-links to fb-viewapp://name_tags?face_id=<face_id>, intended to open a person-profile screen.
  • Connections Widget: The APK contains a "Connections" card with text encouraging users to "Remember the people you met and make new connections."

Despite these components, the target profile screen is absent from the navigation graph in version 273, and the "Connections" card is not visible to unenrolled users on stock accounts.

Community Perspectives and Privacy Concerns

Technical discussion regarding these findings highlights significant privacy and legal concerns, particularly regarding biometric data collection without explicit consent.

"I fail to see how nonstop recording of every interaction with people in everyday life will pass muster in a two-party consent state."

Other contributors noted the potential for legal challenges under the Biometric Information Privacy Act (BIPA) in Illinois and the general creepiness of a system that could potentially identify strangers in real-time. Some users suggested that such a capability is an engineering investment that does not ship by accident, regardless of whether it is currently enabled in production.

Sources