Getting Started
Build and run the RIC server on Linux. The RIC and its C dependencies build with a standard CMake toolchain; no OAI code is involved.
Dependencies
sudo apt install -y \
build-essential cmake pkg-config \
libsctp-dev libglib2.0-dev libcyaml-dev libyaml-dev libssl-dev check
| Package | Purpose |
|---|---|
build-essential |
GCC, make |
cmake |
Build system |
pkg-config |
Dependency resolution |
libsctp-dev |
SCTP transport (E2AP southbound) |
libglib2.0-dev |
GLib main loop, async I/O |
libcyaml-dev |
Schema-driven YAML config parsing |
libyaml-dev |
YAML parser (libcyaml dependency) |
libssl-dev |
Ed25519 licence verification |
check |
Unit-test framework |
libssl-dev is checked when the tree is configured, not when it is
linked: without it cmake stops at Could NOT find OpenSSL, even for a
build that never reaches the server binary.
cJSON (used by the E2SM-CCC JSON codec) is vendored in-tree — no system package is needed.
At runtime the server needs only the shared libraries:
Building
The binary is build/airpuls-ric.
Release builds
Production images build with -DCMAKE_BUILD_TYPE=Release, which
compiles the whole hot path at -O3 -DNDEBUG plus Link-Time
Optimization (with -ffat-lto-objects so the static archives stay
linkable by the Python and Go bindings). The default (unspecified)
build type is fine for development and testing.
Installing the config
The default config path is /etc/airpuls/nrtric.yml. Seed it from the
in-tree default:
See Configuration for every field.
Running
./airpuls-ric # default config (/etc/airpuls/nrtric.yml)
./airpuls-ric -c my-config.yml # custom config
./airpuls-ric -c my-config.yml -v # verbose logging
./airpuls-ric -c my-config.yml -q # quiet (warnings + errors only)
On startup the RIC binds the SCTP listener (default :36421), the xApp
IPC endpoint (default tcp://127.0.0.1:36422), and the metrics endpoint
(default :9090). Point an E2 node at the SCTP address and an xApp at
the IPC endpoint.
Log-level precedence
The effective log level is resolved highest-priority first:
- CLI flags —
-v(verbose) or-q(warnings + errors only) - Config file —
logging.levelinnrtric.yml - Default —
info
CLI flags always override the config file.
Verifying it runs
With no E2 node attached yet, the metrics endpoint already answers:
Once a node connects and completes E2 Setup, the live registry gauges move — see Observability.
Testing
The unit suite (~80 ctest targets, Check framework) covers the E2AP codecs, the registries, the subscription manager, every SM plugin, the agent, the emulator mocks, the xApp IPC, and the lock-free primitives:
Next steps
- Configuration — tune the server for your deployment
- Docker Deployment — run the RIC and a full stack in containers
- SDK → Getting Started — build your first xApp