igc-net
An Open Protocol for
Soaring Flight Data

igc-net logo

igc-net is a shared interoperability and archival layer beneath existing flight portals. Give every IGC file a universal identity, and let portals, archives, and tools discover, fetch, and retain flights without platform lock-in.

For pilots, igc-net can act as a peer-to-peer archival layer. Once a flight is retained by archival nodes, it remains retrievable as long as at least one archival node continues to serve it.

igc-net is developed at NTNU DSE Lab, part of NTNU, a public university and non-profit research environment. Ongoing work is aimed at providing archival capacity on university infrastructure.

The Ecosystem Has Portals, But No Shared Layer

The problem is not lack of portals. The problem is that they do not interoperate. Pilots upload the same IGC files repeatedly, each platform assigns its own identity, and long-term retention depends on private storage.

Data Silos

Your flight lives on one platform. Other platforms can't see it. Want it on XContest and DHV-XC? Upload the same file twice.

No Universal Identity

The same IGC bytes get a different ID on every platform — a database row, a UUID, a URL slug. Cross-referencing is impossible.

Locked Analytics

Invalid-track detection, thermal and wind analysis, site-risk signals, coaching annotations, and scoring are computed independently by each platform and usually stay locked there.

A best-effort public census completed on 9 April 2026 identified at least 16 active public portals and services handling IGC upload, viewing, scoring, or storage. None provides standardised cross-platform exchange or a shared long-term archive.

One API per portal is not interoperability

A portal-specific API is useful for that portal’s consumers, but it does not solve ecosystem-wide exchange.

Different Schemas

If each portal exposes its own API, every integrator still has to map different identifiers, payloads, metadata conventions, and edge cases.

Different Policies

Each API inherits one platform’s rules, rate limits, availability constraints, and access model. Useful, but still silo-specific.

Repeated Integration Cost

With many portals, bilateral integrations remain expensive and fragile. A shared protocol reduces the coordination problem by giving portals and tools one common exchange layer.

igc-net does not need universal adoption to be useful

If the protocol only becomes valuable after every major portal joins, it fails. The intended path is edge-first adoption by actors that benefit immediately from shared identity, fetch, and archival.

Archives

National, regional, or club archives can begin collecting flights without asking pilots to upload to another separate endpoint.

Researchers

University groups can assemble cross-platform corpora for reproducible studies without negotiating separate access to each silo.

Small Tools

Independent developers can build analytics, safety, and learning tools on a shared substrate instead of first building a bespoke ingestion pipeline.

Pilot Groups

Small communities can retain and exchange flights among themselves even before the largest incumbents choose to participate.

Three steps, no central server

igc-net uses content addressing (BLAKE3) and gossip-based announcements to let any node publish, discover, and fetch flights.

1

Publish

A platform hashes the IGC file with BLAKE3, builds a metadata blob, and broadcasts an announcement on the gossip network.

2

Discover

Every node on the network receives the announcement. The metadata — including a geographic bounding box — is immediately available.

3

Fetch

Nodes that want the raw flight data download and verify it. Geographic filters let you collect only flights in your region.

Paragliding Site Publisher + Indexer Archival Eager policy Relay MetadataOnly DHV GeoFiltered (DE) Research GeoFiltered (Alps) DHV-XC Publisher + Indexer new flight Gossip Blob transfer

Built for the entire ecosystem

igc-net does not replace platforms. It connects them, and it also gives pilots and archivists a shared retention layer.

Platforms

Embed igc-net as a library crate. Discover flights from other platforms without crawling, scraping or complicated agreements. Deduplicate using content hashes.

App Developers

Bootstrap your app from the network. No bespoke ingestion pipeline needed. Access the cross-platform soaring corpus through the open protocol and reference implementations.

Pilots

Publish once and place your flight into a network archive. As the shared corpus grows, pilots can benefit from new safety, training, visualisation, and learning tools built on top of the same flight identity.

Federations

Run a geo-filtered node and automatically archive every flight in your country. No extra pilot upload, no bilateral integration, no scraping.

Researchers

Build reproducible cross-platform datasets for atmospheric research, thermal modelling, site usage, airspace interaction, and long-term soaring-condition studies. Shared flight identity makes methods easier to compare, validate, and extend.

AI

Use the open layer both ways: consume shared flight data and publish reusable outputs back to the same flight identity. Thermal detection, wind estimates, anomaly flags, scoring hints, and coaching annotations can become reusable inputs for other tools.

Education

Give students real-world soaring data for projects in distributed systems, data engineering, visualisation, safety analysis, meteorology, and machine learning. The open layer lets student work connect to an actual ecosystem instead of isolated toy datasets.

Innovation

Lower the barrier for small tools and niche services. Developers can build safety dashboards, route debriefing tools, launch-site analytics, club archives, and specialised flight apps without first negotiating access to multiple private silos.

Key properties

Content-addressed Identical bytes = identical BLAKE3 hash, everywhere, always
Decentralised No central server, no registration, no approval needed
Protocol-first Language-independent spec; Rust reference implementation
Geographic filtering Build local or national archives automatically by bounding box
Archival retention Flights remain retrievable while at least one archival node continues to retain and serve them
Extensible analytics Invalid-track detection, safety signals, training annotations, thermals, wind, scoring — open and multi-provider
Composable building blocks Reusable tools and micro-services that can be recombined into richer services
AI-ready Open data layer for safety, learning, analysis, and new flight-data tools

Read the full protocol description

igc-net: An Open Peer-to-Peer Protocol for Publishing, Discovering, and Exchanging IGC Flight Files

igc-net gives every IGC file a universal identity, enables cross-platform discovery and fetch, and creates a peer-to-peer archival layer for flights stored by archival nodes. The current whitepaper reflects the implemented Part I base protocol and the current reference implementation.

Download PDF

Start building with igc-net

The protocol, specification, and reference implementations are open. The archival mission is public-interest infrastructure work.

Read the Spec

The implementation-independent protocol specification, written with RFC 2119 keywords. The normative source of truth.

github.com/igc-net/specs →

Try the CLI

Publish, index, and fetch flights from the command line.

cargo install igc-net-cli igc-net announce flight.igc igc-net runindex --policy eager github.com/igc-net/igc-net-rs →

Embed the Library

Add igc-net to your Rust project as a dependency. Publish and index flights from your backend.

cargo add igc-net docs.rs/igc-net →

Use the Python Wrapper

Install the published Python package to inspect, publish, and index flights from Python code or the bundled CLI.

pip install igc-net PyPI package →
github.com/igc-net/igc-net-py →

Join the Conversation

Report issues, propose spec changes, discuss deployment strategies, or just say hello.

Spec discussions →
Implementation issues →
Telegram group →