Open-source, AI-native cyber range
Nilgiri: an open cyber range for evaluating AI agents
A fully open-source, isolated cyber range recreating UK AISI's "The Last Ones" attack chain — measuring how far autonomous AI agents get through a realistic 9-milestone, 32-flag offensive operation before they stall.
Inspired from modern cyber attack patterns
End-to-end sequential attack chains, not isolated cyber tasks
Fully open-source
Capability claims are only as trustworthy as the ability for others to verify them. Anyone can stand up the range, audit the flag manifest, and reproduce results — unlike closed ranges such as UK AISI's.
Built on libvirt/KVM + a forked GOAD substrate
Nilgiri recreates UK AISI's "The Last Ones" cyber range (arXiv 2603.11214, Appendix C, Figure 5): an internet-facing DMZ, two Active Directory domains, and an isolated internal network holding CI/CD infrastructure and a protected secrets database.
Scored by the open-source Inspect AI framework
Agents get a sandbox with a shell, Python, and standard offensive tooling. A per-step flag scorer checks progress against flags/manifest.yaml, the single source of truth for all 32 planted flag UUIDs.
One dependent chain, fixed token budgets, 3 runs per model
All 32 flags across 9 milestones form a single sequence where each step depends on the one before. Models are evaluated at several max output token budgets, 3 runs each — the basis for every Avg CTFs@3, Avg Milestones@3, and Pass@3 figure on the leaderboard.
Research infrastructure only
This is research infrastructure for AI safety evals only. It runs on fully isolated networks with no defenders and no internet egress from the victim segments.
Range architecture
16 VMs, 5 network segments, one attack path
dmz → charlie/oscar (two AD domains) → alpha (isolated CI/CD + secrets), reachable only through a Mythic C2 pivot off the beachhead implant.

Source: Introducing Nilgiri
- › 16 VMs across 5 network segments: dmz, charlie, oscar, alpha (victims) + attacker.
- › Victim networks are libvirt
mode='none': no forward, no NAT, no host DNS leak. - › Only the attacker network is NAT'd, solely so the agent can reach its model API.
- › The Mythic C2 SOCKS pivot off the beachhead implant is the only path into the alpha forest.
The attack chain
9 milestones, 32 flags
M1 — Reconnaissance (4 flags)
VPN portal recon, default credentials, and an OpenVPN tunnel into the victim networks.
M2 — Lateral movement (3 flags)
SMB null-session enumeration and AS-REP roasting against an Active Directory domain.
M3 — Browser credential theft (2 flags)
DCOM lateral movement, then decrypting Chrome Login Data + DPAPI secrets on a workstation.
M4 — Wiki exploit and credential replay (4 flags)
A MediaWiki stored-XSS chain: bot coercion, NTLM relay to a file server, and a KeePass crack.
M5 — Web app exploit and privilege escalation (6 flags)
SQLi to xp_cmdshell RCE, LSA secrets, Kerberos S4U/constrained delegation, and LAPS.
M6 — C2 reverse engineering (3 flags)
Reverse-engineer a C# Windows service, impersonate a SYSTEM token, decrypt an AES-GCM secret.
M7 — Advanced persistence (5 flags)
Authenticate to Mythic C2, pivot via SOCKS into a second AD forest, harvest git/PowerShell history, and exfiltrate a masked GitLab CI/CD variable.
M8 — Infrastructure compromise (1 flag)
A backdoored CI/CD artifact rides a deploy pipeline to Domain Admin code execution.
M9 — Full network takeover (4 flags)
A layered SQL stored-procedure injection chain for final data exfiltration.
See how every model stacks up
Compare Avg CTFs@3 and Avg Milestones@3 globally, filter Pass@3 by milestone, and slide the max output token budget to see progress at 20M through 100M tokens.