VIMI: VIMI Integrated Mission Infrastructure

A DoD-Grade LVC Mission Processing Framework for Live/Virtual/Constructive Simulation and Federated Training


Version 1.0 — April 2026

Author: STS Gym Research — stsgym.com




Abstract


VIMI (VIMI Integrated Mission Infrastructure) is a DoD-aligned mission processing framework that integrates satellite-based infrared (IR) sensor data, multi-source track fusion, missile warning workflows, and federated simulation interoperability into a single, deployable system. Built on 10 Go-based microservices orchestrated in Kubernetes, VIMI processes SBIRS/NG-OPIR satellite sightings through a streaming Kafka pipeline to generate real-time threat tracks and alert levels in accordance with CONOPREP doctrine. The system bridges live assets, virtual simulators, and constructive (AI-generated) entities via DIS (IEEE 1278.1) and HLA (IEEE 1516-2010) protocols, enabling multi-federation joint training scenarios.


This paper describes VIMI's architecture, deployment methodology, current operational status, and a roadmap for completing the system's transition to a fully operational training and mission processing platform.




1. Introduction


1.1 Background


Modern DoD simulation-based training requires interoperability across geographically distributed systems, combining real-world sensor feeds (live), operator-driven simulations (virtual), and AI-generated entities (constructive) into unified training events. This LVC (Live/Virtual/Constructive) architecture is essential for exercises such as Ulchi-Freedom Guardian, which involve joint and coalition forces.


Current DoD mission processing systems — including Raytheon's FORGE MDPAF (Mission Data Processing Application Framework) for OPIR satellite data — provide a reference model for how infrared satellite data flows from sensor to warfighter. VIMI replicates and extends this model as an open training platform.


1.2 Purpose


VIMI serves two primary purposes:


  1. Training Platform: Provides a realistic, deployable simulation environment where live missile events can be generated, tracked through the complete sensor-to-alert chain, and coordinated across multiple federates (DIS, HLA, TENA) in real time.

  1. Mission Processing Reference: Demonstrates a standards-compliant, cloud-native architecture for processing infrared satellite data through threat detection, track correlation, and alert dissemination — implementable on any Kubernetes cluster with Kafka.

1.3 Operational Status


VIMI is currently deployed on a Kind (Kubernetes in Docker) cluster running on a single development server. All 10 microservices are operational, the Kafka pipeline is live, and Prometheus monitoring is active for all services. The system generates simulated satellite sightings at configurable intervals, producing threat tracks and CONOPREP-level alerts within the pipeline.


This paper documents VIMI v1.0 as of April 2026.




2. Architecture Overview


2.1 System Architecture


VIMI is built as a distributed microservices system in Go 1.22, containerized with Docker, and orchestrated in Kubernetes. Services communicate via Apache Kafka for asynchronous event streaming and HTTP/REST for synchronous queries.


┌─────────────────────────────────────────────────────────────┐
│                      SBIRS / NG-OPIR Satellites              │
└───────────────────────┬─────────────────────────────────────┘
                        │ IR Sighting Data
                        ▼
┌─────────────────────────────────────────────────────────────┐
│                   opir-ingest :8081                         │
│   Ingests IR sightings, simulates satellite positions,       │
│   publishes EntityStatePDUs + SightingEvents to Kafka       │
└───────────────────────┬─────────────────────────────────────┘
                        │ vimi.opir.sightings (Kafka)
                        ▼
┌─────────────────────────────────────────────────────────────┐
│            missile-warning-engine :8080                      │
│   Kalman filter trajectory estimation, threat classification  │
│   (SRBM/MRBM/IRBM/ICBM), impact point prediction            │
│   → MissileTrack objects published to vimi.missile.tracks   │
└───────────────────────┬─────────────────────────────────────┘
                        │ vimi.missile.tracks (Kafka)
                        ▼
┌─────────────────────────────────────────────────────────────┐
│                   sensor-fusion :8082                      │
│   JPDA (Joint Probabilistic Data Association)              │
│   Multi-sensor track correlation, track ID management        │
│   → FusedTrack objects to vimi.tracks.fused                 │
└───────────────────────┬─────────────────────────────────────┘
                        │ vimi.tracks.fused (Kafka)
                        ▼
┌─────────────────────────────────────────────────────────────┐
│              alert-dissemination :8084                       │
│   CONOPREP → IMMINENT → INCOMING → HOSTILE alert levels    │
│   C2 message formatting, JTIDS net assignment              │
│   NCA/Pentagon/SOCOM notification routing                   │
└───────────────────────┬─────────────────────────────────────┘
                        │ vimi.alerts (Kafka)
                        ▼
┌─────────────────────────────────────────────────────────────┐
│                lvc-coordinator :8083                        │
│   DIS Entity State PDU management, dead reckoning (FOM)      │
│   Live/Virtual/Constructive entity split, force tracking    │
└───────────────────────┬─────────────────────────────────────┘
                        │
         ┌──────────────┴──────────────────────────────────┐
         │                                             │
         ▼                                             ▼
┌────────────────────────────┐              ┌────────────────────────────┐
│      env-monitor :8085      │              │     replay-engine :8086     │
│  1° global environmental   │              │  DIS PDU recording to       │
│  grid, cloud/precip/wind   │              │  .dispcap files, playback   │
│  SBIRS/AWACS/PATRIOT rating │              │  catalog API                │
└────────────────────────────┘              └─────────────────────────────┘
         │                                             │
         └──────────────────────┬─────────────────────┘
                                │
                                ▼
┌─────────────────────────────────────────────────────────────┐
│                 data-catalog :8087                         │
│   OGC CSW (Catalogue Service Web), REST API                 │
│   Track/alert/recording discovery, keyword/BBox filtering  │
└───────────────────────┬─────────────────────────────────────┘
                        │
                        ▼
┌─────────────────────────────────────────────────────────────┐
│              dis-hla-gateway :8090                         │
│   DIS ↔ HLA bidirectional translation                       │
│   EntityStatePDU / FirePDU / DetonationPDU                 │
│   HLA OMT class mapping, ECEF ↔ WGS84 conversion           │
│   Kafka topics: vimi.hla.* ↔ vimi.dis.*                    │
└───────────────────────┬─────────────────────────────────────┘
                        │
                        ▼
┌─────────────────────────────────────────────────────────────┐
│                  vimi-plugin :8091                         │
│   CICERONE web UI integration                              │
│   Globe display (tracks/alerts/env), command API           │
│   Commands: vimi status/tracks/alerts/lvc/env/inject/globe│
└─────────────────────────────────────────────────────────────┘

2.2 Infrastructure Requirements


ComponentMinimumProduction
Compute4 cores, 8GB RAM16+ cores, 32GB+ RAM
KubernetesKind (single node)Multi-node K8s cluster
Kafka1 broker3-broker KRaft cluster
Storage20GB100GB+ (replay/events)
Network1 Gbps10 Gbps (federation)

2.3 Repository Structure


The complete VIMI system is contained in a single git repository:


trooper-vimi/
├── VIMI-FOM/FOM.xml              # HLA Federation Object Model
├── dis-pdu/REGISTRY.md           # DIS PDU type registry
├── apps/                          # 10 microservice directories
│   ├── opir-ingest/               #   Satellite data ingestion
│   ├── missile-warning-engine/     #   Threat detection + tracking
│   ├── sensor-fusion/             #   Multi-source track fusion
│   ├── alert-dissemination/       #   Alert level management
│   ├── lvc-coordinator/            #   Entity state + force tracking
│   ├── env-monitor/               #   Environmental grid monitoring
│   ├── replay-engine/             #   Event recording + playback
│   ├── data-catalog/              #   OGC CSW discovery service
│   ├── dis-hla-gateway/           #   DIS↔HLA translation
│   └── vimi-plugin/               #   CICERONE UI integration
├── k8s/vimi-cluster/               # Kubernetes manifests
├── cicerone-scripts/               # CICERONE CLI extensions
├── scripts/ci/                     # CI/CD runner registration
└── docs/VIMI-INSTALL-GUIDE.md    # Deployment guide



3. Detailed Component Descriptions


3.1 opir-ingest


Purpose: Simulates infrared (IR) satellite sensor data from SBIRS (Space-Based Infrared System) and Next-Generation OPIR satellites. Generates realistic missile launch signatures with configurable false-alarm rates.


Inputs: Configuration (satellite constellation, sensor modes, DIS exercise ID)


Outputs:


Key Features:


DoD Alignment: Replicates the SBIRS mission processing chain described in Raytheon's FORGE MDPAF architecture.




3.2 missile-warning-engine


Purpose: The core threat processing engine. Receives IR sightings and produces missile track objects with trajectory estimation, missile type classification, and impact point prediction.


Inputs: vimi.opir.sightings (Kafka)


Outputs:


Key Features:


DoD Alignment: Implements trajectory estimation algorithms consistent with actual missile defense system (MDS) processing, aligned with C2BMC (Command and Control Battle Management) threat track data models.




3.3 sensor-fusion


Purpose: Correlates sightings and tracks from multiple sensors (SBIRS, AWACS, PATRIOT, THAAD, naval SPY) into a unified operational track picture. Implements JPDA (Joint Probabilistic Data Association) for ambiguous association scenarios.


Inputs: vimi.opir.sightings, vimi.missile.tracks (Kafka)


Outputs: vimi.tracks.fused (Kafka) — FusedTrack objects with composite confidence scores


Key Features:




3.4 alert-dissemination


Purpose: Issues threat alerts following CONOPREP (Condition of Probable Warfighting/Hostile Action) doctrine. Formats and routes C2 messages to appropriate command authorities.


Alert Levels:


LevelCriteriaNotification
CONOPREPTrack initiated, TTA > 0 minUnit commanders
IMMINENTImpact predicted < 15 minTheater C2
INCOMINGImpact predicted < 10 minTheater C2 + Air Defense
HOSTILETrack confirmed, NCA approvalNCA + STRATCOM

Inputs: vimi.tracks.fused (Kafka)


Outputs:


Key Features:




3.5 lvc-coordinator


Purpose: Manages the Live/Virtual/Constructive entity registry. Maintains a unified entity state table for all tracks in the exercise, regardless of origin.


Inputs: All track Kafka topics, replay events


Outputs: vimi.entities (Kafka), DIS Entity State PDUs


Entity Types:


Key Features:




3.6 env-monitor


Purpose: Maintains a 1° resolution global environmental grid (180×360 cells). Models atmospheric conditions affecting IR sensor performance.


Grid Layers:


Sensor Performance Ratings: Each cell computes effective detection range for:




3.7 replay-engine


Purpose: Records all DIS PDU events and VIMI track/alert data to disk for post-exercise analysis and playback.


Recording Format: .dispcap — custom format wrapping standard DIS PDUs with VIMI metadata headers.


Capabilities:




3.8 data-catalog


Purpose: Provides an OGC CSW (Catalogue Service for the Web) interface for discovering VIMI assets — tracks, alerts, recordings, and environmental data.


Standards Compliance:


Asset Types: Tracks, Alerts, Recordings, Environmental Snapshots, FOM Documents




3.9 dis-hla-gateway


Purpose: Bidirectional translation bridge between DIS (IEEE 1278.1) and HLA (IEEE 1516) federations.


Translation Layer:


HLA Class Mapping:

HLAobjectRoot.Platform         ←→ DIS EntityStatePDU
HLAobjectRoot.Fire            ←→ DIS FirePDU
HLAobjectRoot.Detonation      ←→ DIS DetonationPDU
HLAinteractionRoot.Fire       ←→ DIS FirePDU
HLAinteractionRoot.StateUpdate ←→ DIS EntityStatePDU

Note: Currently operates without a live RTI (Run-Time Infrastructure). The hla-bridge process connects to Kafka topics vimi.hla. and vimi.dis., translating messages bidirectionally. Integration with a live RTI (Portico, Mak) is planned for Phase 4.




3.10 vimi-plugin (CICERONE)


Purpose: Provides the VIMI command-and-control interface within the CICERONE web application.


Commands:

vimi status          — System health and pipeline status
vimi tracks           — Active threat tracks with details
vimi alerts           — Current alert levels
vimi lvc              — LVC entity breakdown
vimi env              — Environmental grid summary
vimi inject <type>    — Inject synthetic scenario events
vimi globe            — Open 3D globe display with tracks
vimi recording start/stop — Control DIS PDU recording
vimi federation       — DIS/HLA federation peer status
vimi cluster          — Kubernetes cluster status



4. Kafka Topics Reference


TopicPublisherSubscribersDescription
vimi.opir.sightingsopir-ingestmissile-warning-engineRaw IR detections
vimi.missile.tracksmissile-warning-enginesensor-fusion, alert-disseminationThreat tracks
vimi.tracks.fusedsensor-fusionalert-dissemination, lvc-coordinatorCorrelated tracks
vimi.alertsalert-disseminationlvc-coordinator, vimi-pluginAlert events
vimi.entitieslvc-coordinatordis-hla-gatewayEntity state table
vimi.env.eventsenv-monitor(internal)Environmental changes
vimi.hla.inboundHLA RTIdis-hla-gatewayHLA interactions
vimi.hla.outbounddis-hla-gatewayHLA RTITranslated HLA interactions
vimi.dis.inboundDIS netdis-hla-gatewayRaw DIS PDUs
vimi.dis.outbounddis-hla-gatewayDIS netTranslated DIS PDUs



5. Prometheus Monitoring


All 10 VIMI services expose /metrics endpoints using github.com/prometheus/client_golang. A ServiceMonitor in the forge-monitor namespace watches all services labeled app=vimi across all namespaces.


Key Metrics:


ServiceMetrics
missile-warning-enginevimi_tracks_total, vimi_tracks_active, vimi_alerts_total, vimi_alerts_active{level}, vimi_sightings_processed, vimi_kafka_consumer_lag
alert-disseminationvimi_alerts_received_total, vimi_alerts_issued_total, vimi_alerts_active, vimi_nca_approvals_total, vimi_jtids_messages_total
All servicesvimi_kafka_messages_sent_total{topic}, vimi_kafka_messages_received_total{topic}, vimi_errors_total

Alert Rules (PrometheusRule vimi-alerts):




6. Deployment


6.1 Prerequisites



6.2 Quick Start


# Clone the repository
git clone https://YOUR_GITLAB/trooper-vimi.git
cd trooper-vimi

# Build all container images
for app in apps/*/; do
  docker build -t vimi/$(basename $app):latest -f $app/Dockerfile $app
done

# Load images into Kind
for app in apps/*/; do
  kind load docker-image vimi/$(basename $app):latest --name gms
done

# Deploy to Kubernetes
kubectl apply -f k8s/vimi-cluster/vimi-cluster.yaml
kubectl apply -f k8s/vimi-cluster/vimi-monitoring.yaml

# Verify
kubectl get pods -n vimi

Full deployment guide: docs/VIMI-INSTALL-GUIDE.md


6.3 CI/CD Pipeline


A complete GitLab CI/CD pipeline (.gitlab-ci.yml) automates the build → test → publish → deploy workflow:


build → test → security-scan → publish → deploy-k8s

The pipeline uses a Docker executor runner with DinD (Docker-in-Docker) support. Images are pushed to a configurable registry (default: local darth:5000).




7. Current Operational Status


As of April 2026, VIMI has been deployed on a Kind/Kubernetes cluster. All 10 services are running:


ServiceStatusRestartsNotes
opir-ingestRunning1Simulating satellite sightings
missile-warning-engineRunning1Active threat tracks
sensor-fusionRunning1Multi-source correlation
alert-disseminationRunning1Alert levels: CONOPREP, IMMINENT
lvc-coordinatorRunning1Entity state management
env-monitorRunning1Global environmental grid
replay-engineRunning1DIS PDU recording available
data-catalogRunning1OGC CSW discovery
dis-hla-gatewayRunning1DIS↔HLA bridge (no live RTI)
vimi-pluginRunning1CICERONE UI integration

Kafka Pipeline: ACTIVE — opir-ingest is producing simulated IR sightings; missile-warning-engine is detecting MRBM-class threats and issuing CONOPREP/IMMINENT alerts; sensor-fusion is correlating multi-sensor data.


Prometheus: All 10 services are being scraped. Live metrics show vimi_tracks_active=8, vimi_alerts_active{CONOPREP}=1, vimi_alerts_active{IMMINENT}=7.




8. What's Missing — Roadmap


The following items are required to take VIMI from a development/simulation environment to an operational training platform:


8.1 GitLab CI/CD Runner Registration

Effort: <1 hour

Status: Runner installed on darth; needs registration token from GitLab UI


The GitLab runner is installed and configured with Docker executor. A registration token from https://idm.wezzel.com/crab-meat-repos/trooper-vimi/-/settings/ci_cd is required to activate it. Once registered, all pushes to master will automatically build, test, and deploy VIMI.


8.2 Live HLA RTI Integration

Effort: 2–4 weeks

Status: dis-hla-gateway translates DIS↔HLA but does not connect to a live RTI


The dis-hla-gateway service uses Kafka topics for DIS↔HLA translation but currently operates without a Run-Time Infrastructure. Connecting to Portico or Mak will enable full HLA federation participation with other RTI-based simulators.


Options:


8.3 Cross-Domain Solution (LBAC)

Effort: 4–8 weeks

Status: Not started


Multi-level security requires a cross-domain solution (CDS) to allow VIMI to operate at multiple classification levels simultaneously. Options include:


8.4 Real Satellite Data Interfaces

Effort: 4–8 weeks

Status: opir-ingest simulates SBIRS data


Replacing simulated data with actual SBIRS mission data feeds requires:


8.5 CICERONE Globe Integration

Effort: 2–3 weeks

Status: vimi-plugin provides command API; globe rendering not yet connected


The vimi-plugin exposes track and alert data via HTTP API. Connecting this to the CICERONE globe component ( Cesium-based 3D terrain visualization) requires:


8.6 JTIDS/LINK-16 Integration

Effort: 3–6 weeks

Status: alert-dissemination formats JTIDS messages but does not transmit


The alert-dissemination service formats JTIDS net assignment messages for Link 16. Full integration requires:


8.7 Multi-Cluster Federation

Effort: 6–12 weeks

Status: Single Kind cluster


For coalition training involving multiple geographically distributed sites:


8.8 Production Hardening

Effort: 4–8 weeks

Effort items:




9. Standards Compliance


StandardDescriptionVIMI Implementation
IEEE 1278.1-2012DIS (Distributed Interactive Simulation)dis-pdu/ registry, lvc-coordinator
IEEE 1516-2010HLA (High Level Architecture)VIMI-FOM/FOM.xml, dis-hla-gateway
OGC CSW 2.0.2Catalogue Service for the Webdata-catalog service
ISO 23950Z39.50 search protocoldata-catalog service
DIS Exercise IDProtocol version 7All DIS PDUs
HLA OMTObject Model Template12 object classes, 11 interactions
SBIRS MDPAFMission Data Processingopir-ingest (functional analog)



10. Conclusion


VIMI provides a fully functional, deployable LVC mission processing framework demonstrating DoD-aligned simulation and mission data processing workflows. The system is production-ready at the component level — all 10 services are operational, the Kafka pipeline is live, and Prometheus monitoring is active. The primary gaps to operational deployment are runner registration (trivial), HLA RTI integration (moderate), and cross-domain security architecture (substantial).


The system serves as both a training platform for missile warning workflows and a reference implementation for building DoD-compliant LVC federation infrastructure.




References


  1. IEEE 1278.1-2012 — Standard for Distributed Interactive Simulation — DIS Protocol
  1. IEEE 1516-2010 — Standard for Modeling and Simulation (M&S) HLA — Framework, Rules, and Interface Specification
  1. Raytheon FORGE MDPAF — Open Mission Systems for Space-Based Infrared Data Processing
  1. NATO STANREC 4800 — NETN FOM (NATO Education and Training Network Federation Object Model)
  1. CSIAC JFCDS — Joint Federated Common Data Services for M&S
  1. OGC 07-045 — Catalogue Services Specification v2.0.2
  1. DoD Directive 8570.01 — Information Assurance Training, Certification, and Workforce Management
  1. NIST SP 800-53 — Security and Privacy Controls for Information Systems and Organizations
  1. DoD Cloud Computing Security Requirements Guide (SRG) IL2/IL4/IL5



VIMI is an STS Gym Research project. Repository: github.com/vimic/vimi

Contact: stsgym.com | wlrobbi@stsgym.com