Pin titiler to the Pi-running digest, make workers=1 explicit for in-memory WS/layer caches, and add PostGIS GIST indexes for events/fires bbox pans without dropping the existing btree indexes.
Phase 1: in-memory ConnectionManager viewport fan-out, 500ms map debounce, cachetools TTLCache, background masscan/ffmpeg, compose memory caps. Phase 2: PostGIS geofences + ST_Intersects alerts, Timescale 1-min CAGGs and timestamp playback, FIRMS/WFIGS x firefighting ADS-B within 20 miles. No Redis/Kafka/Celery.