xApps Overview
airpuls ships twelve reference xApps in-tree. They are working examples
built on the SDK — read them to learn a pattern, run
them as-is, or fork them as a starting point. Each folder is
language-partitioned (python/, go/, c/) around one shared xapp.yml.
The catalog
| xApp | Service model(s) | Languages | Category |
|---|---|---|---|
| kpm-monitor | KPM (REPORT 4) | Python · Go · C | Monitoring |
| rc-monitor | RC (REPORT 1/4 + QUERY 2) | Python | Monitoring |
| cell-tracker | RC (REPORT 3) | Python | Monitoring |
| llc-monitor | LLC (REPORT 2) | Python | Monitoring |
| ccc-monitor | CCC (REPORT 1/2 + CONTROL 2) | Python | Monitoring |
| ho-trigger | KPM + RC (CONTROL 3/1) | Python | Control |
| ho-cell-block | RC (INSERT 3/1 + CONTROL + QUERY 2) | Python · C | Control |
| ran-sensing | LLC + CCC + AIR | Python | Sensing |
| srs-estimates | AIR (REPORT 1) | Python | Sensing |
| xapp-replay | none — replays a recording | Python | Testing |
| stress-test-epi | EPI (NodeProbe) | Go | Benchmark |
| y1-termination | KPM → Y1 REST | Python | Gateway |
| qos-enforcer | A1 policy + KPM (REPORT 4) | Python | Policy |
Categories
-
Read-only telemetry xApps that subscribe and log / stream: KPM measurements, RC RRC events and cell discovery, LLC RLC buffers, CCC config snapshots.
-
xApps that act on the RAN — a KPM-driven handover trigger and an RC INSERT handover gate.
-
ISAC / DSP xApps that turn the SRS/CSI PHY tap and per-UE channel estimates into spectra, angle-of-arrival, micro-Doppler, and channel impulse responses.
-
A multi-xApp EPI stress harness that load-tests the RIC across an
N × M(xApps × nodes) matrix with a live scale-up/down API. -
An O-RAN Y1 termination that re-exposes KPM-derived RAN analytics over a northbound REST API.
Running any xApp
Every xApp reads one xapp.yml and takes only -c/--config. Run
natively or as a container:
# Native (after building the SDK + xApp):
python3 xapps/kpm-monitor/python/main.py -c xapps/kpm-monitor/xapp.yml
# Container:
docker run --rm --network=host \
-v $(pwd)/xapps/kpm-monitor/xapp.yml:/etc/airpuls/xapp.yml \
kpm-monitor-python:latest -c /etc/airpuls/xapp.yml
Point ric.endpoint in the xapp.yml at your RIC's northbound IPC
endpoint. See SDK → Configuration and
Packaging.