Open-source reference implementation of SWIM (System Wide Information Management) services for aviation, built on Red Hat OpenShift.
SWIM is a global ICAO mandate (EU Regulation 2021/116, CP1) requiring Air Navigation Service Providers to adopt standardized, service-oriented data exchange. This project provides production-ready components so that ANSPs, AISPs, integrators, regulators, and developers can deploy compliant SWIM services without vendor lock-in.
A framework, not a monolith. swim-developer is organized around a central idea: the infrastructure that every SWIM service needs (subscription lifecycle, AMQP messaging, heartbeat monitoring, self-healing) should be written once and shared, so that each new service only implements what is unique to its domain.
Six working services that demonstrate both sides of the SWIM exchange, Consumer and Provider, for three real-world use cases:
- DNOTAM (Digital NOTAM), aeronautical information using AIXM 5.1.1
- ED-254 (Arrival Sequence / AMAN), arrival management using FIXM 4.3
- FF-ICE (Flight Filing), flight and flow information using FIXM 4.3
Compliance validators that exercise the full AMQP subscription lifecycle against running instances, verifying SPEC-170 conformance.
Data models (AIXM 5.1.1, FIXM 4.3, FIXM FF-ICE) generated from the official XSD schemas, ready to use.
Maven archetypes that scaffold new consumer, provider, and data model projects in minutes.
Open standards deserve open implementations.
Visit swim-developer.github.io for full documentation, architecture details, and step-by-step tutorials.
This project implements the following standards. Each one shaped concrete design decisions, not aspirational references, but constraints the code was built to satisfy.
| Standard | What it governs |
|---|---|
| EUROCONTROL SPEC-170 | SWIM-TI Yellow Profile: AMQP 1.0 messaging, Subscription Manager API, heartbeat contracts, subscription lifecycle |
| EUROCAE ED-254 | Arrival Sequence Service: subscription/notification model for downstream ATSU coordination |
| AIXM 5.1.1 | Aeronautical Information Exchange Model: DNOTAM events (runway closures, obstacles, navaid status) |
| FIXM 4.3 | Flight Information Exchange Model: ED-254 arrival sequence and FF-ICE flight filing messages |
| EU Regulation 2021/116 | Common Project 1 (CP1): the regulatory mandate for SWIM adoption |
| AMQP 1.0 / TLS 1.3 | Transport and security: mutual TLS with X.509 certificates, SASL authentication (SWIM-TIYP-0008) |
swim-developer follows Hexagonal Architecture (Ports and Adapters). The domain core defines contracts through SPIs; infrastructure adapters handle protocol-specific concerns without leaking into domain logic. This separation is what makes the framework reusable: a new SWIM service implements a small set of SPIs, and the framework provides everything else.
+----------------------------------+
| Domain Core |
| |
| SPIs (Ports): |
Driving | . SwimEventExtractor<T> | Driven
Adapters ------> | . SwimOutboxRouter | <------ Adapters
(REST API, | . SwimPayloadValidator | (AMQP, Kafka,
Scheduler) | . SwimSubscription<E> | MongoDB, PostgreSQL)
| . SwimIngressHandler |
| |
+----------------------------------+
Dependency Rule: Adapters depend on Core. Core depends on nothing.
For C4 diagrams, sequence diagrams, and architecture decision records, see the architecture documentation.
Consumer and Provider are separate products for different customers.
A Provider (AISP role) publishes aviation data to the SWIM network. A Consumer (ANSP role) subscribes to external providers to receive that data. They share the same framework, but they serve different organizations with different operational needs.
An ANSP's Consumer connects to external Providers (EUROCONTROL, Austro Control, LFV, and others). It never connects to its own Provider. This reflects the real-world architecture of SWIM, where data flows between organizations, not within them.
The framework supports multi-provider connections: a single Consumer can maintain simultaneous AMQP subscriptions to multiple external Providers.
The repositories are organized in layers. Build order matters: each layer depends on the ones above it.
| Repository | Description |
|---|---|
| swim-developer-root | Root POM, parent for all Maven modules. Clone and install first. |
JAXB bindings generated from official XSD schemas. Required by the services that use each standard.
| Repository | Standard |
|---|---|
| swim-aixm-model | AIXM 5.1.1 + GML 3.2.1 (aeronautical information) |
| swim-fixm-model-ed254 | FIXM 4.3 / ED-254 (arrival sequence) |
| swim-fixm-ffice-model | FIXM 4.3 / FF-ICE (flight filing) |
Reusable infrastructure extracted from production services.
| Repository | What it does |
|---|---|
| swim-developer-framework | Core framework: 6 modules (core, consumer, provider, mongodb, leader-kubernetes, leader-infinispan). SPIs, AMQP, Kafka, health, security, inbox/outbox patterns. |
| swim-developer-extensions | Extension point implementations: Kafka inbox store, inbox reader, outbox routers (DNOTAM, ED-254, FF-ICE), ingress adapters. |
| swim-developer-validators | Shared validator base libraries (core, consumer, provider). |
| swim-developer-add-ons | Artemis ACK audit plugin, Keycloak SWIM role SPI. |
Six services across three SWIM use cases.
| Repository | Role | Database |
|---|---|---|
| swim-digital-notam-provider | AISP (publishes NOTAMs) | PostgreSQL |
| swim-digital-notam-consumer | ANSP (receives NOTAMs) | MongoDB |
| Repository | Role | Database |
|---|---|---|
| swim-ed254-provider | ATSU (publishes arrival sequences) | PostgreSQL |
| swim-ed254-consumer | ANSP (receives arrival sequences) | MongoDB |
| Repository | Role | Database |
|---|---|---|
| swim-ffice-provider | eASP (publishes flight plans) | PostgreSQL |
| swim-ffice-consumer | ANSP (receives flight plans) | MongoDB |
Test counterparts for each service. Consumer validators simulate external providers. Provider validators run conformance scenarios against live providers.
| Repository | Tests against |
|---|---|
| swim-dnotam-consumer-validator | DNOTAM Consumer (mock AISP) |
| swim-dnotam-provider-validator | DNOTAM Provider (conformance client) |
| swim-ed254-consumer-validator | ED-254 Consumer (mock ATSU) |
| swim-ed254-provider-validator | ED-254 Provider (conformance client) |
| swim-ffice-consumer-validator | FF-ICE Consumer (mock eASP) |
| swim-ffice-provider-validator | FF-ICE Provider (conformance client) |
Scaffold new SWIM services in minutes.
| Repository | Generates |
|---|---|
| swim-provider-archetype | New SWIM provider project |
| swim-consumer-archetype | New SWIM consumer project |
| swim-model-archetype | New JAXB data model project |
| Repository | Description |
|---|---|
| swim-operator | Kubernetes Operator (Go). Automates provisioning of all SWIM components on OpenShift. |
| swim-deploy-minikube | Deployment scripts for Minikube (local Kubernetes). |
| swim-deploy-openshift-local | Deployment scripts for OpenShift Local (CRC). |
| Repository | Description |
|---|---|
| swim-example-apps | Demo applications: DNOTAM Event Publisher, Operations Dashboard, ED-254 Arrival Flow Manager (Quarkus + React + PatternFly). |
| swim-developer.github.io | Project website and documentation portal. |
| Component | Technology |
|---|---|
| Runtime | Quarkus, Java 21 |
| Messaging | ActiveMQ Artemis: AMQP 1.0 (SPEC-170 mandated) |
| Streaming | Apache Kafka (Strimzi on OpenShift) |
| Provider persistence | PostgreSQL |
| Consumer persistence | MongoDB (Panache) |
| Security | Mutual TLS (X.509), JWT/OIDC (Keycloak), TLS 1.3 |
| Observability | OpenTelemetry, Prometheus, Grafana, Loki, Tempo |
| Containers | Multi-arch images (linux/amd64 + linux/arm64) |
| Platform | Red Hat OpenShift |
| CI/CD | Tekton Pipelines |
Clone and install the shared dependencies first, then build the service you need.
Linux / macOS:
# 1. Parent POM
git clone https://github.com/swim-developer/swim-developer-root.git
cd swim-developer-root && ./mvnw clean install -DskipTests && cd ..
# 2. Data Models
git clone https://github.com/swim-developer/swim-aixm-model.git
cd swim-aixm-model && ./mvnw clean install -DskipTests && cd ..
git clone https://github.com/swim-developer/swim-fixm-model-ed254.git
cd swim-fixm-model-ed254 && ./mvnw clean install -DskipTests && cd ..
git clone https://github.com/swim-developer/swim-fixm-ffice-model.git
cd swim-fixm-ffice-model && ./mvnw clean install -DskipTests && cd ..
# 3. Framework
git clone https://github.com/swim-developer/swim-developer-framework.git
cd swim-developer-framework && ./mvnw clean install -DskipTests && cd ..
# 4. Extensions
git clone https://github.com/swim-developer/swim-developer-extensions.git
cd swim-developer-extensions && ./mvnw clean install -DskipTests && cd ..
# 5. Validators
git clone https://github.com/swim-developer/swim-developer-validators.git
cd swim-developer-validators && ./mvnw clean install -DskipTests && cd ..
# 6. Build the service you need (example: DNOTAM Consumer)
git clone https://github.com/swim-developer/swim-digital-notam-consumer.git
cd swim-digital-notam-consumer && mvn clean package -DskipTestsWindows (CMD or PowerShell):
rem 1. Parent POM
git clone https://github.com/swim-developer/swim-developer-root.git
cd swim-developer-root && mvnw.cmd clean install -DskipTests && cd ..
rem 2. Data Models
git clone https://github.com/swim-developer/swim-aixm-model.git
cd swim-aixm-model && mvnw.cmd clean install -DskipTests && cd ..
git clone https://github.com/swim-developer/swim-fixm-model-ed254.git
cd swim-fixm-model-ed254 && mvnw.cmd clean install -DskipTests && cd ..
git clone https://github.com/swim-developer/swim-fixm-ffice-model.git
cd swim-fixm-ffice-model && mvnw.cmd clean install -DskipTests && cd ..
rem 3. Framework
git clone https://github.com/swim-developer/swim-developer-framework.git
cd swim-developer-framework && mvnw.cmd clean install -DskipTests && cd ..
rem 4. Extensions
git clone https://github.com/swim-developer/swim-developer-extensions.git
cd swim-developer-extensions && mvnw.cmd clean install -DskipTests && cd ..
rem 5. Validators
git clone https://github.com/swim-developer/swim-developer-validators.git
cd swim-developer-validators && mvnw.cmd clean install -DskipTests && cd ..
rem 6. Build the service you need (example: DNOTAM Consumer)
git clone https://github.com/swim-developer/swim-digital-notam-consumer.git
cd swim-digital-notam-consumer && mvn clean package -DskipTestsUse the Maven archetypes to scaffold a complete project with hexagonal architecture. The Create Consumer and Create Provider tutorials walk through the full process step by step.
See the deployment tutorials for guided instructions covering OpenShift, Kubernetes, Minikube, OpenShift Local, Podman, and Java/binary deployments.
This project is an open invitation to the SWIM development community. Whether you are an ANSP evaluating SWIM adoption, a system integrator building SWIM services, a regulator assessing compliance, or a developer interested in aviation data exchange, contributions, feedback, and collaboration are welcome.
The framework was designed to be extended. If you are building a new SWIM service, the SPIs define the contracts your service needs to implement. The framework handles the rest.
All repositories are licensed under Apache License 2.0.