A unified platform for benchmarking AI agents on realistic network troubleshooting tasks.
Think about SWE-bench, but for network troubleshooting. Agents interact with live CLIs and telemetry across reproducible incidents on your laptop, cluster, or cloud.
NIKA ships 1,098 working-matrix cases across data center, campus, enterprise WAN, ISP, SDN, P4, Kubernetes, and vendor routing labs on Kathará and Containerlab.
# pick a network, a fault, its target
scenario: dc-clos-bgp
problem: bgp-asn-misconfig
inject: { host_name: leaf0 }
A modular platform that deploys labs, injects faults, connects agents through MCP servers for live diagnosis, and scores root-cause submissions.
# deploy, run an agent, evaluate
nika env run dc-clos-bgp
nika agent run --agent claude
nika eval judge
Emulated labs on Kathará and Containerlab with real routing stacks (FRR, SR Linux, and more). Run them on a laptop or in the cloud.
Pre-built networks of different sizes, with faults you can introduce for troubleshooting tasks.
Model Context Protocol servers expose host probes, Pingmesh, packet capture, routing CLIs, and INT telemetry as tools for any MCP-compatible agent.
Measure whether agents identify the cause of network incidents, and compare their results on the same benchmark tasks.
Each incident runs on a concrete topology with realistic services. Catalog: network scenario reference.
FRR eBGP Clos (dc_clos) on Kathará, or Nokia SR Linux Clos (min3clos) on Containerlab.
Hierarchical campus with OSPF, DHCP, DNS, and a server farm (campus_lan).
Multi-site hub-and-spoke WAN with provider underlay, WireGuard, eBGP overlay, and per-role VRFs (enterprise_branch).
SNDlib graphs such as Abilene and France (isp_*), on Kathará (FRR) or Containerlab (SR Linux), with optional IGP and BGP presets.
ONOS + OVS L3 Clos (sdn_l3_clos), and BMv2 fabrics under P4Runtime (p4_dc_fabric, p4_dc_gateway with INT-MX).
k3s labs for multi-tenant services (k8s_lab) and simulated llm-d inference routing (llmd_lab).
75 registered types across nine domains. Catalog: failure reference.
link_down, flap, capacity bottleneck, packet corruption.
BGP ASN mismatch, max-prefix, OSPF adjacency, daemon crash.
ACLs, static routes, SDN/P4 rules, MTU, WireGuard, NetworkPolicy.
Kubernetes ClusterIP and load-balancer faults.
API-server reachability, SDN controller, southbound channels.
IP/MAC conflicts, ARP, DHCP, DNS data and reachability.
Endpoint resource contention and application delay.
Offered load, queueing, and host resource constraints.
DoS, BGP hijack, DHCP/DNS spoofing, ARP poisoning.
Choose a network, its size, and the fault an agent will investigate.
cases:
- scenario: dc_clos
topo_size: s
problem: link_down
inject:
host_name: client_0
intf_name: eth0
- scenario: campus_lan
topo_size: s
problem: link_down
inject:
host_name: dhcp_server
intf_name: eth0
Choose a network, such as a data center or campus LAN.
Choose a small, medium, or large topology where supported.
Choose the incident to reproduce, such as a failed link.
Specify where the fault occurs in the network.
See the task authoring guide for definitions and instructions for adding networks and faults.
Evaluate built-in or custom agents on the NIKA benchmark.
Connect your existing agent to NIKA and evaluate it on network troubleshooting tasks.
Put general-purpose coding assistants to the test on realistic network incidents, out of the box.
Want to focus on the creation of new tasks, not agent plumbing? Use default agents and go ahead.
Explore agents and skills shared by the community, and contribute your own. See the leaderboard.
See the setup guide for installation requirements and configuration details.
Clone the repository and run ./scripts/install.sh. It installs Docker (if needed), uv, Kathará, Containerlab, and Python dependencies, then creates .env and config/nika.yaml from the examples when missing.
# Clone the repository
git clone https://github.com/sands-lab/nika.git
cd nika
# Install Docker, uv, Kathará, Containerlab, and Python deps
./scripts/install.sh
Put API keys in .env. In config/nika.yaml, set agent.type, provider, and model. Run uv run nika config show to confirm.
# Keys in .env (install.sh creates it from .env.example when missing)
OPENAI_API_KEY=<your-key>
# or ANTHROPIC_API_KEY / DEEPSEEK_API_KEY
# config/nika.yaml — pick a type from `nika agent list`
# agent:
# type: byo.langgraph
# provider: openai
# model: gpt-5-mini
# Confirm merged config
uv run nika config show
Run a frozen release, then summarize the scores.
# Frozen release, then summarize
uv run nika benchmark run --release 0.2.0 --split test \
--result_dir results/my-run --batch-size 4
uv run nika eval summary --result_dir results/my-run
Run a single problem end-to-end, or deploy a lab yourself and drive it with the CLI.
# One incident: deploy + inject + agent + eval
uv run nika agent run -a byo.langgraph -p openai -m gpt-5-mini \
--problem dc_clos_s_link_down
# Or deploy a lab only
uv run nika env list
uv run nika env run dc_clos -s s
Agents inspect the emulated network through Model Context Protocol (MCP) tools.
ping_pair / traceroute: reachability and pathsiperf_test: bandwidth between hostsint_query_telemetry: per-hop traces in supported P4 networkspacket_capture_start: capture network trafficpacket_capture_stop: end a capturepacket_capture_inspect: inspect packets and protocolsIf you use NIKA in your research, please cite the following papers.
@misc{nika25long,
title = {A Network Arena for Benchmarking AI Agents on Network Troubleshooting},
author = {Zhihao Wang and Alessandro Cornacchia and Alessio Sacco and Franco Galante and Marco Canini and Dingde Jiang},
year = {2025},
eprint = {2512.16381},
archivePrefix = {arXiv},
primaryClass = {cs.NI},
url = {https://arxiv.org/abs/2512.16381},
}
@inproceedings{nika25ngno,
title = {Towards a Playground to Democratize Experimentation and Benchmarking of AI Agents for Network Troubleshooting},
author = {Wang, Zhihao and Cornacchia, Alessandro and Galante, Franco and Centofanti, Carlo and Sacco, Alessio and Jiang, Dingde},
year = {2025},
publisher = {Association for Computing Machinery},
url = {https://doi.org/10.1145/3748496.3748990},
booktitle = {Proceedings of the 1st Workshop on Next-Generation Network Observability},
location = {Coimbra, Portugal},
series = {NGNO '25},
}