The blueprint

One system, drawn end to end.

FRMCS.ai as it is actually built — five components, one mission-critical service chain, and a single application catalogue that carries everything from an emergency call to a bogie sensor. Six diagrams, one railway.

System at a glance

Five components, one railway.

A 5G SA core, the FRMCS application plane, a BSS/OSS commerce & operations layer, and a oneM2M IoT platform — independent, standards-anchored, and joined at defined seams.

graph TB subgraph BSS["BSS / OSS"] portal["Operator portal"] prov["provisioning-gateway"] charge["charging-mediation"] nfvo["deploy studio"] end subgraph CORE["5G SA core"] udr["UDR / UDM"] smfpcf["SMF · PCF · AF"] upf["UPF (DPDK)"] nwdaf["NWDAF · NAIF"] end subgraph APPS["FRMCS apps"] vas["VAS (voice / MCPTT)"] railctl["ATP · ATO · TCMS"] media["CCTV · advisory · PIS"] cat["App Catalogue"] end subgraph GNB["O-RAN gNB / O-DU"] du["F1AP · MAC/RLC · sched"] e2["E2 → Near-RT RIC"] end subgraph IOT["oneM2M IoT"] cse["CSE (Mca / Mcc)"] bridge["frmcs-bridge"] end ue(["Train UE / TOBA"]) portal --> prov prov -->|"SUPI · slice · MPS · MC id"| udr charge -.->|Nchf| smfpcf nfvo -.->|scale| upf cat -->|"5QI · ARP · resPrio"| smfpcf vas -->|AF QoS| smfpcf smfpcf --> upf cse --> bridge --> media udr --> smfpcf ue -->|Uu radio| du du -->|"N2 (NGAP)"| smfpcf du -->|"N3 (GTP-U)"| upf e2 -.->|"E2 policy"| nwdaf ue -.->|hosts on-board apps| vas

The train UE attaches over the O-RAN gNB (Uu → N2/N3) to a stateless, spec-grounded core; apps, BSS and IoT ride it at defined reference points.

End to end

Order to cab.

One continuous story: an operator orders a service, and a driver ends up with a prioritised emergency call — with provisioning, QoS and billing all real, not mocked.

sequenceDiagram participant Op as Operator (BSS) participant Prov as provisioning participant UDR as core UDR participant SMF as SMF / PCF / AF participant Cab as Driver cab participant VAS as VAS participant Chg as charging Op->>Prov: order MC-Railway package Prov->>UDR: write subscription (MPS + MC id) Cab->>VAS: REC (emergency) VAS->>SMF: AF QoS invocation SMF->>SMF: 5QI-65 flow + pre-emptive ARP SMF-->>VAS: resources allocated SMF->>Chg: converged charging Chg-->>Op: CDR / usage

The provisioning seam writes exactly the subscription the SMF/PCF read; the charging seam books the session as a CDR in the BSS.

Mission-critical services

The QoS chain that makes priority real.

FRMCS voice, video and data are 3GPP Mission Critical services over the core. An app invokes QoS; the PCF derives the mission-critical 5QI and a pre-emptive ARP; the flow can bump a lower-priority call under congestion.

graph LR app["FRMCS app
REC · CCTV · advisory"] -->|"mc*Id + resPrio"| af["AF
TS 29.514"] af --> pcf["PCF
PCC rule"] pcf -->|"5QI 65/67/70
pre-emptive ARP"| smf["SMF
N2 QoS"] smf -->|GBR flow| upf["UPF
QER / meter"] smf -.->|"resources allocated"| af

MCPTT → 5QI 65 · MCVideo → 67 · MCData → 70. ARP priority derives from the reservation priority; pre-emption is policy-driven per flow.

One source of truth

The FRMCS Application Catalogue.

Every railway application — UIC-standard, national (India’s Kavach), or operator/IoT — is a first-class FRMCS category. The communication category is the app definition; the payload standard (MCX, ETCS Subset-037, IEC 61375, Kavach, oneM2M) is just its binding.

graph TB cat["Application Catalogue
(one JSON file)"] cat -->|"category + QoS"| apps["FRMCS apps"] cat -->|"ARP → resPrio"| qos["core MC QoS
5QI / ARP"] cat -->|"per-entry service"| bss["BSS
orderable service"] cat -->|"authorized apps"| provn["provisioning
subscription"]

Adding an app — a national ATP, a sensor feed — is a catalogue row, not code. Its QoS flows through the whole chain automatically.

IoT & AI

Sensors and intelligence, blended not merged.

FRMCS defines the prioritised bearer; oneM2M defines the IoT service layer whose traffic uses it. Application AI (obstacle detection, prognostics) is carried by FRMCS; network AI optimises the bearer itself.

graph TB subgraph sense["Sensing / IoT"] s["axle-box · vibration · GNSS · cameras"] cse["oneM2M CSE"] s -->|"LoRa · Wi-Fi HaLow"| cse end subgraph ai["Edge AI / analytics"] rv["rail-vision
obstacle detection"] mda["predictive models"] nwdaf["NWDAF / NAIF
network AI"] end subgraph frmcs["FRMCS transport + apps"] catapps["ATP · TCMS · Critical Advisory ·
CCTV · REC — catalogue QoS"] end cse --> bridge["frmcs-bridge"] rv --> bridge bridge -->|"rides a FRMCS category"| catapps mda -.-> catapps nwdaf -.->|"optimises the bearer"| catapps

Bogie health → sensor → oneM2M → a critical advisory at MC-data QoS. Anti-collision (Kavach) → a vital ATP app; rail-vision informs the SIL-4 chain, it does not become it.

Proof

A platform you can run.

The components are wired into one demonstrable system: a scripted order-to-cab scenario, a dispatcher console and a driver cab HMI, a load generator, and live network-function scaling from the operator console.

graph LR ui["ops console · driver HMI"] -->|"/api proxy"| apps2["FRMCS apps"] scen["order-to-cab scenario"] --> all["all 3 layers"] lg["load generator"] --> core2["5G core"] scale["scale"] -->|"deploy studio"| studio["scale UPF live"]

Reused, not rebuilt: the core operations console, Prometheus metrics on every function, NWDAF analytics, and the BSS operator portal.

Go deeper

The full as-built guide.

Diagrams, file paths, spec clauses and the commit trail for every piece live in the repository’s implementation guide.