GitHub OSINT Agent is an intelligent multi-agent system for automated GitHub repository monitoring. It analyzes security vulnerabilities (CVE), technical trends, community health, and license compliance across multiple repositories.
- Open Source Maintainers: Monitor your projects' security and health
- Security Teams: Automate vulnerability scanning across repositories
- Enterprise OSINT Teams: Gather intelligence on open-source dependencies
- AI/ML Developers: Learn multi-agent architecture patterns with LangGraph
Yes! This project is open source under the Apache 2.0 license. You can use, modify, and distribute it freely.
- Python 3.12+
- Node.js 18+ (for frontend)
- MySQL 8.0+
- Redis (optional, for distributed deployments)
- GitHub Personal Access Token
- Go to GitHub Settings → Developer settings → Personal access tokens
- Create a new token with
repoandpublic_reposcopes - Add it to your
.envfile asGITHUB_TOKEN
MySQL stores:
- Scan history and results
- Agent conversation checkpoints (LangGraph memory)
- Organization configurations
- Alert channel settings
You can use the provided docker-compose.yml to start MySQL locally.
Yes. Install MySQL and Redis directly on your system, then:
pip install -r requirements.txt
python run.pySee .env.example for all options. Key variables:
| Variable | Required | Description |
|---|---|---|
GITHUB_TOKEN |
Yes | GitHub API access |
MYSQL_HOST |
Yes | MySQL server host |
MYSQL_PASSWORD |
Yes | MySQL password |
LLM_API_KEY |
For L2/L3 | OpenAI/Anthropic API key |
- DingTalk: Create a robot in DingTalk group, get webhook URL and optional sign key
- Feishu: Create a bot in Feishu/Lark, get webhook URL
Add them to .env or configure in the Organization Config UI.
| Type | Frequency | Description |
|---|---|---|
| L1 Light | Daily | CVE + License check (no LLM) |
| L2 Standard | Triggered | LLM analysis for high-risk findings |
| L3 Deep | Weekly | Full LLM analysis on top repos |
API:
curl -X POST http://localhost:8000/api/scanner/trigger \
-H "Content-Type: application/json" \
-d '{"scan_type": "L1_LIGHT", "org_name": "your-org"}'UI: Go to Organization Config → Click "Scan Now"
API: GET /api/scanner/status/{run_id}
UI: Dashboard shows real-time scan progress
We use OSV.dev - an open-source vulnerability database that aggregates:
- CVE data
- GitHub Security Advisories
- PyPI, npm, Maven, Go ecosystem advisories
| Level | CVSS Score | Examples |
|---|---|---|
| CRITICAL | ≥9.0 | RCE, log4j |
| HIGH | 7.0-8.9 | SQL injection, auth bypass |
| MEDIUM | 4.0-6.9 | Info disclosure |
| LOW | 1.0-3.9 | Minor issues |
Solution:
- Wait 1 hour (5000 requests/hour for authenticated users)
- Add multiple tokens in
.env:GITHUB_TOKEN_1,GITHUB_TOKEN_2 - Use GraphQL API (more efficient)
Check:
- MySQL is running:
docker ps - Credentials in
.envmatch docker-compose.yml - Port 3306 is not blocked
Requirements for L2/L3 scans:
- Set
LLM_API_KEY(OpenAI or Anthropic) - Set
LLM_MODEL(e.g.,gpt-4,claude-sonnet-4-5-20250929) - Ensure API key has sufficient quota
Check:
- Webhook URL is correct
- DingTalk requires sign key for security-enabled robots
- Check
app/alert/logs for errors
Solution:
cd frontend
npm install
npm run devEnsure backend is running on port 8000.
- DeepAgents: Agent orchestration layer
- LangGraph: State machine for multi-agent workflows
- LangChain: LLM integration
L1 (Daily) → Fast, rule-based checks → Find high-risk items
↓
L2 (Triggered) → LLM analysis on high-risk → Deep investigation
↓
L3 (Weekly) → Full LLM analysis on top repos → Strategic insights
- Create YAML in
subagents/your-analyzer.yaml - Implement tools in
app/tools/your_analyzer.py - Register in
loader.pyTOOL_CLASS_MAP - Add tests in
tests/test_your_analyzer.py
Yes! Supported providers:
- OpenAI (GPT-4, GPT-3.5)
- Anthropic (Claude)
- Local models via LangChain integrations
Set LLM_MODEL in .env:
LLM_MODEL=openai:gpt-4
LLM_MODEL=anthropic:claude-sonnet-4-5-20250929
- GitHub API: Repository metadata (public only)
- OSV.dev: Package names and versions for CVE lookup
- LLM: Only for L2/L3 scans, limited to findings context
No source code or secrets are sent externally.
.envis excluded from git (see.gitignore)- Pre-commit hooks detect potential secret leaks
- Secrets never appear in logs
Yes. All components can run locally:
- MySQL: local or private instance
- Redis: local instance
- No external API calls required for L1 scans
See CONTRIBUTING.md for detailed guidelines.
Quick steps:
- Fork the repository
- Create a feature branch
- Make changes + add tests
- Submit a Pull Request
Open an issue using the Bug Report template.
Open an issue using the Feature Request template.
If your question isn't answered here:
- Open an issue with the
questionlabel - Check the Documentation
- Review existing Issues