Nightcrawler Deploys Autonomous Local Model Context Protocol Pentesting Agents to Mobile Devices
Nightcrawler is an open-source pentesting agent running a 1.2B local LLM directly on Android GPUs using NetHunter. It automates host discovery, enumeration, and exploitation without requiring cloud connections or active internet access.
Why it matters
It demonstrates how tiny, offline language models can orchestrate complex, multi-step operations locally on mobile GPUs using the Model Context Protocol.
TL;DR
- 01Runs entirely on device using NetHunter and OpenCL acceleration on the GPU.
- 02Uses a GPU governor daemon to force max performance on battery power, auto-throttling only below 15%.
- 03The agent target selection targets 70% hosts with known ports and 30% new discovery.
- 04Employs a scope proxy to ensure zero out-of-scope actions and blocks SCADA/ICS ports.
Local Mobile Architecture and GPU Acceleration
Nightcrawler runs completely offline inside a Kali NetHunter environment on Snapdragon 865 devices like the OnePlus 8. It utilizes OpenCL acceleration on the Adreno 650 GPU to serve the LFM2.5-1.2B-Instruct-Heretic LLM. The model footprint is confined to ~1.3GB RAM out of 12GB total system RAM. To counter Android throttling the GPU on battery power, a dedicated GPU governor daemon forces max performance and initiates graceful auto-throttling at battery levels below 15%.
Model Context Protocol Integration and Self-Healing Loops
Tool invocation flows through a Kali Model Context Protocol (MCP) server. The agent loop runs on a weighted target selection algorithm (70% hosts with known open ports, 30% new discovery). Because small language models frequently produce malformed outputs, Nightcrawler embeds dynamic error recovery: a 5-streak command failure triggers context resets with varied few-shot prompts, while a 5-minute inactivity watchdog prevents infinite polling loops. High-risk multi-step attacks bypass LLM generation entirely, executing deterministically via 27 pre-packaged playbooks linked against a local 24,956-entry CVE database.
Scope Proxy Defense and Stealth Operations
Security bounds are strictly enforced by an external scope proxy component (scope_proxy.py). It dynamically detects subnets from wlan0 and blocks actions against SCADA/ICS ports (such as 502 and 503) or excluded gateway IPs. For stealth, scanning is restricted to slow rates (nmap -T2) with host rotation and simulated cover traffic. The web C2 dashboard on port 8888 spoofs nginx server headers and returns empty HTTP 404 responses to any request originating from target subnets.