A powerful API wrapper for Nuclei that provides asynchronous scanning capabilities, progress tracking, and a real-time TUI dashboard.
- 🆔 Request IDs: Every scan gets a unique identifier for tracking
- ⚡ Async Processing: Queue scans for background execution
- 📊 Progress Tracking: Real-time scan progress and statistics
- 🖥️ TUI Dashboard: Interactive terminal UI for monitoring scans
- 🔄 Queue Management: View and manage queued scans
- Go 1.21 or later
- Nuclei installed and available in your PATH
- Git
Install the API server:
go install github.com/resistanceisuseless/nuclei-api/cmd/nuclei-api@latest
Install the TUI dashboard (optional):
go install github.com/resistanceisuseless/nuclei-api/cmd/nuclei-tui@latest
This will install both tools to your $GOPATH/bin
directory.
- Clone the repository:
git clone https://github.com/ResistanceIsUseless/nuclei-api.git
cd nuclei-api
- Install dependencies:
go mod download
- Build the project:
# Build both components
go build ./cmd/nuclei-api
go build ./cmd/nuclei-tui
# Or build specific component
go build ./cmd/nuclei-api # API server only
go build ./cmd/nuclei-tui # TUI dashboard only
If installed via go install
:
nuclei-api
If built from source:
./nuclei-api
The server will start on port 8080 by default.
If installed via go install
:
nuclei-tui
If built from source:
./nuclei-tui
The TUI dashboard will connect to the API server at http://localhost:8080 and display real-time scan status.
curl -X POST http://localhost:8080/scan \
-H "Content-Type: application/json" \
-d '{
"target": "example.com",
"templates": ["cves/", "vulnerabilities/"]
}'
curl http://localhost:8080/scan/{scan_id}
curl http://localhost:8080/scans
The TUI dashboard provides real-time monitoring of:
- Server status
- Active scans
- Queue status
- Scan progress
- Statistics
The server can be configured using environment variables:
PORT
: Server port (default: 8080)MAX_CONCURRENT_SCANS
: Maximum number of concurrent scans (default: 10)NUCLEI_PATH
: Path to nuclei executable (default: uses PATH)
- Fork the repository
- Create your feature branch (
git checkout -b feature/amazing-feature
) - Commit your changes (
git commit -m 'Add some amazing feature'
) - Push to the branch (
git push origin feature/amazing-feature
) - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.
- ProjectDiscovery for the amazing Nuclei tool
- Gin for the web framework
- Bubble Tea for the TUI framework