# πŸ‘» PHANTOM [![CI](https://github.com/Njap-png/Phantom/actions/workflows/ci.yml/badge.svg)](https://github.com/Njap-png/Phantom/actions/workflows/ci.yml) **Multi-agent cybersecurity AI assistant** β€” autonomous penetration testing, reconnaissance, vulnerability analysis, and AI-powered security operations, all from your terminal. ``` Β· Β· Β· Β· Β· Β· β–„β–„β–„β–„β–„β–„β–„β–„β–„β–„β–„β–„β–„β–„β–„β–„β–„β–„β–„ β–ˆ ═══ ═══ ═══ ═══ β–ˆ β–β–ˆ Β· Β· Β· Β· β–ˆβ–Œ β–β–ˆ ╔═══════════╗ β–ˆβ–Œ β–β–ˆ β•‘ β—ˆ β—ˆ β•‘ β–ˆβ–Œ β–β–ˆ β•‘ β•² β•± β•² β•± β•‘ β–ˆβ–Œ β–β–ˆ β•šβ•β•β•β•β•β•β•β•β•β•β•β• β–ˆβ–Œ β–β–ˆ ● β–ˆβ–Œ β–€β–„ ═══════════ β–„β–€ P H A N T O M cybersecurity AI Β· v0.2.0 ``` ## Quick Start ```bash # Clone git clone https://github.com/Njap-png/Phantom.git cd Phantom # Run (no install needed β€” zero-dep ESM) node phantom.mjs # Or Docker docker build -t phantom . docker run -it phantom ``` ## Features ### πŸ”§ 108 Built-in Tools | Category | Tools | |---|---| | **Core** | shell, web_fetch, decode, encode, hash, file_analyze, batch, code_analyze, code_gen, yara | | **Recon** | dns_lookup, whois, sub_enum, subfinder (ext), port_scan, http_headers, ssl_check, crawl, geoip, dns_zone, reverse_dns, wayback, robots_txt, amass (ext), dnsx (ext), httpx (ext), naabu (ext), katana (ext), sub_takeover | | **Web** | dir_bruteforce, xss_scan, sql_detect, open_redirect, cors_test, http_methods, ffuf (ext), arjun (ext) | | **CVE/Exploit** | cve_search, searchsploit, shodan_search, nuclei (ext) | | **Auth** | bruteforce, jwt_decode, hash_crack, hashcat (ext) | | **OSINT** | email_verify, email_breach, github_dork, vt_check, cloud_enum, wayback | | **Network** | netcat (ext), nmap (ext), masscan (ext), dig, ping, traceroute, netstat | | **Crypto** | ssl_check, cert_expiry, encrypt, decrypt, random | | **File** | file_read, file_write, file_edit, file_search, file_list | | **Self** | self_info, self_read, self_edit, self_add_tool, distro | | **Knowledge** | knowledge_add, knowledge_search | | **Automation** | playbook_create, playbook_list, playbook_run, playbook_edit, recon, vuln_scan, report_save, report_export, session_save, session_load, schedule | > Type `node phantom.mjs --list` for the full list. External tools (marked `ext`) require installation β€” Phantom detects them at runtime. ### πŸš€ New in v0.2.0 | Feature | Description | |---|---| | **`--json` output** | `phantom --tool --json ` β€” structured `{ok, data}` JSON | | **Tool piping** | `phantom --tool --pipe "subfinder\|dom\|httpx"` β€” chain outputβ†’input | | **Scheduled scanning** | `@schedule\|daily\|recon\|target` β€” recurring automated scans | | **Scope management** | `@scope\|add\|domain.com` β€” target scoping for batch ops | | **Shell audit trail** | Every command logged, dangerous patterns blocked | | **`--quiet` mode** | `PHANTOM_QUIET=1` or `--quiet` β€” suppress banner/status | | **`--version`** | `phantom --version` β€” prints version and exits | | **Docker** | `docker build -t phantom .` β€” Alpine-based container | | **TAB autocomplete** | `@tool_name|` completion in REPL | ### πŸ€– Multi-Agent Team 4 specialized agents working in parallel: | Agent | Role | Specialty | |---|---|---| | **Lyra** | Coordinator | Breaks down tasks, delegates, synthesizes results | | **Nova** | Recon | DNS, OSINT, scanning, surface mapping | | **Orion** | Exploit | Vulnerability research, pentesting, brute force | | **Vega** | Defense | SSL, CORS, JWT, hardening, monitoring | Use `@delegate|name|task` for agent-to-agent delegation. ### 🎯 One-Shot Commands ```bash phantom --recon example.com # Full recon (7 steps + report) phantom --tool port_scan scanme.org # Run a single tool phantom --tool --json cve_search "apache 2.4.49" # JSON output phantom --tool --pipe "subfinder|dom|httpx|nuclei" # Tool chain phantom --list # List all 108 tools phantom --list --json # List as JSON phantom --gui # Web dashboard (port 8080) phantom --api # REST API (port 9090) phantom --quiet # Suppress banner phantom --version # Show version phantom --help # Full usage ``` ### πŸ’¬ Interactive REPL ```bash phantom πŸ‘» recon example.com πŸ‘» /model groq # Switch LLM πŸ‘» @schedule|daily|recon|example.com # Schedule daily scan πŸ‘» @scope|add|example.com # Add to target scope πŸ‘» @pipe|subfinder|example.com|httpx # Chain tools inline ``` | Command | Description | |---|---| | `/help` | Show all commands | | `/tools` | List available tools | | `/model` | Show/switch LLM provider | | `/delegate ` | Delegate to a specialist | | `/talk ` | Chat directly with an agent | | `/agents` | List agent team with status | | `/gui` | Start web dashboard | | `/api` | Start REST API | | `/save ` | Save session | | `/load ` | Load session | | `/clear` | Clear screen | | `/quit` | Exit | REPL also supports: - `@tool_name|args` β€” run any tool inline - `@pipe|tool1|input|tool2` β€” chain tools - `@schedule|interval|tool|target` β€” schedule recurring scans - `@scope|add|domain` β€” manage target scope - `@workspace_write|key|value` β€” save findings - `TAB` β€” autocomplete tool names ## CI Every push runs across Node.js 20 and 22: - JS syntax check - TypeScript build (`tsc --noEmit`) - CLI verification (`--list` with tool count > 100) - **34 test cases** (core runtime + features) [![CI](https://github.com/Njap-png/Phantom/actions/workflows/ci.yml/badge.svg)](https://github.com/Njap-png/Phantom/actions/workflows/ci.yml) ## LLM Providers Phantom auto-detects available providers on startup. Supported: | Provider | Config | |---|---| | **Ollama** (local, default) | Auto-detected if running | | **OpenAI** | `OPENAI_API_KEY` env or `@llm_config\|set\|openai_api_key\|sk-...` | | **OpenCode** (via Hermes) | `@llm_config\|opencode\|deepseek-v4-flash-free` | | **Groq** | `GROQ_API_KEY` env | | **Anthropic** | `ANTHROPIC_API_KEY` env | | **Gemini** | `GEMINI_API_KEY` env | | **DeepSeek** | `DEEPSEEK_API_KEY` env | | **Mistral** | `MISTRAL_API_KEY` env | | **OpenRouter** | `OPENROUTER_API_KEY` env | Set API keys via interactive prompt on first run, or directly in `~/.config/phantom/config.json`. ### Example: Hermes Agent / OpenCode provider Phantom works with Hermes Agent's OpenCode provider chain: ```bash # Via @llm_config interactive πŸ‘» @llm_config|opencode|deepseek-v4-flash-free # Or set env vars export PHANTOM_LLM_PROVIDER=opencode export HERMES_OPCODE_API_KEY=sk-your-key-here # <-- REPLACE with your key phantom ``` > ⚠ Never commit real API keys to Git. Use environment variables or the interactive `@llm_config` prompt instead. ## Configuration All config lives in `~/.config/phantom/`: - `config.json` β€” LLM provider settings, API keys, defaults - `memories/` β€” Per-agent persistent memory - `tools/` β€” Custom tool definitions - `reports/` β€” Generated security reports - `knowledge/` β€” Persistent knowledge base entries - `scope.json` β€” Target scope definitions - `projects/` β€” Per-project workspace data - `schedules.json` β€” Scheduled scan definitions ## Environment Variables | Variable | Default | Description | |---|---|---| | `PHANTOM_MAX_ITER` | `8` | Max ReAct loop iterations per request | | `PHANTOM_TOOL_TIMEOUT` | `30000` | Shell command timeout (ms) | | `PHANTOM_LLM_PROVIDER` | `openai` | Default LLM provider | | `PHANTOM_PROVIDERS_READY` | β€” | Comma-separated ready providers | | `PHANTOM_QUIET` | β€” | Suppress banner/status output | | `HERMES_OPCODE_API_KEY` | β€” | Hermes Agent / OpenCode provider API key | ## Architecture ``` User Input β”‚ β–Ό Lyra (Coordinator) β”‚ β”œβ”€β”€ Nova (Recon) β€” DNS, ports, OSINT β”œβ”€β”€ Orion (Exploit) β€” CVEs, brute force, SQLi └── Vega (Defense) β€” SSL, CORS, hardening β”‚ β–Ό Shared Workspace (agent-to-agent data) β”‚ β–Ό Synthesized Response ``` - **Zero dependencies** β€” runs on vanilla Node.js ESM - **EventBus** pattern for decoupled agent communication - **ReAct loop** with 8 configurable tool iterations - **Persistent memory** for each agent - **Auto-save** conversations across sessions ## Requirements - **Node.js** 20+ (ESM support) - **Termux** / **Linux** / **macOS** / **WSL** - LLM provider (Ollama recommended for local use) - Docker (optional, for containerized use) ## Known Issues - System tool detection runs once at startup β€” tools installed later won't show until restart - Agent delegation requires an LLM provider (not available in tools-only mode) - Some tools (vt_check, shodan_search) require API keys in environment - Dashboard requires `blessed` for terminal split-panel UI (optional dep) ## License MIT # test