DHScan Agent
Open-source AI Hackers for your Apps
🦉 Overview
DHScan provides autonomous AI agents that rapidly scan your code to discover potential security vulnerabilities. It's built for developers and security teams who need fast, efficient security feedback.
Powered by a multi-agent system, DHScan is optimized for speed, discovering potential issues without running slow validation steps. This allows your team to quickly investigate and confirm findings within your own workflow.
For detailed usage and configuration, please refer to the project's documentation.
🚀 Installation
Install DHScan Agent directly from PyPI:
pip install dhscan-agent
⚡ Quick Start
Once installed, you can start a scan with a single command. Make sure you have configured your LLM environment variables first (see below).
# Scan a web application
dhscan --target https://your-vulnerable-app.com
# Scan a local codebase
dhscan --target /path/to/your/local/code
⚙️ Configuration
DHScan Agent is configured via environment variables. Below are the key variables you need to set up.
Required Variables
DHSCAN_LLM: The identifier for the language model you want to use (e.g.,openai/gpt-4o,ollama/llama3). This is used bylitellmto route requests.
Conditionally Required
LLM_API_KEY: Your API key for the selected LLM provider. This is required for cloud-based models like OpenAI, Anthropic, etc. It can be omitted if you are using a local model via a custom base URL.
Optional Variables
LLM_API_BASE: The base URL for the LLM API. This is essential if you are using a local model server like Ollama (http://localhost:11434) or LMStudio.DHSCAN_IMAGE: Allows you to specify a custom Docker image for the sandboxed environment where tools are executed. Defaults tosandbox:1.0.REPORT_REPO_URL: The URL of the Git repository where scan reports should be uploaded. Required for the--upload-to-gitfeature.REPORT_REPO_TOKEN: A Git access token with write permissions to the report repository. Required for the--upload-to-gitfeature.
Example Setup
# For cloud models (e.g., OpenAI)
export DHSCAN_LLM='openai/gpt-4o'
export LLM_API_KEY='your-openai-api-key'
# For local models (e.g., Ollama)
export DHSCAN_LLM='ollama/llama3'
export LLM_API_BASE='http://localhost:11434/v1' # Note: Ollama often requires /v1 suffix
# For uploading reports
export REPORT_REPO_URL='https://gitlab.com/your-group/reports.git'
export REPORT_REPO_TOKEN='your-gitlab-access-token'
export DHSCAN_IMAGE='dhyds/dh-sandbox:1.0-amd64'
[!WARNING]
Only test applications you own or have permission to test. You are responsible for using DHScan ethically and legally.
Metadata
Release files for dhscan-agent 0.1.8
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| dhscan_agent-0.1.8.tar.gz | 207.7 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| dhscan_agent-0.1.8-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 469.7 kB
Release files / dhscan_agent-0.1.8.tar.gz
| Download URL | dhscan_agent-0.1.8.tar.gz |
|---|---|
| Size | 207.7 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
0d3f98b6bf2eb96642a9d948685f05ee60f650c8b62f30c1579e7a60834f200b
|
|
BLAKE2b-256 checksum How to use checksums |
cde0f3d6f10f101622041d17d7786bece74fd4b7c540f6b01cd9b1fd5c9c9f7d
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
poetry/2.2.1 CPython/3.13.7 Darwin/25.1.0
|
Release files / dhscan_agent-0.1.8-py3-none-any.whl
| Download URL | dhscan_agent-0.1.8-py3-none-any.whl |
|---|---|
| Size | 262.1 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
73fb225e96c42baf18e4e47ac2fe79bafe866362558af43f736c89b50038d574
|
|
BLAKE2b-256 checksum How to use checksums |
31c46b0b9aedfd0db537170bdf40839b8aecb2fe2b72e20da717678a5eb8413f
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
poetry/2.2.1 CPython/3.13.7 Darwin/25.1.0
|