Skip to content

How to Run Nightcrawler AI Pentest Agent on Phone

Show HN Nightcrawler just hit: a local AI pentesting agent on Android. Here's what it actually needs, how to run it, and the gotchas news posts skip.

7 min readBeginner

You don’t need a $3k laptop and a cloud API key to run an autonomous pentest loop anymore – and that should make both red teams and blue teams slightly uncomfortable.

Show HN: Nightcrawler – A local AI pentesting agent running on a smartphone climbed well past 100 points on Hacker News (thread stats as of crawl). It’s not vapor. As of project v0.1.0 (MIT), it’s a real drop-box agent that lives on a rooted Android phone, reasons with a tiny on-device model, and walks recon → enum → exploit → report without calling home.

Key takeaway if you only read one line: treat Nightcrawler as a scoped, slow, offline junior pentester you leave on a cable – not as Metasploit-with-brains. Get the hardware and legal paperwork right first; the install script is the easy part.

What just shipped (brief)

Nightcrawler runs LFM2.5-1.2B-Instruct-Heretic on the phone GPU via OpenCL, talks to Kali tools through an MCP server, and gates every command with a scope proxy – per the garagehq/nightcrawler README (v0.1.0). The base model is from Liquid AI’s on-device LFM2.5 family; Heretic is the community decensored build the project pins. Author NickySlicks (ex-red-team) put the pitch simply on HN: phones are easier to walk into a building than laptops.

Community reaction mixed dual-use anxiety with hardware geekery – people asking whether an Asus ROG Phone 3 with 12GB RAM would cut it, whether NetHunter rootless works, and what “failure” looks like when the model is confidently wrong. Those threads matter more than the feature list.

It’s like leaving a quiet intern on the guest Wi‑Fi overnight: one careful action at a time, notes in a notebook, no heroic port storms that light up the SOC dashboard.

Method A vs Method B: laptop agents or phone drop-box?

Before you flash anything, pick the shape of the problem you’re solving.

Method A – Laptop / workstation AI agent Method B – Nightcrawler phone
Compute Bigger local models (Ollama etc.) or cloud APIs 1.2B on Adreno GPU (~13 tok/s gen on OnePlus 8, README GPU table, v0.1.0)
Opsec / offline Often needs net for model or updates Designed air-gapped; no cloud inference
Physical cover Obvious bag drop Looks like a phone someone forgot
Setup pain Docker/Kali VM + MCP stack NetHunter + Magisk + 12GB RAM phone
Autonomy style You drive chat; agent assists Hours-long loop with playbooks + CVE DB
Best for Deep web app work, fast iteration Authorized internal drop-box, multi-hour quiet recon

Method B wins this writeup. Not because it’s smarter – it isn’t. You pick it when the engagement wants presence without a laptop silhouette, zero inference egress, and patience over peak IQ. Fat context windows, interactive web testing, human-steered branches? Stay on Method A. Most recaps never force that choice; they just paste the feature bullets.

How to run Nightcrawler AI pentesting on a phone

Legal gate first. The project is explicit: authorized testing only, with written Rules of Engagement. If you don’t own the network and don’t have ROE, stop. Unauthorized use is illegal. Full stop.

1. Hardware and OS baseline

  • Android phone on the documented test path: OnePlus 8 (Snapdragon 865 / Adreno 650)
  • 12GB+ RAM – model ~1.3GB, Android ~4GB, rest for tools (README Hardware, v0.1.0)
  • Kali NetHunter installed
  • Root via Magisk – full NetHunter is the stated stack
  • Optional: USB WiFi (Ralink RT3572 called out) for WiFi breach mode; Tailscale for remote dashboard; wall power

Used flagship-class phones in this generation show up cheap on the secondary market. Still budget time for NetHunter device support – not every handset has a clean image.

2. Install inside the NetHunter chroot

Actually, the install is short. The wait is the model server.

# clone then, inside Kali NetHunter chroot:
bash INSTALL.sh

# llama-server needs a few minutes after boot
curl -s http://127.0.0.1:8080/health
# expect {"status":"ok"}

# bring the stack up
bash scripts/run-36h.sh

Dashboard lives at https://<tailscale-hostname>:8888 from a device on your Tailscale net (README Quick Start). Reach it over Tailscale so you’re not punching random holes on the network under test.

3. Configure scope before you leave the room

mission:
 id: "CLIENT-YYYY-XXX"
 scope:
 networks: ["auto"] # subnet from wlan0
 excluded_hosts: ["auto"] # gateway + self
 excluded_ports: [502, 503] # SCADA defaults
 authorization: "ROE-YYYY-XXX.pdf"
 max_runtime_hours: 0 # 0 = no limit

model:
 local:
 ctx_size: 8192
 port: 8080

auto scope is clever for moving between networks, but it’s not a substitute for reading the ROE. If ICS/SCADA is in play, those default port excludes are a start – not a complete safety case. Path the authorization PDF to a real ROE file; empty strings are how “lab mode” becomes an incident.

Pro tip: Run NC_DRY_RUN=1 python3 main.py first. You get the agent loop against a mock Kali server – no packets, no “oops.” Do this on the phone you’ll actually deploy so pathing and services match reality.

4. What the loop is actually doing

Pick a target (weighted). Stuff host memory into context. Model emits REASONING / COMMAND. Scope proxy + destructive filter vote yes or no. Kali MCP runs the command. Parser writes SQLite. Context wiped; memory kept.

Multi-step work often skips the small model entirely. Turns out the 27 playbooks and 24,956-entry CVE match layer do a lot of the real work (feature set as of v0.1.0). Lab numbers the README reports after 72+ hours: 30+ hosts per network, 2,000+ commands, 10+ vulns, agent memory stuck in a boring 35-50MB band.

Edge cases the hype skips

v0.1.0 is not a press release. These four gotchas are why.

  1. ~50% command success from the 1.2B brain. The self-healing layer is the product: five-streak garbage reset, duplicate suppression, five-minute stuck watchdog, playbooks that bypass the LLM. Expect frontier-model polish and you’ll rage-quit by hour two.
  2. Battery is a performance cliff. Android can throttle the GPU ~6× off-wall power. Nightcrawler ships a governor that pins performance and backs off at ≤15% battery – still plan on a charger for long runs, or your “autonomous” agent becomes molasses.
  3. Root is not optional in the docs. Magisk + full NetHunter is the stated stack. Emotionally attached to an unrooted daily driver? You’re shopping for a second device, not a Termux weekend.
  4. Scope proxy ≠ perfect intent alignment. Out-of-scope IPs and destructive patterns get blocked. A clean command against a host that shouldn’t have been in scope still runs. Scary failures look well-formed until you read the report – an HN commenter called this out cleanly.

Does a phone-sized agent with a half-reliable planner change who gets to run long-dwell internal tests – or just who gets noisy telemetry when they misconfigure scope? That’s an open question worth sitting with before you buy a tray of used OnePlus units.

Keep power on USB, keep the ROE PDF path real in config, and keep the dry-run habit. Related rabbit holes once this works: local agent recovery-loop design, NetHunter kernel/monitor-mode builds, and how blue teams should hunt slow-and-low playbook traffic instead of classic vuln-scanner signatures.

Next action: clone the repo, run NC_DRY_RUN=1 python3 main.py on any Linux box or NetHunter chroot you already have, and only then decide whether your phone hardware and paperwork justify a live scoped lab run.

FAQ

Is Nightcrawler free?

Yes – MIT on GitHub. You pay in hardware (rooted NetHunter phone, 12GB+ RAM), time, and staying inside a real ROE.

Can I use it without root / on NetHunter Rootless?

Documented required stack: Kali NetHunter plus Magisk root. Rootless NetHunter exists for other workflows, but Nightcrawler’s README (v0.1.0) does not list it as supported. Unrooted ROG Phone in your pocket? Dry-run is your ceiling until the project says otherwise – or grab a second, rooted handset.

Will a 1.2B model actually find real issues?

Sometimes – inside a narrow, tool-driven loop. Author-reported multi-day runs logged 10+ vulns with playbooks and the local CVE DB carrying most of the weight. Read the edge-case section above for the command-success reality; don’t re-learn it the hard way on a live scope. Pair every finding with human validation. Thick application logic or creative chaining still belongs on Method A (bigger model, workstation).