A from-scratch, spec-faithful 5G Core (Standalone, 3GPP Rel-17) in Go — 13 network functions in Docker, Wireshark-clean N1/N2/N4/N3, validated with UERANSIM, PacketRusher, and a commercial gNB with COTS 5G handsets.
Quickstart · Network Functions · Features · Docs
Why ClaudIA 5GC
ClaudIA 5GC is an open-source 5G Core built to be developed and operated with AI, not just run next to it. An integrated MCP server lets LLM clients inspect, test and control the core in natural language, covering NF status, NAS decoding, traces and QoS policy. The same AI-assisted workflow shortens the path from idea to validated feature. New procedures and NFs take a fraction of the time of traditional telecom development, so innovation and validation move faster. The cloud-native, containerized SBA scales horizontally, one NF per container. A web portal handles day-to-day operation, and logs, metrics, traces and dashboards come wired in by default. The result is a Release 17 core you can bring up in minutes and debug, extend and automate, with people and AI agents working on the same system.
Architecture
flowchart LR
subgraph RAN["RAN / UE"]
UE["UE<br/>UERANSIM · PacketRusher · COTS"] -- "NR" --- GNB["gNB"]
end
UE -. "N1 · NAS (over N2)" .- AMF
GNB -- "N2 · NGAP/SCTP" --> AMF
GNB -- "N3 · GTP-U" --> UPF
subgraph SBA["Service-Based Architecture · HTTP/2 + mTLS"]
NRF["NRF<br/>Nnrf · every NF registers + discovers"]
AMF -- "N12 · Nausf" --> AUSF -- "N13 · Nudm" --> UDM -- "N35 · Nudr" --> UDR
AMF -- "N8 · Nudm" --> UDM
AMF -- "N22 · Nnssf" --> NSSF
AMF <-- "N11 · Nsmf / Namf" --> SMF
SMF -- "N10 · Nudm" --> UDM
SMF -- "N7 · Npcf" --> PCF
AMF -- "N15 · Npcf" --> PCF
PCF -- "N36 · Nudr" --> UDR
PCF -- "Nbsf" --> BSF
NEF -- "Nbsf" --> BSF
NEF -- "N30 · Npcf" --> PCF
AMF <-- "NL1 · Nlmf / Namf" --> LMF
LMF -- "Nudm" --> UDM
AMF <-- "N20 · Nsmsf / Namf" --> SMSF
SMSF -- "N21 · Nudm" --> UDM
end
AF["AF (external)"] -- "N33 · Nnef" --> NEF
SMF -- "N4 · PFCP/UDP" --> UPF
UPF -- "N6" --> DN[("DNNs<br/>internet · ims")]
PG[("PostgreSQL")] -.- UDR & AMF & SMF
REDIS[("Redis")] -.- AMF & NRF
subgraph MGMT["Management plane (non-3GPP)"]
OBS["Loki · Prometheus · Grafana · Jaeger"]
PORTAL["Management portal"]
MCP["MCP server"]
end
MGMT -. "metrics · logs · traces · NF APIs" .-> SBA
Every NF registers with and discovers its peers through the NRF (Nnrf edges omitted). PostgreSQL and Redis are per-NF state stores, not SBI peers; there is no UDSF. The portal and MCP server are management-plane clients that call NF APIs directly rather than through the NEF. Full diagrams and per-NF detail: docs/architecture.md.
Quickstart
Prerequisites: Docker ≥ 24 usable without sudo, Docker Compose v2, GNU Make (Node 18+ only for the portal). Details and troubleshooting: docs/getting-started.md.
The core deploys standalone by default: the 13 NFs plus PostgreSQL and Redis, with no RAN simulator built or started. Point any gNB at the AMF (N2, 38412/sctp) and it shows up on the portal's gNBs (RAN) page.
git clone https://github.com/francurieses/claudia-5gc && cd claudia-5gc
make pki # dev CA + one certificate per NF (first time only)
make 5gcsa # standalone core + observability + management portal
curl -s localhost:9002/amf/v1/ran/gnbs | jq '.gnbs' # gNBs attached to the AMF (empty until one connects)
make down # stop and remove volumes
Add MCP=on to also deploy the MCP server container (SSE on :9300, e.g. make 5gcsa MCP=on); it combines with RAN=, for example make 5gcsa RAN=both MCP=on.
make up starts the core only; make up-obs adds observability.
Add a RAN simulator (optional)
Pick the deployment mode with RAN= on make up, make up-obs or make 5gcsa:
make ueransim # shortcut for: make up-obs RAN=ueransim
docker exec ueransim-ue nr-cli --dump # the UE reaches MM-REGISTERED
docker exec ueransim-ue ping -I uesimtun0 -c3 8.8.8.8 # user-plane through the UPF
make handover-test # PacketRusher Xn handover (handover-n2-test for N2)
The portal detects the mode at runtime: in standalone mode the UERANSIM and PacketRusher pages are hidden, and the gNBs (RAN) page (gNB, IP address, status, slices, UEs) is available in every mode. Want everything (portal + 4 slices with one UE each)? make full.
Screenshots
Screenshots are coming soon. Run make full to see the portal, Grafana and Jaeger yourself.
Network Functions
✅ operational · 🟡 implemented with documented scope limits (see implementation status).
Features
Feature descriptions with how to try each one: docs/features.md. Clause-level conformance and per-procedure designs (sequence diagrams, IEs, error cases) are part of the members documentation.
Registration & security
Session management
Mobility & connection management
Policy, location, messaging and exposure
Management portal
make 5gcsa (or make full) serves the portal at http://localhost:8080 — light/dark themes, 14 pages in 6 groups: dashboard with 3GPP KPI charts (TS 28.554), subscribers, slices, services, gNBs (RAN), sessions, QoS, policies, UE location, logs, PCAP and Public Warning, plus UERANSIM and PacketRusher when those simulators are deployed. Details: tools/mgmt-portal/.
AI-native development
The MCP server in mcp/ speaks stdio and HTTP/SSE (:9300) and offers tools for NAS encode/decode, NF discovery, UE and session inspection, traces and KPIs, QoS control and UERANSIM control.
Repository layout
nf/<name>/ One folder per NF (Dockerfile, cmd/, internal/, config/, tests/)
nf/_template/ Template for new NFs (scripts/new-nf.sh)
shared/ nas · ngap · nrppa · lpp · pfcp · gsm7 · crypto · aka · oauth2 · sbi · nrf · logging · observability · types
mcp/ MCP server
tools/mgmt-portal/ Management portal (Go + React)
tools/ueransim/ UERANSIM build + patch set
observability/ Loki, Prometheus, Grafana, Promtail
config/ Operator, UERANSIM and PacketRusher configs
docs/ Getting started, architecture, features, configuration, status
specs/3gpp-openapi/ 3GPP Rel-17 OpenAPI YAMLs
scripts/ PKI, test suites, PCAP control
Documentation
Contributing
Read CONTRIBUTING.md. Commits look like feat(amf): implement X [TS 23.502 §4.2.2.2.2]. Each new procedure follows the same flow: procedure doc → Cucumber feature → implementation → step definitions → integration test → PCAP validation → conformance update.
Support the project
ClaudIA 5GC is free and open source. If it saves you time, you can help keep it going:
License
Licensed under the GNU General Public License v3.0 or later (GPL-3.0-or-later). Original code © 2026 Francisco Curieses.
Third-party components keep their own licenses and notices; they are listed below and are compatible with GPL-3.0.