Metadata-Version: 2.4
Name: noisegate
Version: 0.1.0rc3
Summary: AI-powered bug bounty report triage
Project-URL: Homepage, https://github.com/sgmurphy/NoiseGate
Project-URL: Repository, https://github.com/sgmurphy/NoiseGate
Project-URL: Issues, https://github.com/sgmurphy/NoiseGate/issues
Author-email: Sean Murphy <sgmurphy@gmail.com>
License-Expression: MIT
License-File: LICENSE
Keywords: ai,bug-bounty,security,triage
Classifier: Development Status :: 4 - Beta
Classifier: Environment :: Console
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: MIT License
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.12
Classifier: Topic :: Security
Requires-Python: >=3.12
Requires-Dist: click>=8.1.0
Requires-Dist: httpx>=0.27.0
Requires-Dist: markdownify>=0.11
Requires-Dist: pdfminer-six>=20221105
Requires-Dist: playwright>=1.40
Requires-Dist: pluggy>=1.0
Requires-Dist: pydantic-ai[anthropic]>=0.1.0
Requires-Dist: pydantic>=2.7.0
Requires-Dist: pyyaml>=6.0
Requires-Dist: rich>=13.0.0
Provides-Extra: dev
Requires-Dist: mypy>=1.10.0; extra == 'dev'
Requires-Dist: pytest-cov>=5.0.0; extra == 'dev'
Requires-Dist: pytest>=8.0.0; extra == 'dev'
Requires-Dist: ruff>=0.9.0; extra == 'dev'
Requires-Dist: types-pyyaml>=6.0; extra == 'dev'
Provides-Extra: evals
Requires-Dist: pandas>=2.0; extra == 'evals'
Requires-Dist: pyarrow>=14.0; extra == 'evals'
Provides-Extra: google
Requires-Dist: pydantic-ai[google-gla]; extra == 'google'
Provides-Extra: openai
Requires-Dist: pydantic-ai[openai]; extra == 'openai'
Description-Content-Type: text/markdown

# NoiseGate

**Filter the noise from bug bounty reports.**

A program-aware AI triage assistant that evaluates report quality, scope alignment, and impact — so researchers submit better reports and triagers focus on real vulnerabilities.

<!-- screenshot or demo gif here -->

## Quickstart

```bash
pip install noisegate
```

**1. Configure your LLM provider:**
```bash
noisegate llm
```

**2. Import a bug bounty program:**
```bash
noisegate program add acme --url https://hackerone.com/acme
```

**3. Triage a report:**
```bash
noisegate triage report.md
```

Each report gets a three-verdict result:

| Verdict | Meaning | Action |
|---------|---------|--------|
| **PASS** | In scope, real impact, clear writeup | Submit / triage it |
| **WARN** | Real finding, incomplete writeup | Improve the report |
| **FAIL** | Out of scope or ineligible | Don't submit |

## Usage

```bash
noisegate triage report.md                          # default program
noisegate triage report.md --program acme           # specific program
noisegate triage report.md --json                   # machine-readable output
noisegate triage report.md --model openai:gpt-4o    # override model
```

Exit codes: `0` PASS, `1` WARN, `2` FAIL, `3` error.

```bash
noisegate program add acme --url https://hackerone.com/acme
noisegate program add acme --file ./policy.html
noisegate program list
noisegate program show acme
noisegate program use acme
noisegate program remove acme
```

Supports Anthropic (default), OpenAI, Gemini, and Ollama. Pass `--model <provider>:<model-id>` to switch.

## Documentation

See the [full docs](https://sgmurphy.github.io/NoiseGate) for configuration, custom check plugins, and evals.

## Development

```bash
pip install -e ".[dev]"
playwright install chromium
python -m pytest
```

## License

MIT
