Unattended GEOINT processing

New collect arrives. The engine exploits it.

3DGeoServEngine runs imagery and SAR exploitation as event-driven pipelines instead of operator-driven sessions. When a collect lands—via ingest, STAC discovery, or a folder drop—the engine matches it to a declarative workflow, runs change detection and target/anomaly detection, persists structured results, and raises alerts. No one has to be watching.

EO / RGB / NAIP / Planet / Sentinel-2 / LandsatSAR · Sentinel-1 · Umbra · Capella · ICEYECoherent Change DetectionATR (YOLOv8)HSI · RX · ACE · MFInSAR / DInSARGMTI (STANAG 4607)Headless server
The pipeline, end to end

Acquire → process → analyze → act.

The exploitation orchestrator subscribes to the in-process event bus. Every stage is a capability call dispatched through the same governed path the in-app GeoAgent uses—so a pipeline step and an analyst’s natural-language request hit the identical validated code.

AcquireS3 upload completes → ingest hookSTAC discovery (5-minute ticker)WebDAV / folder droppublishes imagery.arrived
Match + runYAML pipeline matched by sensor + AOI + revisitprior collect resolved via STACsteps share outputs through templatesasync background steps polled to completion
Persist + actexploit_results linked to the STAC itemmetrics: count, confidence, change %timeline event + exploit.detectionalert rules (threshold + geofence)
Pipelines that ship ready

Two built-in workflows, and a drop-folder for your own.

The starter pipelines fire automatically on arrival and require no code to extend. Drop a YAML file into the pipelines directory to override a built-in by id or add a mission-specific one.

EO · ATR

eo_change_atr

For EO/RGB/NAIP/Planet/Sentinel-2/Landsat: change_detection over the prior collect, then atr_detect_batch (ONNX YOLOv8) over the changed pixels. Raises an alert when the detected vehicle count crosses a threshold.

Sensor: optical  ·  Steps: change-detect → ATR  ·  Acts on: vehicle count

SAR · CCD

sar_ccd

For SAR/Sentinel-1/Umbra/Capella/ICEYE: sar_change_detect (coherent change detection) between registered scenes. Raises an alert when the changed-area percentage crosses a threshold.

Sensor: SAR  ·  Steps: CCD  ·  Acts on: change %

No code required to customize.

Each step renders its parameters through templates that thread the new path, the prior path, and prior step outputs between stages. Compose the building blocks below into the sequence your mission thread requires; the orchestrator handles dispatch, async polling, cancellation, and result persistence.

Capability building blocks

The same detection engines an analyst runs—now on a trigger.

Every block is a registered, schema-described capability reachable from a pipeline step, a GeoAgent request, or a direct API call. Optical, SAR, and hyperspectral paths are all first-class.

OPT

EO change detection

Pixel-diff, CVA, and IR-MAD change methods over co-registered optical collects, backed by the rasterio/numpy processing service. Outputs a change map and changed-pixel mask for downstream steps.

SAR

SAR amplitude + coherence CD

Amplitude Change Detection (ACD → RGB change map) and Coherent Change Detection (CCD → coherence map + change mask) between registered SAR scenes.

ATR

Automatic target recognition

ONNX YOLOv8 detection (atr_detect / atr_detect_batch) over an image or a changed region, with confidence scores feeding alert thresholds.

HSI

Hyperspectral tipoff

RX anomaly (hs_anomaly_rx), ACE sub-pixel target (hs_target_ace), and Matched Filter (hs_target_mf) detection; SAM matching against USGS/JPL spectral libraries.

PREP

Radiometric normalization

TOA reflectance atmospheric correction (atcorr_toa_reflectance) so cross-sensor and cross-date comparisons are comparable before differencing.

GEO

Precision geo-location

NITF 2.1 RPC image-to-ground mensuration pins a pixel detection to a lat/lon so an alert rule or a report carries an authoritative coordinate.

Radar and interferometry

SAR handled as a first-class sensor, not a footnote.

Beyond coherent change detection, the engine registers SAR scenes, runs interferometric jobs asynchronously, and ingests ground moving-target telemetry.

CapabilityWhat it doesOutput
InSAR / DInSAR jobsAsync interferometric processing of registered SAR scene pairsCoherence map, phase map, line-of-sight displacement map (cm)
InSAR coherence change detectionDetects coherence loss between scenesChange mask + coherence raster
SAR scene catalogRegister scenes with satellite, pass date, orbit, incidence angle, polarization, bboxQueryable catalog consumed by pipeline prior-collect resolution
GMTI ingestion (STANAG 4607)Parse ground moving-target report dwell segments and target reportsPosition, velocity, heading, target classification per report
Subsidence analysisTime-series displacement from elevation/InSAR inputsSubsidence raster and statistics
How unattended actually works

Event-driven, with a discovery backstop—not a brittle cron.

Three independent arrival paths publish the same event, so the pipeline fires whether data is pushed, discovered, or dropped by hand. A generic async job store governs every run so a failure never wedges the orchestrator.

EV

Arrival-triggered

An S3 upload completing, a manual drop, or a WebDAV sync all publish imagery.arrived on the in-process event bus. The orchestrator subscribes and matches—no polling cron job to forget.

5m

STAC discovery backstop

A five-minute background ticker republishes synthetic arrival events for STAC items newer than the last-seen timestamp, catching collects that appear without an explicit upload hook.

YAML

Declarative pipelines

Templates match by sensor type, area of interest, and revisit window. Prior-collect resolution skips a run when no valid baseline exists within the revisit cap.

JOB

Watchdog-governed runs

The async job store enforces a 60-minute timeout, recovers from panics to a terminal failure, retains a capped history, and cancels cleanly on context cancellation.

HUB

One jobs surface

Every provider—exploitation, downloads, conversions—exposes its jobs through a shared read-only aggregator, so an operator sees all unattended work in one place.

SVC

Headless deployment

The same backend runs as a Wails-free server binary behind systemd, a Windows Service, or a LaunchDaemon. That is what makes the pipeline unattended in production, not just in a desktop session.

From detection to decision product

Alerting is automatic. Reporting is one step away.

A detection becomes operational when it reaches the right person in the right format. The alert fan-out ships today; the report builder is the same API-callable engine that generates analyst documents.

ALERT · TODAY

Automatic fan-out on detection

Every exploit.detection enters the alert engine, where threshold and geofence rules can route it through SMS, email, push, HMAC webhooks, the unified timeline, and a live WebSocket. The detection’s geo-location, confidence, and change metrics travel with it.

See the event + alert engine →
REPORT · ONE STEP

AI-populated report generation

The report builder produces SITREP, INTSUM, Damage Assessment, Area Study, and Field Survey documents as PDF/HTML. Sections with an AI prompt auto-populate—photo vision enrichment, EXIF reverse-geocode, and an analyst-voice narrative. Wiring a detection to auto-generate a BDA/FSA report is an integration step, not a missing capability.

Explore the analytics layer →

Stating the boundary honestly.

Acquire → process → analyze → alert and persist is fully unattended today. The final analyze → report link is a short, well-defined integration the operator assembles—both ends are shipping, API-driven services—rather than a built-in auto-trigger. We will show you exactly where that wire goes in during an architecture review.

Reach it from anywhere

REST, WebSocket, GeoAgent, or a dropped file.

The same exploitation surface is reachable however your environment works—unattended, on-demand, or conversational.

SurfaceEndpointUse
StatusGET /api/exploit/statusOrchestrator health and active pipelines
PipelinesGET /api/exploit/pipelines[/{id}]List or inspect declarative pipeline templates
Manual runPOST /api/exploit/runTrigger a pipeline on demand (outside the event path)
JobsGET/DELETE /api/exploit/jobs[/{id}]Poll or cancel async runs
ResultsGET /api/exploit/results[/{id}]Persisted metrics linked back to STAC items
Live/api/exploit/wsWebSocket stream of detections and run progress
ConversationalGeoAgentRun any pipeline capability from a natural-language request through the shared dispatch path

Bring a sensor pair and a revisit window. Watch the engine exploit the next collect on its own.

Design an exploitation pilot →