
AIRecon is an autonomous cybersecurity agent that combines a self-hosted Large Language Model (Ollama) with a Kali Linux Docker sandbox and a Textual TUI. It is designed to automate security assessments, penetration testing, and bug bounty reconnaissance — without any API keys or cloud dependency.
AIRecon is an autonomous penetration testing agent that drives any OpenAI-compatible LLM gateway (LiteLLM / vLLM / a hosted endpoint — or a local gateway proxying a local Ollama) with a Kali Linux Docker sandbox, native Caido proxy integration, a structured RECON → ANALYSIS → EXPLOIT → REPORT pipeline, and a real-time Textual TUI.
Backend-agnostic by design. Point AIRecon at a local gateway (LiteLLM / vLLM, or a gateway proxying a local Ollama) for fully offline / private operation, or at a hosted OpenAI/Anthropic/Gemini-compatible endpoint for maximum reasoning quality. Reasoning support is auto-detected at runtime — no per-model hardcoding.

Swiftproxy provides 90M+ clean residential IPs across 220+ locations, supporting HTTP(S)/SOCKS5, IP rotation, Sticky Sessions, and precise geo-targeting. It helps AI-powered research and reconnaissance workflows access websites reliably from different locations, making it suitable for web research, data collection, scraping, and location-based access.
Free testing is available, with 10% off using code PROXY90.
AIRecon talks to one OpenAI-compatible gateway, so you choose the trade-off — run a local model for privacy and zero API cost, or a hosted model for top reasoning quality. The same agent, pipeline, sandbox, and tooling work either way.
| Feature | AIRecon |
|---|---|
| Backend | Any OpenAI-compatible gateway (LiteLLM / vLLM / hosted) |
| Fully offline / no API keys | Yes — when using a local gateway (vLLM, or a gateway → local Ollama) |
| Reasoning detection | Automatic at runtime (no model-name hardcoding) |
| Caido integration | Native |
| Scope guard + audit log | Yes — refuse out-of-scope targets, log every command |
| Verified-only learning | Yes — the brain compounds proven findings, not noise |
| Session resume (chat + tool calls) | Yes |
| Local knowledge base | ~1.09M records (optional) |
§FUZZ§), findings, scope, sitemap, intercept.dataset_search autonomously before attempting unfamiliar techniques — grounding its decisions in real indexed data.RECON → ANALYSIS → EXPLOIT → REPORT
Each phase has specific objectives, recommended tools, and automatic transition criteria. Phase enforcement is soft — the agent is guided but never blocked. Checkpoints run every 5 (phase eval), 10 (self-eval), and 15 (context compression) iterations.
AIRecon does not fine-tune the LLM. Its "learning" is local, structured telemetry that guides tool choice and avoids repeating failed paths.
Local persistence (all on disk, no cloud):
~/.airecon/memory/airecon.db storing sessions, findings, patterns, target intel, tool usage, model performance, skill usage, and attack-chain discoveries.~/.airecon/learning/global_learning.json (tool performance stats, strategy patterns, observation log, distilled insights).~/.airecon/memory/by_target/ when persisted, containing endpoints, vulns, WAF bypasses, sensitive params, and auth endpoints.workspace/<target>/payload_memory.json when session persistence runs.How it affects behavior:
tech_correlations dataset — so datasets are used as the brain from iteration 1.intelligence_memory_recall_interval iterations (default 4), learned patterns / cold-start knowledge are re-injected based on detected tech; correlation runs every intelligence_correlation_interval (default 6).intelligence_learn_only_verified, default on).intelligence_adaptive_min_observations (default 2) observations.AIRecon works with any model your gateway exposes (GPT, Claude, Gemini, Qwen, GLM, DeepSeek, local Ollama/vLLM models, …). Two capabilities matter:
⚠️ Native tool/function calling is REQUIRED. Without it the agent cannot run any tool (http_observe, execute, browser, Caido, …) and is non-functional. Keep
openai_supports_native_tools: true.Reasoning is auto-detected. In
automode AIRecon sends the OpenAI-standardreasoning_effortand, if the backend rejects it (HTTP 400 unsupported-parameter), strips it and remembers — so reasoning models think, plain models don't break. No model-name list to maintain.
Quality guidance (independent of provider):