⚠️ Vibe Coded Disclaimer: This project was built entirely with AI assistance (OpenCode Go + DeepSeek) as an experiment to see what could be accomplished. Use at your own risk. It is 100% vibe coded — no manual coding, no guarantees, no warranties. If it breaks, roll it back. If it works, you're welcome.
A complete, ready-to-deploy cybersecurity platform for Raspberry Pi 4/5. Web dashboard, AI chatbot, 40+ tools, one-click launchers, automated pentesting — everything a security professional needs.
Web dashboard — live system stats, 50+ pentest tools, AI chatbot, threat intelligence, and automated pentesting pipeline
curl -sSL https://raw.githubusercontent.com/RufflezAU/dragonpi/main/install.sh | sudo bashAfter install, open http://dragonpi.local in your browser.
💡 Recommended: Configure OpenCode API Key
The chatbot uses
deepseek-v4-flash-freeby default (no key needed). For better results — especially pentest self-healing and complex analysis — add a Pro API key fordeepseek-v4-pro. The system auto-falls back to free if Pro is unavailable.mkdir -p ~/.opencode cat > ~/.opencode/config.json << 'EOF' { "providers": { "opencode-go": { "api_key": "YOUR_API_KEY_HERE" } } } EOF sudo systemctl restart chatbotGet a key at opencode.ai. The free tier works without any key.
The installer includes Tailscale by default. Skip it with TAILSCALE=0:
curl -sSL https://raw.githubusercontent.com/RufflezAU/dragonpi/main/install.sh | TAILSCALE=0 sudo bashAfter install, connect your Pi to your tailnet:
sudo tailscale upThen install Tailscale on your laptop (macOS App Store, or curl -fsSL https://tailscale.com/install.sh | sh). Log in with the same account and you can access your Pi from anywhere:
http://<tailscale-ip> # Dashboard
http://<tailscale-ip>/pentest # Pentest console
ssh dragonpi@<tailscale-ip> # SSH
Find your Pi's Tailscale IP with tailscale status. Pentest tools automatically use the physical network interface — Tailscale VPN traffic is never scanned.
| Feature | Description |
|---|---|
| Web Dashboard | Custom Flask dashboard engine with 50+ tools in 11 categories, live system stats, threat intel |
| AI Chatbot | OpenCode-powered AI assistant — chat to run tools, scan networks, manage the system. Auto-falls back to free model if Pro unavailable |
| Automated Pentesting | 24+ tool pentest pipeline (external + internal). Per-tool checkboxes, DAST vulnerability scanning, compliance scoring (ISO 27001, NIST CSF, ASD E8, PCI DSS, HIPAA, CIS) |
| AI Self-Healing | When tools fail or return zero results, the Pi's AI diagnoses and attempts a fix — then retries automatically |
| AI Post-Pentest Review | After each pentest, AI reviews all tool output and writes an ai-review.txt with improvement suggestions |
| Premium Reports | Branded HTML + PDF with executive summary, compliance graphs (risk gauge, cadence bars, severity charts), CVSS scoring, remediation matrix, root cause analysis |
| Evidence Compilation | All raw tool output compiled into evidence.txt for manual review — every command, every result |
| Chain Scanning | Re-scan discovered subdomains, hosts, and URLs from the results page — select targets and launch batch scans |
| Job Queue | Run up to 2 pentests in parallel. Additional jobs auto-queue and start when a slot frees |
| Web Terminal | ttyd — full bash terminal in your browser, proxied through nginx |
| One-Click Launchers | Click any tool → terminal opens with 44 beginner-friendly guides |
| System Monitor | Live CPU/RAM/Disk/Temp with colored progress bars |
| RSS News Ticker | Scrolling cybersecurity headlines from 9 sources |
| Threat Intelligence | Live CVE feed, AlienVault OTX pulses, attack map |
| Podcast Player | Built-in player for cybersecurity podcasts (Risky Business, Darknet Diaries, Smashing Security) |
| Remote Access | Optional Tailscale VPN — access your Pi securely from anywhere, no port forwarding needed |
| Cockpit | System management web UI on port 9090 |
The DragonPI AI Chat you're talking to is built on OpenCode Go (opencode.ai) — an AI coding assistant CLI. DragonPI wraps it with a custom Flask web UI (multi-session chat, tool integration, system control) and extends it with automated pentesting, threat intelligence, and dashboard features. The chat runs locally on your Pi — no cloud dependency beyond the AI model API.
| Category | Tools |
|---|---|
| Vulnerability Scanning | Nmap (50+ CVE scripts), Nikto, SQLmap, SearchSploit, Nuclei (8000+ templates), OWASP ZAP, Dalfox |
| Network Scanning | Nmap, Masscan, Netdiscover, Naabu, Amass, Subfinder, TheHarvester, Httpx |
| Network Analysis | tcpdump, tshark, Netcat, Socat |
| Password Attacks | Hashcat, John, Hydra, Crunch, CeWL |
| Windows/AD | Enum4linux, SMB Client, Impacket, Certipy, BloodHound, Coercer |
| Web Application | Gobuster, ffuf, Wfuzz, Dirb, WhatWeb, Wafw00f |
| MITM & Tunneling | Mitmproxy, Ettercap, Chisel, SSHuttle, Proxychains |
| Forensics | Autopsy (Web UI), Binwalk, Foremost, ExifTool, Steghide, dc3dd, Sleuthkit |
| Wireless | Aircrack-ng, Wifite, Reaver, PixieWPS, airbase-ng, Horst, hcxdumptool |
| SSL/TLS | testssl.sh, sslscan |
The chatbot supports automatic model fallback if the primary AI model is unavailable (API key expired, no credits, quota exceeded, etc.).
- The chatbot tries models in priority order (defined by the
OPENCODE_MODELSenvironment variable) - If the primary model fails — especially with auth/credit errors — it automatically falls back to the secondary model
- The response includes a
_modelfield indicating which model answered
| Priority | Model | Type |
|---|---|---|
| 1st | opencode-go/deepseek-v4-pro |
Primary — Go subscription |
| 2nd | opencode/deepseek-v4-flash-free |
Fallback — free tier |
Set OPENCODE_MODELS in the systemd service file as a comma-separated list (no spaces):
Environment=OPENCODE_MODELS=opencode-go/deepseek-v4-pro,opencode/deepseek-v4-flash-freedragonpi.local (port 80)
├── Custom Dashboard → / (Flask :5000, nginx proxy)
├── DragonAI Chatbot → /chat → Flask :5000 → OpenCode CLI (multi-model)
├── Pentest Console → /pentest → Flask → 24+ tool pipeline (per-tool toggles)
├── Podcast Player → /podcast → Flask → RSS feeds (client-side audio)
├── Web Terminal → /terminal/ → nginx → ttyd :7681
├── Cockpit → :9090
├── RSS Feed → /rss → Flask proxy (9 sources)
├── Threat APIs → /api/threat/* → CVE, OTX, live threats
└── Tool Launcher → /term/TOOL → redirect → terminal
dragonpi/
├── install.sh # One-line installer
├── chatbot/
│ ├── app.py # Flask backend (dashboard, chat, podcast, pentest routes)
│ ├── pentest.py # 24+ tool pentest engine + self-healing + AI review
│ └── templates/
│ ├── dashboard.html # Custom dashboard UI
│ ├── index.html # Chat UI
│ ├── podcast.html # Podcast player
│ ├── pentest.html # Pentest console UI
│ └── report_template.html # Premium HTML report template
├── dashboard/
│ └── config.yml # Dashboard configuration (services, links, categories)
├── nginx/
│ └── dragonpi.conf # Nginx reverse proxy config
├── services/
│ ├── chatbot.service # DragonAI systemd unit (with model env vars)
│ ├── ttyd.service # Web terminal systemd unit
│ └── autopsy.service # Autopsy forensic UI systemd unit
├── scripts/
│ ├── dragonpi-shell # Terminal wrapper (auto-runs tools from dashboard)
│ └── guides/ # Beginner-friendly guide scripts for each tool
├── AGENTS.md # Project memory (gitignored — local only)
├── secrets.md # Credentials (gitignored — never committed)
└── .gitignore
When tools fail or return zero results unexpectedly, the Pi's OpenCode AI:
- Diagnoses the failure (missing package, wrong CLI flag, broken config)
- Fixes with a safe, non-interactive bash command
- Retries the tool automatically
- Logs the diagnosis and result
Triggers: nmap 0 hosts, nikto 0 findings, nuclei 0 vulns, ZAP 0 alerts (both modes).
After each pentest finishes:
- All raw tool output is compiled into
evidence.txt - The AI reviews it for anomalies, missed findings, tool configuration issues
- An
ai-review.txtis saved with improvement suggestions - Both files appear in the report downloads
Every tool in the pipeline has its own checkbox — enable/disable individual scanners. External mode: 18 tools. Internal mode: 12 tools. All checked by default.
evidence.txt contains every raw tool command output + the full pentest log.
Download it from the reports list or via GET /api/pentest/log/<job_id>.
git clone https://github.com/RufflezAU/dragonpi.git
cd dragonpi
sudo ./install.shTo update an existing install:
cd /opt/dragonpi
git pull
sudo ./install.sh- Raspberry Pi 4 or 5 (4GB+ RAM recommended)
- Raspberry Pi OS (Debian 12/13, 64-bit)
- 32GB+ SD card
- OpenCode account (free tier works — subscription unlocks premium models)
- No secrets in git: password files, API keys,
.envfiles, and*secret*patterns are all gitignored secrets.mdandAGENTS.mdare local-only by design (listed in.gitignore)- The chatbot authenticates via the OpenCode CLI — no API keys stored in the codebase
- All dashboard config is served from
/opt/dragonpi/dashboard/config.yml
MIT — Use responsibly. Only test systems you own or have permission to test.