Architecture & Data Flow

Last updated: 2026-06-23 · Operated by Aikey, Inc.
Quick reference for reviewers. This page answers Ring partner onboarding questions about data flow and architecture. Two sections, each at its own anchor:

1. Data Storage Locations and Systems

StrangerAIert runs in a single AWS region (configured at deploy time; AWS_REGION environment variable). The table below lists every category of data we store, where it lives, and how long it is retained. Aikey, Inc. is the data controller. All storage systems are accessible only by the StrangerAIert application and its operators.

Data category Storage system Location Retention
User account (email, hashed password, time zone, country) AWS RDS PostgreSQL AWS Configured AWS region While the account is active
Ring OAuth refresh / access tokens AWS RDS PostgreSQL AWS Configured AWS region Until the user disconnects Ring
Camera motion video clips (mp4, audio included) AWS S3 AWS Configured AWS region 90 days, then deleted by a daily automated cleanup. The owning account row in the database is marked anonymized at the same time (S3 URL set to NULL).
Webhook event audit log EC2 local JSONL EC2 Same region as compute 90 days, then pruned automatically — matches Ring's own ~90-day clip availability, so older entries cannot be used to re-pull video anyway.
Local cache of webhook clips (mp4 + faces.json) EC2 local EC2 Same region 90 days, then deleted. S3 copy stays; we re-pull from S3 if needed for re-analysis.
Face crops + FAISS embeddings — registered persons (Familiar / Watchlist) EC2 local EC2 Same region Kept while the person stays registered (so future visits still match).
Face crops + FAISS embeddings — unregistered persons EC2 local EC2 Same region Kept in full while the person is active (any visit in the last 90 days). After 90 days of inactivity, trimmed to one best face per viewing angle (front / half-profile / profile) plus the matching FAISS vectors — enough to keep re-identifying the person when they next appear without the cost of storing every detected frame.
Person tracker metadata (sessions, categories, names) EC2 local JSON EC2 Same region While the account is active. Inactive entries get an archived marker after 90 days but the metadata itself is preserved for history.
Browser session cookie (login state) User browser Browser User's device 30 days inactivity then expires
Web Push subscription endpoint EC2 local JSON EC2 Configured AWS region Until the user disables notifications
Application + access logs EC2 local (rolled) EC2 Configured AWS region 10 MB × 5 files (auto-rotated)
Webhook receipt audit log EC2 local JSONL EC2 Configured AWS region 90 days (see above row)

Diagram — storage map

Where each category lives, grouped by system:

USER DEVICE (Browser) Session cookie login state, 30d inactivity PWA install (iOS) service worker only AWS region (configured at deploy time) EC2 (FastAPI application server) Face recognition pipeline • FAISS index (ArcFace + AdaFace) • Face crops working cache Application metadata • person_tracker.json • reviewed_history.json • push subscriptions • webhook audit log Logs (rolling) • application logs (10MB × 5) • systemd journal RDS PostgreSQL User accounts • email, password hash • country, time zone Ring OAuth tokens refresh + access AWS S3 Motion video clips • mp4 + audio (~20s) • 90 days, auto-deleted Face crops JPEG, 90 days SES (egress only) password reset emails no inbox / no storage Let's Encrypt TLS certificate only no data Solid border = first-party storage. Dashed border = AWS region perimeter. Browser side only stores a login cookie (no clips, no faces, no tokens).

Sub-processors

We do not use any advertising network, analytics platform, or third-party AI vendor that processes face data on our behalf.

2. Data Flow Between Systems

The numbered flows below describe how data moves through StrangerAIert. Each flow stays inside the configured AWS region for compute and storage; the only egress is the encrypted Web Push delivery to the platform push provider (FCM / Mozilla / Apple), which routes the payload to the user's device.

Ring Cloud Cameras & OAuth API Ring partner API EC2 (FastAPI server) strangeralert.aikey.ai webhook + dashboard + push hourly batch analysis S3 video clips (mp4) face crops (jpg) RDS PostgreSQL accounts + Ring tokens SES password reset email Push provider FCM / Mozilla / Apple encrypted payload only User Device browser / PWA dashboard + push receive ① Webhook motion_detected, ding ② Clip request mp4 + audio ③ Clip download 20s mp4 incl. audio ④ Upload clip ⑤ User data ⑥ Password reset ⑦ Web Push VAPID-signed ⑧ Device push ⑨ Dashboard (HTTPS)

Flow descriptions

Security notes

Cross-references

The retention periods and user controls in this diagram are described in more detail in the Privacy Policy — in particular Section 9 (Data Sharing and Sub-processors) and Section 10 (Data Retention).