Argus is a security control plane that orchestrates multiple security scanners (Semgrep, Trivy, TruffleHog, Checkov), applies AI-powered triage to reduce false positives, and enforces policy gates. It can be used as a GitHub Action, CLI tool, or deployed platform.
Yes! Argus is open source (MIT license) and free to use. You can choose from multiple AI providers including Claude (Anthropic), OpenAI, or Ollama for local inference. API costs vary depending on your chosen provider.
| Feature | GitHub Security | Argus |
|---|---|---|
| Secret Scanning | Pattern-based | Pattern + API verification |
| Dependency Scanning | Dependabot alerts | Trivy + reachability analysis |
| Code Scanning | CodeQL | Semgrep + AI triage |
| Noise Reduction | Manual review | 60-70% auto-suppression |
| Policy Enforcement | Manual | Automated Rego gates |
| Fix Suggestions | Limited | AI-generated remediations |
Argus complements GitHub Security (you can use both), but adds AI triage and policy automation.
Yes, for most providers. Argus supports multiple AI providers:
- Claude (Anthropic): Requires
ANTHROPIC_API_KEY - OpenAI: Requires
OPENAI_API_KEY - Ollama: No API key needed (local inference)
-
Create
.github/workflows/argus.yml:name: Security on: [pull_request] jobs: security: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - uses: devatsecure/Argus-Security@v1
-
Open a PR → Argus comments with findings
-
Done! 🎉
Minimum (read-only audit):
contents: read- to scan code
Recommended (for PR comments):
contents: readpull-requests: write- to comment on PRs
Optional (for automated PRs):
contents: write- to create audit PRs
Yes! Install locally:
git clone https://github.com/devatsecure/Argus-Security.git
cd argus-action
pip install -r requirements.txt
python3 scripts/run_ai_audit.py /path/to/your/repo auditSee PLATFORM.md for full CLI documentation.
| AI Provider | Cost per Run | Notes |
|---|---|---|
| Claude Sonnet | $0.20-0.50 | Depends on findings count |
| OpenAI GPT-4 | $0.30-0.70 | Varies by model and usage |
| Ollama | $0.00 | Local inference, no API calls |
GitHub Actions runner time: ~3-5 minutes = $0.008-0.013 (on public repos, free)
| Repository Size | Typical Duration |
|---|---|
| Small (<1K files) | 1-2 minutes |
| Medium (1K-5K files) | 3-5 minutes |
| Large (5K-20K files) | 5-10 minutes |
| Monorepo (>20K files) | 10-20 minutes |
Tips to speed up:
- Use
only-changed: 'true'for PR scans (only scan changed files) - Set
max-files: '50'to limit scope - Use
exclude-pathsto skip generated code
No! Argus runs asynchronously. Developers can continue working while the scan completes (~3-5 min).
With noise reduction, you get 3-5 actionable findings instead of 50+ raw alerts, which actually speeds up overall review time.
| Aspect | Ollama | Claude Sonnet | OpenAI GPT-4 |
|---|---|---|---|
| Cost | $0 (local) | ~$0.35/run | ~$0.50/run |
| Speed | 2-3 minutes | 1-2 minutes | 1-2 minutes |
| Accuracy | Good | Excellent | Excellent |
| Setup | Self-hosted required | API key only | API key only |
| Best For | Air-gapped environments, cost-conscious | High-security, general use | Alternative to Claude |
Recommendation: Use Claude or OpenAI for best results, Ollama for cost-sensitive or air-gapped environments.
| Mode | Data Sent | Recipient |
|---|---|---|
| Ollama | ❌ Nothing | Local inference only |
| Claude | ✅ Code snippets (findings context, ~200 lines max) | Anthropic API |
| OpenAI | ✅ Code snippets (findings context, ~200 lines max) | OpenAI API |
Never sent: Full repository, commit history, secrets, credentials.
No. Argus is stateless. All processing happens in your GitHub Actions runner and artifacts are stored in GitHub (controlled by you).
Optional: You can deploy Argus with PostgreSQL for historical analysis (self-hosted, you control the data).
Yes! Argus is designed for enterprise use:
- ✅ Open source (audit the code yourself)
- ✅ No telemetry or phone-home
- ✅ No credential storage
- ✅ Runs entirely in your infrastructure
- ✅ Optional: Use Ollama for local inference (no external API calls)
Yes, with Ollama:
- Install Ollama locally
- Download your chosen model (e.g., llama3, mistral)
- Configure Argus to use Ollama endpoint
- Run Argus (no internet required)
No with Claude or OpenAI (requires external API access).
Argus auto-suppresses findings with high "noise scores" (>0.7 by default):
Common suppression reasons:
- Test files (
test/,spec/,__tests__/) - Documentation (
docs/,README.md) - Example/template files (
.example,sample_) - Unverified secrets (pattern match only, no API validation)
- Low-severity findings in non-production code
You control this: Adjust NOISE_THRESHOLD in your workflow or edit Rego policies.
Option 1: React to PR comment
React with 👎 and comment why. Argus learns from feedback.
Option 2: Add to allowlist
Create .argus/allowlist.yml:
suppressions:
- fingerprint: "abc123def456" # From finding metadata
reason: "False positive: test fixture"
expires: "2025-12-31"Option 3: Custom Rego policy
Edit policy/rego/pr.rego to add suppression logic.
- Suppressed: Finding is detected but auto-filtered (shown in "Suppressed" section of report)
- Ignored: Finding is never detected (via
exclude-pathsor tool config)
Best practice: Use suppression (shows why it's not actionable) rather than ignoring (hides it entirely).
Yes! Edit policy/rego/pr.rego:
# Default: block on verified secrets + critical CVEs
block if {
input.findings[_].severity == "critical"
input.findings[_].verified == true
}
# Custom: also block on high SAST with exploitability "trivial"
block if {
input.findings[_].severity == "high"
input.findings[_].category == "SAST"
input.findings[_].exploitability == "trivial"
}Or use fail-on for simpler cases:
with:
fail-on: 'security:critical,security:high'| Scanner | Purpose | Enabled by Default |
|---|---|---|
| Semgrep | SAST (2000+ rules) | ✅ Yes |
| Trivy | CVE scanning | ✅ Yes |
| TruffleHog | Verified secret detection | ✅ Yes |
| Checkov | IaC security | ✅ Yes |
| Syft | SBOM generation | ⚙️ On-demand |
| Cosign | Artifact signing | ⚙️ On-demand |
Yes! Use scanner-specific flags:
with:
semgrep-enabled: 'false' # Disable Semgrep
# Note: Core scanners (TruffleHog, Trivy, Semgrep) are enabled by defaultOr use exclude-paths to skip scanning certain directories:
with:
exclude-paths: 'vendor/**,node_modules/**'Create .semgrep/rules.yml in your repo:
rules:
- id: custom-sql-injection
pattern: |
db.query($QUERY)
message: "Potential SQL injection"
severity: ERROR
languages: [javascript, typescript]Argus will automatically use your custom rules alongside the default p/security-audit ruleset.
Yes, for most languages:
| Language | Semgrep | Trivy | TruffleHog | Checkov |
|---|---|---|---|---|
| JavaScript/TypeScript | ✅ | ✅ | ✅ | ✅ |
| Python | ✅ | ✅ | ✅ | ✅ |
| Java | ✅ | ✅ | ✅ | ✅ |
| Go | ✅ | ✅ | ✅ | ✅ |
| Ruby | ✅ | ✅ | ✅ | ✅ |
| PHP | ✅ | ✅ | ✅ | |
| C/C++ | ✅ | ✅ | ❌ | |
| Rust | ✅ | ✅ | ❌ | |
| Terraform/IaC | ✅ | ✅ | ✅ | ✅ |
Legend: ✅ Full support,
Cause: Invalid API key or network issues
Solutions:
- Check API key: Verify
ANTHROPIC_API_KEYorOPENAI_API_KEYis set correctly - Test API access: Ensure your GitHub Actions runner can reach the AI provider API
- Try alternative provider: Switch between Claude, OpenAI, or Ollama
- Check rate limits: Ensure you haven't exceeded API rate limits
Cause: Large repo or many findings triggered excessive API calls
Solutions:
- Use Ollama:
with: { ai-provider: 'ollama' }(free, local) - Increase limit:
with: { cost-limit: '2.0' } - Scan fewer files:
with: { max-files: '50', only-changed: 'true' }
Cause: Custom Rego policy or fail-on configuration
Solutions:
- Check Rego policies in
policy/rego/pr.rego - Check
fail-onsetting in workflow - Set
fail-on-blockers: 'false'to disable blocking
Optimizations:
with:
only-changed: 'true' # Only scan changed files (PRs)
max-files: '50' # Limit file count
max-file-size: '50000' # Skip large files (bytes)
exclude-paths: 'vendor/**,node_modules/**' # Skip dependenciesExpected speedup: 2-5x faster on large repos
Adjustments:
env:
NOISE_THRESHOLD: '0.6' # Lower threshold = more suppression (default: 0.7)Or create .argus/allowlist.yml to suppress specific patterns.
Review suppression reasons in the report, then:
- If legitimately wrong: React with 👎 on PR comment (teaches model)
- If test file but real risk: Move to production code or adjust policy
- If need manual override: Lower noise threshold:
NOISE_THRESHOLD: '0.8'
Yes! Argus supports multiple caching strategies:
- Scanner tool caching: GitHub Actions automatically caches downloaded scanner binaries
- Dependency caching: Cache node_modules, pip packages, etc. to speed up scans
- AI model caching: When using Ollama, models are cached locally after first download
Example caching configuration:
- uses: actions/cache@v4
with:
path: |
~/.cache/semgrep
~/.cache/trivy
key: scanner-cache-${{ runner.os }}Yes! Argus displays real-time progress:
- Scanner execution status (running, completed, failed)
- File analysis progress (X of Y files analyzed)
- Cost tracking (current spend vs. limit)
- Time elapsed and estimated completion
Progress is shown in GitHub Actions logs and can be monitored in real-time during workflow execution.
Yes! Use the multi-repo coordinator:
python3 scripts/multi_repo_coordinator.py \
--config config/repos.json \
--max-concurrent 3Or create a GitHub Actions matrix:
strategy:
matrix:
repo: [repo1, repo2, repo3]
steps:
- uses: actions/checkout@v4
with:
repository: ${{ matrix.repo }}
- uses: devatsecure/Argus-Security@v1Yes! Argus outputs JSON/SARIF that you can parse:
- name: Notify Slack
if: steps.security.outputs.blockers > 0
run: |
curl -X POST $SLACK_WEBHOOK \
-d "{\"text\": \"🚨 ${{ steps.security.outputs.blockers }} security issues found\"}"Or use .argus/notifications.yml (coming soon).
Yes! But not recommended (too slow for pre-commit).
Better approach: Use Argus in CI/CD, and use faster tools locally:
pre-commitwithgitleaksfor secretseslintfor JS linting- Argus for comprehensive PR review
In GitHub Action:
with:
review-type: 'audit'
# SBOM automatically generatedStandalone:
python3 scripts/sbom_generator.py \
--repo-path /path/to/repo \
--output sbom.jsonSign SBOM:
cosign sign-blob --key cosign.key sbom.jsonSee PLATFORM.md#sbom for details.
Yes! Argus supports:
- Claude (Anthropic API)
- OpenAI (GPT-4)
- Ollama (self-hosted, local)
Example with Ollama:
with:
ai-provider: 'ollama'
ollama-endpoint: 'http://localhost:11434'
model: 'llama3:70b'Yes! Argus includes a SOC 2 compliance pack:
- CC6.1: Access controls (no verified secrets)
- CC6.6: Encryption + SBOM requirements
- CC7.2: Vulnerability remediation SLA
- CC7.3: Incident response timeliness
Enable via:
opa eval -d policy/rego/compliance_soc2.rego \
-i findings.json \
"data.compliance.soc2.decision"See PLATFORM.md#soc2 for full documentation.
Partially. Argus addresses:
- ✅ PCI-DSS 6.2: Patch vulnerabilities
- ✅ PCI-DSS 6.3: Secure development practices
- ✅ PCI-DSS 6.5: Common vulnerabilities (OWASP Top 10)
- ✅ PCI-DSS 8.2: No hardcoded credentials
But Argus alone doesn't cover full PCI-DSS (network security, physical access, etc.).
Yes! Argus generates:
- Markdown reports: Human-readable for auditors
- JSON: Structured data for compliance tools
- SARIF: Standard format for security tools
Example audit workflow:
- uses: devatsecure/Argus-Security@v1
with:
review-type: 'audit'
- uses: actions/upload-artifact@v4
with:
name: audit-report-${{ github.run_id }}
path: .argus/reviews/
retention-days: 365 # Keep for audit trailNot directly. Argus inherits GitHub's RBAC:
- Who can trigger workflows (GitHub permissions)
- Who can view artifacts (GitHub permissions)
- Who can approve PRs (GitHub branch protection)
For enterprise deployments, see PLATFORM.md#rbac for custom RBAC.
| Feature | Snyk | Argus |
|---|---|---|
| Focus | Dependency vulnerabilities | Multi-scanner (secrets, SAST, CVE, IaC) |
| Pricing | $0-$2,000+/month | Free (open source) |
| AI Triage | Limited | ✅ ML-powered (60-70% noise reduction) |
| Policy Engine | Yes (cloud) | ✅ Rego (self-hosted) |
| SBOM | Yes | ✅ Yes |
| Self-Hosted | Limited | ✅ Full control |
Use both? Yes! Snyk for dependency monitoring, Argus for PR gates + AI triage.
| Feature | SonarQube | Argus |
|---|---|---|
| Focus | Code quality + security | Security-first |
| Deployment | Self-hosted server | GitHub Action or self-hosted |
| AI Triage | No | ✅ Yes |
| Secret Scanning | Basic | ✅ Verified (API validation) |
| Cost | Free Community, $150+/month Enterprise | Free (open source) |
Use both? Yes! SonarQube for ongoing quality, Argus for PR security gates.
| Feature | GitHub Advanced Security | Argus |
|---|---|---|
| Secret Scanning | Pattern-based | ✅ Pattern + API verification |
| Code Scanning | CodeQL | ✅ Semgrep + AI triage |
| Dependency Review | Dependabot | ✅ Trivy + reachability |
| Noise Reduction | Manual | ✅ 60-70% auto-suppression |
| Cost | $49/user/month | Free |
Use both? Absolutely! They complement each other.
- Check existing issues
- If new, open an issue with:
- Steps to reproduce
- Expected vs actual behavior
- Workflow file (sanitized)
- Argus version
- Check discussions
- If new, start a discussion with:
- Use case / problem
- Proposed solution
- Why it's valuable
See CONTRIBUTING.md for:
- Development setup
- Testing requirements
- Pull request process
- Code style guide
Community support: Free via GitHub Issues/Discussions
Enterprise support: Contact us for:
- SLA-backed support
- Custom integrations
- Professional services
- Dedicated Slack channel
- 📖 Documentation: PLATFORM.md
- 💬 Discussions: GitHub Discussions
- 🐛 Issues: GitHub Issues
- 📧 Email: support@argus.io
Last updated: November 2025
Argus Version: v1.0.0