Expeto CLI Guide for Operations⚓︎
The Expeto CLI is an interactive shell for operations staff. It reads live state from the network
functions of an xCore or xRouter Site and runs operational commands against them: querying a
subscriber's session, listing radio connections, forcing a synchronisation with xControl. It runs
as a sidecar of the Expeto Agent pod, so it needs no network access beyond kubectl exec.
Accessing the CLI⚓︎
Open an interactive session in the CLI container of the Agent pod. The pod and container names depend on how the core was installed:
kubectl -n xcore exec -it xcore-xfabric-agent-0 -c agent-cli -- cli
kubectl -n xrouter exec -it xrouter-agent-0 -c cli -- cli
Replace the namespace and the release-name prefix with your own. The shell fetches the command
sets of the connected functions at start-up and shows the expeto_shell> prompt.
Navigation and help⚓︎
The CLI features a hierarchical, folder-like structure categorized by network types and functions (e.g., lte for 4G Core, nr for 5G Core, debug for operational commands).
- List Directory (
ls): Displays sub-directories, connected instances, and available commands (nouns and verbs) in the current context. - Change Directory (
cd): Navigates through the command hierarchy. For example,cd ltemoves into the 4G Core command set, andcd ../nrmoves back and into the 5G Core command set. - Auto-complete (Tab): Press
Tabat any time to auto-complete commands, noun names, or see available options. This is highly recommended to explore available parameters. - Help (
helpor?): Typehelpto see descriptions of commands in the current folder. You can also appendhelpto a specific command to view its usage and options (e.g.,cmd sync-sub help).
Command structure⚓︎
Commands in the Expeto CLI generally follow a Verb + Noun + [Options] pattern.
Verbs⚓︎
Verbs define the action to be taken on a resource. The available verbs depend on the noun:
- read: Lists available records (e.g., a list of subscribers) or retrieves the detailed state of a specific record.
- add: Adds a new record.
- update: Modifies an existing record.
- delete: Deletes a record.
- show: Displays the current operational state of a component.
- set: Changes the operational state of a component.
- cmd: Executes a specific operational command or action.
Nouns⚓︎
Nouns represent the network components or data entities you are interacting with. To see available nouns for your current context, use the ls command.
- 4G (LTE) Examples: hss, mme, sgw, pgw, enodeb.
- 5G (NR) Examples: amf, smf, upf, udr, udsf.
Examples⚓︎
Exploring available commands⚓︎
After login, ls shows the top-level folders:
expeto_shell>ls
Sub-directories:
-debug
-lte 4G Core
-nr 5G Core
Listing components and supported actions⚓︎
Enter a core (here 5G) and list its resources:
expeto_shell>cd nr
expeto_shell>nr>ls
Instances:
- name: birch-udr1
description: HttpEndpoint(url=http://local-udr.default.svc.cluster.local:8080)
┌────────────┬────────────┐
│Noun │Verb(s) │
├────────────┼────────────┤
│amf │read, delete│
│associations│read │
│smf │delete, read│
│udsf │read, delete│
│... │... │
└────────────┴────────────┘
Reading and paginating records⚓︎
To list the records of a function, for example the Unstructured Data Storage Function (UDSF):
expeto_shell>nr>read udsf
-o (offset) option:
expeto_shell>nr>read udsf -o 10
Viewing a record⚓︎
To see the full state of one record, append its identifier to read:
expeto_shell>nr>read udsf UPF:Controller:enterprise1:slice1:SmfInitHbInfoKey
Running operational actions⚓︎
Operational actions, such as forcing a subscriber synchronisation with xControl, live in the debug folder. Run help on a command before executing it:
expeto_shell>nr>cd ../debug/ops/
expeto_shell>debug>ops>cmd sync-sub help
imsi, siteWide for the whole Site, and the type of synchronisation (UPDATE or RECREATE).
Loading subscriber-store keys⚓︎
The keys the subscriber store needs are loaded through the CLI: the transport key of a SIM batch
into the HSS (cd /lte, add keyset name=<HSS Identifier>) and the UDR
(cd /nr, add udr-keyset name=<HSS Identifier>), and the home network's SUCI private key into the
UDR (cd /nr, add suci pkId=<key identifier>). The CLI prompts for every key with masked input
and never takes one on the command line. Follow the procedure in
Load the subscriber-store keys.