osint-dashboard/app
Sirius DevOps 1f23083351 feat(vessels): VesselAPI quota-capped AIS poller for Middle East blind spot
Add a server-side REST poller for VesselAPI (free tier 150 calls/mo) that
upserts last-known positions into the shared vessel_last_known store when
AISStream is unset. Default box is the Strait of Hormuz (span 3.6 <= 4 deg),
never CONUS/NC (AISStream owns US coasts).

- app/vesselapi.py: worker loop, 4deg span validator, position->marker
  transform (skip suspected_glitch), durable Postgres daily-quota table.
- Local hard cap 5 successful 2xx/UTC day (VESSELAPI_MAX_CALLS_PER_DAY),
  monthly floor from X-RateLimit-Remaining, single request limit=50, no
  nextToken, no filter.sat, no retry-storm.
- keystore VESSELAPI_API_KEY registry entry; config + compose env passthrough
  (app + ingest); wired next to AISStream in main.py lifespan + run_ingester.
- GET /api/vessels docstring notes AISStream and/or VesselAPI cache.
- tests/test_vesselapi.py: 20 unit tests (no network/DB).
2026-08-29 00:18:54 -04:00
..
static fix(aircraft): show planespotters photo in overlay popup 2026-08-28 23:28:28 -04:00
ais_stream.py feat: AIS stream follows the map viewport 2026-08-27 21:50:38 -04:00
bg_jobs.py feat: lean-Pi WS fan-out, geofences, DVR playback, fire/aircraft correlation 2026-08-28 09:35:18 -04:00
camera_config.py feat: toggleable live map feeds (ADS-B, trains, AIS, radar, WFIGS, NWS) 2026-08-27 19:08:30 -04:00
camera_hls.py cameras: Live-Environment-Streams + HLS.js player 2026-08-27 15:54:54 -04:00
camera_models.py Add open IP camera discovery scraper (OSINT map) 2026-08-24 14:54:51 -04:00
camera_preview.py feat: lean-Pi WS fan-out, geofences, DVR playback, fire/aircraft correlation 2026-08-28 09:35:18 -04:00
camera_scraper.py feat: toggleable live map feeds (ADS-B, trains, AIS, radar, WFIGS, NWS) 2026-08-27 19:08:30 -04:00
config.py feat(vessels): VesselAPI quota-capped AIS poller for Middle East blind spot 2026-08-29 00:18:54 -04:00
database.py Add NASA FIRMS active-fire ingest + /api/fires; API keys management page 2026-08-24 15:37:42 -04:00
docker-entrypoint.sh fix: merge alembic heads so the dashboard stops crash-looping 2026-08-28 18:29:06 -04:00
fire_aircraft.py feat: lean-Pi WS fan-out, geofences, DVR playback, fire/aircraft correlation 2026-08-28 09:35:18 -04:00
fire_sources.py fix: pipeline reliability — WS, summarizer, ingest, health 2026-08-28 21:49:05 -04:00
geofence.py feat: lean-Pi WS fan-out, geofences, DVR playback, fire/aircraft correlation 2026-08-28 09:35:18 -04:00
gibs_map.py Map: clamp GIBS daily-layer latest to yesterday UTC — today's mosaic isn't ingested yet at 00:xx UTC so tiles 404'd and the map went black 2026-08-24 20:47:50 -04:00
ingest_cron.py first commit 2026-06-04 20:30:04 -04:00
ingestor.py fix: chunk FIRMS bulk inserts under asyncpg 32767 bind cap 2026-08-28 22:22:12 -04:00
keystore.py feat(vessels): VesselAPI quota-capped AIS poller for Middle East blind spot 2026-08-29 00:18:54 -04:00
live_layers.py fix(aircraft): show planespotters photo in overlay popup 2026-08-28 23:28:28 -04:00
main.py feat(vessels): VesselAPI quota-capped AIS poller for Middle East blind spot 2026-08-29 00:18:54 -04:00
masscan_config.py cameras: RTSP preview via ffmpeg, stop opening VLC, drop masscan to 200pps 2026-08-24 23:36:34 -04:00
masscan_scanner.py cameras: map only working HTTP/MJPEG feeds 2026-08-25 22:05:15 -04:00
models.py feat: 23:00 daily news recap; prompts drop futures 2026-08-28 22:53:31 -04:00
requirements.txt feat: lean-Pi WS fan-out, geofences, DVR playback, fire/aircraft correlation 2026-08-28 09:35:18 -04:00
run_camera_service.py Add open IP camera discovery scraper (OSINT map) 2026-08-24 14:54:51 -04:00
run_ingester.py feat(vessels): VesselAPI quota-capped AIS poller for Middle East blind spot 2026-08-29 00:18:54 -04:00
run_masscan_service.py masscan: active RTSP (554) camera discovery service 2026-08-24 22:23:36 -04:00
schemas.py feat: 23:00 daily news recap; prompts drop futures 2026-08-28 22:53:31 -04:00
settings_store.py feat: persist summarizer model in app_settings 2026-08-28 17:06:55 -04:00
sources.py fix: pipeline reliability — WS, summarizer, ingest, health 2026-08-28 21:49:05 -04:00
tracks.py feat: lean-Pi WS fan-out, geofences, DVR playback, fire/aircraft correlation 2026-08-28 09:35:18 -04:00
upstream_cache.py feat: lean-Pi WS fan-out, geofences, DVR playback, fire/aircraft correlation 2026-08-28 09:35:18 -04:00
vesselapi.py feat(vessels): VesselAPI quota-capped AIS poller for Middle East blind spot 2026-08-29 00:18:54 -04:00
ws_manager.py fix: pipeline reliability — WS, summarizer, ingest, health 2026-08-28 21:49:05 -04:00