agentra 0.3.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (72) hide show
  1. agentra-0.3.0/.github/workflows/docs.yml +26 -0
  2. agentra-0.3.0/.github/workflows/publish.yml +71 -0
  3. agentra-0.3.0/.github/workflows/tests.yml +40 -0
  4. agentra-0.3.0/.gitignore +14 -0
  5. agentra-0.3.0/PKG-INFO +485 -0
  6. agentra-0.3.0/README.md +451 -0
  7. agentra-0.3.0/agentra/__init__.py +149 -0
  8. agentra-0.3.0/agentra/cli.py +596 -0
  9. agentra-0.3.0/agentra/compliance/__init__.py +4 -0
  10. agentra-0.3.0/agentra/compliance/reporter.py +344 -0
  11. agentra-0.3.0/agentra/db.py +316 -0
  12. agentra-0.3.0/agentra/eval/__init__.py +15 -0
  13. agentra-0.3.0/agentra/eval/compare.py +230 -0
  14. agentra-0.3.0/agentra/eval/dataset.py +143 -0
  15. agentra-0.3.0/agentra/eval/experiment.py +288 -0
  16. agentra-0.3.0/agentra/eval/scorers.py +199 -0
  17. agentra-0.3.0/agentra/git_tracker.py +212 -0
  18. agentra-0.3.0/agentra/guard/__init__.py +35 -0
  19. agentra-0.3.0/agentra/guard/agent.py +239 -0
  20. agentra-0.3.0/agentra/guard/attacks.py +188 -0
  21. agentra-0.3.0/agentra/guard/auto_dataset.py +113 -0
  22. agentra-0.3.0/agentra/guard/fingerprint.py +213 -0
  23. agentra-0.3.0/agentra/guard/mcp_scanner.py +559 -0
  24. agentra-0.3.0/agentra/guard/mcp_static.py +252 -0
  25. agentra-0.3.0/agentra/guard/multilingual.py +349 -0
  26. agentra-0.3.0/agentra/guard/mutations.py +95 -0
  27. agentra-0.3.0/agentra/guard/prompt_leakage.py +319 -0
  28. agentra-0.3.0/agentra/guard/rag_scanner.py +217 -0
  29. agentra-0.3.0/agentra/guard/red_team.py +570 -0
  30. agentra-0.3.0/agentra/guard/swarm.py +422 -0
  31. agentra-0.3.0/agentra/guard/toolchain.py +340 -0
  32. agentra-0.3.0/agentra/interceptor.py +119 -0
  33. agentra-0.3.0/agentra/monitor/__init__.py +5 -0
  34. agentra-0.3.0/agentra/monitor/daemon.py +132 -0
  35. agentra-0.3.0/agentra/monitor/drift.py +249 -0
  36. agentra-0.3.0/agentra/monitor/tracer.py +178 -0
  37. agentra-0.3.0/agentra/plugins/__init__.py +4 -0
  38. agentra-0.3.0/agentra/plugins/registry.py +138 -0
  39. agentra-0.3.0/agentra/pricing.py +103 -0
  40. agentra-0.3.0/agentra/providers.py +157 -0
  41. agentra-0.3.0/agentra/review/__init__.py +4 -0
  42. agentra-0.3.0/agentra/review/annotations.py +193 -0
  43. agentra-0.3.0/agentra/server/__init__.py +1 -0
  44. agentra-0.3.0/agentra/server/app.py +434 -0
  45. agentra-0.3.0/docs/agentic-security.md +252 -0
  46. agentra-0.3.0/docs/auto-dataset.md +52 -0
  47. agentra-0.3.0/docs/ci.md +38 -0
  48. agentra-0.3.0/docs/dashboard.md +22 -0
  49. agentra-0.3.0/docs/eval.md +51 -0
  50. agentra-0.3.0/docs/fingerprint.md +41 -0
  51. agentra-0.3.0/docs/guard.md +292 -0
  52. agentra-0.3.0/docs/images/dashboard.svg +165 -0
  53. agentra-0.3.0/docs/images/heatmap.svg +106 -0
  54. agentra-0.3.0/docs/images/red-team-report.svg +44 -0
  55. agentra-0.3.0/docs/index.md +162 -0
  56. agentra-0.3.0/docs/mcp-security.md +174 -0
  57. agentra-0.3.0/docs/monitor.md +33 -0
  58. agentra-0.3.0/docs/quickstart.md +76 -0
  59. agentra-0.3.0/mkdocs.yml +71 -0
  60. agentra-0.3.0/pyproject.toml +55 -0
  61. agentra-0.3.0/tests/conftest.py +40 -0
  62. agentra-0.3.0/tests/test_eval.py +140 -0
  63. agentra-0.3.0/tests/test_git_tracker.py +55 -0
  64. agentra-0.3.0/tests/test_guard.py +177 -0
  65. agentra-0.3.0/tests/test_mcp_scanner.py +323 -0
  66. agentra-0.3.0/tests/test_monitor.py +90 -0
  67. agentra-0.3.0/tests/test_multilingual.py +150 -0
  68. agentra-0.3.0/tests/test_mutations.py +96 -0
  69. agentra-0.3.0/tests/test_prompt_leakage.py +115 -0
  70. agentra-0.3.0/tests/test_red_team.py +258 -0
  71. agentra-0.3.0/tests/test_swarm.py +152 -0
  72. agentra-0.3.0/tests/test_toolchain.py +127 -0
@@ -0,0 +1,26 @@
1
+ name: Deploy Docs
2
+
3
+ on:
4
+ push:
5
+ branches: [main]
6
+ workflow_dispatch:
7
+
8
+ permissions:
9
+ contents: write
10
+
11
+ jobs:
12
+ deploy:
13
+ runs-on: ubuntu-latest
14
+ steps:
15
+ - uses: actions/checkout@v4
16
+
17
+ - name: Set up Python
18
+ uses: actions/setup-python@v5
19
+ with:
20
+ python-version: "3.11"
21
+
22
+ - name: Install MkDocs
23
+ run: pip install mkdocs-material
24
+
25
+ - name: Deploy docs
26
+ run: mkdocs gh-deploy --force
@@ -0,0 +1,71 @@
1
+ name: Publish to PyPI
2
+
3
+ on:
4
+ release:
5
+ types: [published]
6
+
7
+ jobs:
8
+ test:
9
+ runs-on: ubuntu-latest
10
+ strategy:
11
+ matrix:
12
+ python-version: ["3.10", "3.11", "3.12"]
13
+
14
+ steps:
15
+ - uses: actions/checkout@v4
16
+
17
+ - name: Set up Python ${{ matrix.python-version }}
18
+ uses: actions/setup-python@v5
19
+ with:
20
+ python-version: ${{ matrix.python-version }}
21
+
22
+ - name: Install dependencies
23
+ run: |
24
+ pip install -e ".[eval]"
25
+ pip install pytest ruff
26
+
27
+ - name: Lint
28
+ run: ruff check sentrix/
29
+
30
+ - name: Run tests
31
+ run: pytest tests/ -v --tb=short
32
+
33
+ verify-version:
34
+ runs-on: ubuntu-latest
35
+ steps:
36
+ - uses: actions/checkout@v4
37
+
38
+ - name: Check tag matches pyproject.toml version
39
+ run: |
40
+ TAG="${GITHUB_REF_NAME#v}"
41
+ PKG=$(grep '^version' pyproject.toml | head -1 | sed 's/.*= *"\(.*\)"/\1/')
42
+ echo "Tag version: $TAG"
43
+ echo "Package version: $PKG"
44
+ if [ "$TAG" != "$PKG" ]; then
45
+ echo "ERROR: Git tag v$TAG does not match pyproject.toml version $PKG"
46
+ exit 1
47
+ fi
48
+
49
+ publish:
50
+ needs: [test, verify-version]
51
+ runs-on: ubuntu-latest
52
+
53
+ steps:
54
+ - uses: actions/checkout@v4
55
+
56
+ - name: Set up Python
57
+ uses: actions/setup-python@v5
58
+ with:
59
+ python-version: "3.11"
60
+
61
+ - name: Install build tools
62
+ run: pip install build twine
63
+
64
+ - name: Build package
65
+ run: python -m build
66
+
67
+ - name: Publish to PyPI
68
+ env:
69
+ TWINE_USERNAME: __token__
70
+ TWINE_PASSWORD: ${{ secrets.PYPI_API_TOKEN }}
71
+ run: twine upload dist/*
@@ -0,0 +1,40 @@
1
+ name: Tests
2
+
3
+ on:
4
+ push:
5
+ branches: [main]
6
+ pull_request:
7
+ branches: [main]
8
+
9
+ jobs:
10
+ test:
11
+ runs-on: ubuntu-latest
12
+ strategy:
13
+ matrix:
14
+ python-version: ["3.10", "3.11", "3.12"]
15
+
16
+ steps:
17
+ - uses: actions/checkout@v4
18
+
19
+ - name: Set up Python ${{ matrix.python-version }}
20
+ uses: actions/setup-python@v5
21
+ with:
22
+ python-version: ${{ matrix.python-version }}
23
+
24
+ - name: Install dependencies
25
+ run: |
26
+ pip install -e ".[eval]"
27
+ pip install pytest pytest-cov ruff
28
+
29
+ - name: Lint
30
+ run: ruff check sentrix/
31
+
32
+ - name: Run tests
33
+ run: pytest tests/ -v --tb=short --cov=sentrix --cov-report=xml
34
+
35
+ - name: Upload coverage
36
+ uses: codecov/codecov-action@v4
37
+ if: matrix.python-version == '3.11'
38
+ with:
39
+ file: ./coverage.xml
40
+ fail_ci_if_error: false
@@ -0,0 +1,14 @@
1
+ __pycache__/
2
+ *.py[cod]
3
+ *.egg-info/
4
+ dist/
5
+ build/
6
+ .venv/
7
+ venv/
8
+ .env
9
+ *.db
10
+ .pytest_cache/
11
+ .coverage
12
+ coverage.xml
13
+ site/
14
+ .DS_Store
agentra-0.3.0/PKG-INFO ADDED
@@ -0,0 +1,485 @@
1
+ Metadata-Version: 2.4
2
+ Name: agentra
3
+ Version: 0.3.0
4
+ Summary: Red-team, eval, and monitor your LLMs. Security-first, Python-native.
5
+ Project-URL: Homepage, https://github.com/pinexai/agentra
6
+ Project-URL: Documentation, https://pinexai.github.io/agentra
7
+ Project-URL: Repository, https://github.com/pinexai/agentra
8
+ Project-URL: Issues, https://github.com/pinexai/agentra/issues
9
+ License: MIT
10
+ Keywords: ai,eval,jailbreak,llm,mcp,observability,red-team,safety,security
11
+ Classifier: Development Status :: 3 - Alpha
12
+ Classifier: Intended Audience :: Developers
13
+ Classifier: License :: OSI Approved :: MIT License
14
+ Classifier: Programming Language :: Python :: 3
15
+ Classifier: Programming Language :: Python :: 3.10
16
+ Classifier: Programming Language :: Python :: 3.11
17
+ Classifier: Programming Language :: Python :: 3.12
18
+ Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
19
+ Classifier: Topic :: Security
20
+ Requires-Python: >=3.10
21
+ Provides-Extra: eval
22
+ Requires-Dist: jsonschema>=4.0; extra == 'eval'
23
+ Provides-Extra: full
24
+ Requires-Dist: fastapi>=0.100; extra == 'full'
25
+ Requires-Dist: jsonschema>=4.0; extra == 'full'
26
+ Requires-Dist: sentence-transformers>=2.0; extra == 'full'
27
+ Requires-Dist: uvicorn>=0.20; extra == 'full'
28
+ Requires-Dist: websockets>=11.0; extra == 'full'
29
+ Provides-Extra: server
30
+ Requires-Dist: fastapi>=0.100; extra == 'server'
31
+ Requires-Dist: uvicorn>=0.20; extra == 'server'
32
+ Requires-Dist: websockets>=11.0; extra == 'server'
33
+ Description-Content-Type: text/markdown
34
+
35
+ # agentra — LLM Security Testing
36
+
37
+ <p align="center">
38
+ <a href="https://pypi.org/project/agentra/"><img src="https://img.shields.io/pypi/v/agentra?color=blueviolet" alt="PyPI"></a>
39
+ <a href="https://pypi.org/project/agentra/"><img src="https://img.shields.io/pypi/pyversions/agentra?color=blueviolet" alt="Python"></a>
40
+ <a href="https://github.com/pinexai/agentra/actions/workflows/tests.yml"><img src="https://img.shields.io/github/actions/workflow/status/pinexai/agentra/tests.yml?label=tests" alt="Tests"></a>
41
+ <a href="https://github.com/pinexai/agentra/blob/main/LICENSE"><img src="https://img.shields.io/badge/license-MIT-blueviolet" alt="MIT license"></a>
42
+ <img src="https://img.shields.io/badge/zero-dependencies-brightgreen" alt="zero deps">
43
+ </p>
44
+
45
+ <p align="center">
46
+ <b>Red-team, fingerprint, and monitor your LLMs — pure Python, zero config.</b><br>
47
+ Find vulnerabilities before your users do.
48
+ </p>
49
+
50
+ <p align="center">
51
+ <a href="https://pinexai.github.io/agentra/">Documentation</a> ·
52
+ <a href="https://pinexai.github.io/agentra/quickstart/">Quick Start</a> ·
53
+ <a href="https://pinexai.github.io/agentra/guard/">Red Teaming</a> ·
54
+ <a href="https://pinexai.github.io/agentra/fingerprint/">Attack Heatmap</a> ·
55
+ <a href="https://github.com/pinexai/agentra/issues">Issues</a>
56
+ </p>
57
+
58
+ ---
59
+
60
+ ## What is agentra?
61
+
62
+ `agentra` is a Python-native LLM security suite. In one `pip install`, you get automated red teaming, vulnerability fingerprinting across models, adversarial test generation, compliance reporting, and production monitoring — with a local SQLite store and a built-in dashboard. No YAML. No Node.js.
63
+
64
+ **Here's what the attack heatmap looks like:**
65
+
66
+ <p align="center">
67
+ <img src="https://raw.githubusercontent.com/pinexai/agentra/main/docs/images/heatmap.svg" alt="agentra attack heatmap — vulnerability matrix across models and attack plugins" width="720">
68
+ <br><em>Terminal output rendered as SVG for illustration</em>
69
+ </p>
70
+
71
+ **And the web dashboard:**
72
+
73
+ <p align="center">
74
+ <img src="https://raw.githubusercontent.com/pinexai/agentra/main/docs/images/dashboard.svg" alt="agentra web dashboard — 7-tab real-time security monitoring" width="760">
75
+ <br><em>Terminal output rendered as SVG for illustration</em>
76
+ </p>
77
+
78
+ **Red team report from the CLI:**
79
+
80
+ <p align="center">
81
+ <img src="https://raw.githubusercontent.com/pinexai/agentra/main/docs/images/red-team-report.svg" alt="agentra red team report output" width="680">
82
+ <br><em>Terminal output rendered as SVG for illustration</em>
83
+ </p>
84
+
85
+ ---
86
+
87
+ ## Quick Start
88
+
89
+ ```bash
90
+ pip install agentra
91
+ ```
92
+
93
+ ```python
94
+ import agentra
95
+
96
+ agentra.init() # enable SQLite persistence + SDK cost tracking
97
+
98
+ def my_chatbot(prompt: str) -> str:
99
+ return call_llm(prompt)
100
+
101
+ # Red team your chatbot
102
+ report = agentra.red_team(my_chatbot, plugins=["jailbreak", "pii", "harmful"])
103
+ report.summary()
104
+ ```
105
+
106
+ Or from the CLI:
107
+
108
+ ```bash
109
+ agentra scan myapp:chatbot --plugins jailbreak,pii,harmful --n 20
110
+ agentra serve # open dashboard at localhost:7234
111
+ ```
112
+
113
+ ---
114
+
115
+ ## v0.3.0 — MCP Security Scanner
116
+
117
+ The **first** comprehensive security scanner for MCP servers. Zero dependencies, pure Python.
118
+
119
+ ```python
120
+ # Scan a live MCP server
121
+ report = agentra.scan_mcp("http://localhost:3000")
122
+ report.summary()
123
+ # CRITICAL: path_traversal — filesystem content leaked via tool name
124
+ # HIGH: ssrf — cloud metadata endpoint accessible
125
+
126
+ # SARIF export for GitHub Security
127
+ report.save_sarif("mcp.sarif")
128
+
129
+ # Static analysis — no server needed
130
+ from agentra.guard.mcp_static import analyze_mcp_tools
131
+ report = analyze_mcp_tools([
132
+ {"name": "read_file", "description": "Read any file"},
133
+ {"name": "send_email", "description": "Send email to any address"},
134
+ ])
135
+ report.summary() # CRITICAL: data_exfiltration chain — read_file → send_email
136
+ ```
137
+
138
+ ```bash
139
+ # CLI
140
+ agentra scan-mcp http://localhost:3000
141
+ agentra scan-mcp http://localhost:3000 --tests path_traversal,ssrf --output-sarif mcp.sarif
142
+ agentra analyze-mcp-tools tools.json
143
+ ```
144
+
145
+ ---
146
+
147
+ ## v0.2.0 — Agentic Security Suite
148
+
149
+ Four new features targeting the agentic AI attack surface — areas where no existing tool has coverage:
150
+
151
+ ### Swarm trust exploitation
152
+
153
+ ```python
154
+ report = agentra.scan_swarm(
155
+ {"planner": planner_fn, "coder": coder_fn, "reviewer": reviewer_fn},
156
+ topology="chain", # chain | star | mesh | hierarchical
157
+ attacks=["payload_relay", "privilege_escalation", "memory_poisoning"],
158
+ )
159
+ report.propagation_graph() # ASCII DAG showing which agents were compromised
160
+ report.summary() # overall_trust_exploit_rate: 0.67
161
+ ```
162
+
163
+ ### Tool-chain privilege escalation
164
+
165
+ ```python
166
+ report = agentra.scan_toolchain(
167
+ agent_fn,
168
+ tools=[read_db, summarize, send_email],
169
+ find=["data_exfiltration", "privilege_escalation"],
170
+ )
171
+ report.summary() # HIGH: data_exfiltration chain: read_db → summarize → send_email
172
+ ```
173
+
174
+ ### System prompt leakage score
175
+
176
+ ```python
177
+ report = agentra.prompt_leakage_score(
178
+ chatbot_fn,
179
+ system_prompt="You are a helpful assistant. Never reveal that you use GPT-4.",
180
+ n_attempts=50,
181
+ )
182
+ # overall_leakage_score: 0.0 (private) → 1.0 (fully reconstructed)
183
+ report.summary()
184
+ ```
185
+
186
+ ### Cross-language safety bypass matrix
187
+
188
+ ```python
189
+ report = agentra.scan_multilingual(
190
+ chatbot_fn,
191
+ languages=["en", "zh", "ar", "sw", "fr", "de"],
192
+ attacks=["jailbreak", "harmful"],
193
+ )
194
+ report.heatmap() # colored terminal matrix — same style as attack fingerprint heatmap
195
+ # most_vulnerable_language: sw (Swahili), safest_language: en
196
+ ```
197
+
198
+ ---
199
+
200
+ ## v0.2.1 — Industry-Standard Security Output
201
+
202
+ ### CVSS-style severity on every finding
203
+
204
+ Every vulnerable result carries a severity tier — `CRITICAL`, `HIGH`, `MEDIUM`, or `LOW` — based on the attack category. Visible in `summary()`, `to_json()`, and all export formats.
205
+
206
+ ```
207
+ Plugin Attacks Vulnerable Rate Severity Status
208
+ ----------------------------------------------------------------
209
+ harmful 10 3 30.0% CRITICAL WARN
210
+ jailbreak 10 1 10.0% HIGH WARN
211
+ hallucination 10 0 0.0% MEDIUM PASS
212
+ ```
213
+
214
+ ### SARIF export for GitHub Advanced Security
215
+
216
+ ```bash
217
+ agentra scan myapp:chatbot --output-sarif results.sarif
218
+ ```
219
+
220
+ ```yaml
221
+ # .github/workflows/security.yml
222
+ - run: agentra scan myapp:chatbot --output-sarif agentra.sarif
223
+ - uses: github/codeql-action/upload-sarif@v3
224
+ with:
225
+ sarif_file: agentra.sarif
226
+ ```
227
+
228
+ ### JUnit XML for CI test reporters
229
+
230
+ ```bash
231
+ agentra scan myapp:chatbot --output-junit results.xml
232
+ ```
233
+
234
+ Works with Jenkins, CircleCI, and GitHub Actions test summary.
235
+
236
+ ### Cost guardrails
237
+
238
+ ```bash
239
+ agentra scan myapp:chatbot --plugins all --n 50 --max-cost 5.00
240
+ # → aborts cleanly when total LLM spend reaches $5
241
+ ```
242
+
243
+ ---
244
+
245
+ ## Three killer features
246
+
247
+ ### 1. Auto-generate adversarial test cases
248
+
249
+ No manual test writing. sentrix reads your function's signature and docstring, calls an LLM, and generates N test cases covering jailbreaks, PII extraction, injection attacks, and normal usage.
250
+
251
+ ```python
252
+ def my_chatbot(message: str) -> str:
253
+ """Answer user questions helpfully and safely. Refuse harmful requests."""
254
+ ...
255
+
256
+ ds = agentra.auto_dataset(my_chatbot, n=50, focus="adversarial")
257
+ # → 50 test cases generated for free
258
+ print(f"Generated {len(ds)} test cases")
259
+ ```
260
+
261
+ ### 2. Attack heatmap across models
262
+
263
+ Run the full attack suite against multiple models simultaneously. Get a vulnerability fingerprint showing exactly which attack categories break which models — so you can pick the cheapest safe option.
264
+
265
+ ```python
266
+ fp = agentra.guard.fingerprint({
267
+ "gpt-4o-mini": gpt_fn,
268
+ "claude-haiku": claude_fn,
269
+ "llama-3": llama_fn,
270
+ }, plugins=["jailbreak", "pii", "harmful", "hallucination", "injection"])
271
+
272
+ fp.heatmap()
273
+ print(f"Safest model: {fp.safest_model()}")
274
+ print(f"Most vulnerable: {fp.most_vulnerable_model()}")
275
+ ```
276
+
277
+ ### 3. Git-aware CI security gates
278
+
279
+ Every scan is tagged with the git commit SHA. Block PRs if the vulnerability rate regresses vs. `main`.
280
+
281
+ ```bash
282
+ agentra scan myapp:chatbot --git-compare main --fail-on-regression
283
+ # → exits 1 if vuln rate increased by >5% vs main branch
284
+ # → writes summary to $GITHUB_STEP_SUMMARY
285
+ ```
286
+
287
+ ```yaml
288
+ # .github/workflows/security.yml
289
+ - run: agentra scan myapp:chatbot --git-compare origin/main --fail-on-regression
290
+ env:
291
+ OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }}
292
+ ```
293
+
294
+ ---
295
+
296
+ ## Attack plugins
297
+
298
+ | Plugin | What it probes |
299
+ |---|---|
300
+ | `jailbreak` | Role-play overrides, DAN variants, persona jailbreaks |
301
+ | `pii` | PII extraction, system prompt leakage, training data fishing |
302
+ | `harmful` | Dangerous information, CBRN, illegal activity requests |
303
+ | `hallucination` | False premises, leading questions, factual traps |
304
+ | `injection` | Indirect prompt injection via user-controlled data |
305
+ | `competitor` | Brand manipulation, competitor endorsement attacks |
306
+
307
+ All plugins ship 15–20 templates each. Community plugins via `agentra plugin install <name>`.
308
+
309
+ ---
310
+
311
+ ## Evaluation & monitoring
312
+
313
+ ```python
314
+ # Evaluate quality with 9 built-in scorers
315
+ ds = agentra.dataset("qa-suite")
316
+ ds.add(input="What is 2+2?", expected_output="4")
317
+
318
+ exp = agentra.experiment(
319
+ "math-eval",
320
+ dataset=ds,
321
+ fn=my_chatbot,
322
+ scorers=[agentra.scorers.exact_match, agentra.scorers.no_pii],
323
+ )
324
+ results = exp.run(pass_threshold=0.8)
325
+ results.summary()
326
+
327
+ # Compare models — Pareto frontier included
328
+ comparison = agentra.compare_models(
329
+ models={"gpt-4o-mini": gpt_fn, "claude-haiku": claude_fn},
330
+ dataset=ds,
331
+ scorers=[agentra.scorers.llm_judge(criteria="accuracy")],
332
+ )
333
+ comparison.summary() # → shows Pareto frontier + best value model
334
+
335
+ # Production tracing
336
+ with agentra.trace("user-request", input=user_msg, user_id="u123") as t:
337
+ response = my_chatbot(user_msg)
338
+ t.output = response
339
+ ```
340
+
341
+ ---
342
+
343
+ ## Compliance reports
344
+
345
+ Generate audit-ready reports mapped to OWASP LLM Top 10, NIST AI RMF, EU AI Act, and SOC2 — automatically evidence-linked to your red team scan results.
346
+
347
+ ```bash
348
+ agentra compliance --framework owasp_llm_top10 --output report.html
349
+ agentra compliance --framework eu_ai_act --output audit.html
350
+ ```
351
+
352
+ ---
353
+
354
+ ## Supply chain & RAG security
355
+
356
+ Scan your RAG document corpus for poisoned inputs, PII leakage, and system prompt tampering — zero LLM calls required, pure regex pattern matching.
357
+
358
+ ```python
359
+ from agentra.guard.rag_scanner import scan_rag
360
+
361
+ report = scan_rag(
362
+ documents=my_docs,
363
+ system_prompt=my_system_prompt,
364
+ baseline_hash="abc123...", # tamper detection
365
+ )
366
+ report.summary()
367
+ ```
368
+
369
+ ---
370
+
371
+ ## Why sentrix over promptfoo?
372
+
373
+ | | **sentrix** | promptfoo |
374
+ |---|---|---|
375
+ | Language | **Python** (pip install) | TypeScript (npm install) |
376
+ | Configuration | **Zero config** | YAML required |
377
+ | Attack heatmap across models | **✅** | ❌ |
378
+ | Auto test generation from fn signature | **✅** | ❌ |
379
+ | Git-aware regression tracking | **✅** | ❌ |
380
+ | Cost tracking per scan | **✅** | ❌ |
381
+ | Production monitoring + tracing | **✅** | ❌ |
382
+ | RAG supply chain security | **✅** | ❌ |
383
+ | Human review + annotation queue | **✅** | ❌ |
384
+ | Compliance reports (OWASP / NIST / EU AI Act) | **✅** | ❌ |
385
+ | **Multi-agent swarm exploitation** | **✅** | ❌ |
386
+ | **Tool-chain privilege escalation** | **✅** | ❌ |
387
+ | **System prompt leakage scoring** | **✅** | ❌ |
388
+ | **Cross-language safety bypass matrix** | **✅** | ❌ |
389
+ | **SARIF export (GitHub Advanced Security)** | **✅** | ❌ |
390
+ | **CVSS-style severity tiers** | **✅** | ❌ |
391
+ | **Cost guardrails (max_cost_usd)** | **✅** | ❌ |
392
+ | Community plugin ecosystem | **✅** | Limited |
393
+ | Offline / privacy mode (Ollama) | **✅** | ❌ |
394
+ | Local SQLite — no external backend | **✅** | ❌ |
395
+ | Built-in web dashboard | **✅** | Limited |
396
+
397
+ ---
398
+
399
+ ## Install options
400
+
401
+ ```bash
402
+ pip install agentra # core — zero required dependencies
403
+ pip install agentra[server] # + FastAPI dashboard (agentra serve)
404
+ pip install agentra[eval] # + JSON schema validation scorer
405
+ pip install agentra[full] # everything
406
+ ```
407
+
408
+ **LLM providers** — install only what you use:
409
+
410
+ ```bash
411
+ pip install openai # for OpenAI models
412
+ pip install anthropic # for Claude models
413
+ pip install google-generativeai # for Gemini models
414
+ # offline: ollama pull llama3 # no API key needed
415
+ ```
416
+
417
+ ---
418
+
419
+ ## Full CLI reference
420
+
421
+ ```bash
422
+ # Security scanning
423
+ agentra scan myapp:chatbot # red team
424
+ agentra scan myapp:chatbot --plugins all --n 50 # full scan
425
+ agentra scan myapp:chatbot --git-compare main # + regression gate
426
+ agentra scan myapp:chatbot --max-cost 5.00 # abort if cost > $5
427
+ agentra scan myapp:chatbot --output-sarif results.sarif # GitHub Advanced Security
428
+ agentra scan myapp:chatbot --output-junit results.xml # CI test reporters
429
+ agentra fingerprint myapp:gpt_fn myapp:claude_fn # attack heatmap
430
+
431
+ # Test generation
432
+ agentra auto-dataset myapp:chatbot --n 50 --focus adversarial
433
+
434
+ # Evaluation
435
+ sentrix eval run experiment.py --fail-below 0.8
436
+
437
+ # Security for agents & RAG
438
+ agentra scan-agent myapp:my_agent
439
+ agentra scan-rag --docs ./data/ --system-prompt prompt.txt
440
+
441
+ # v0.2.0 — Agentic security
442
+ agentra scan-swarm myapp:agents --topology chain --attacks payload_relay,privilege_escalation --n 5
443
+ agentra scan-toolchain myapp:agent --tools myapp:read_db,myapp:send_email --find data_exfiltration
444
+ agentra scan-prompt-leakage myapp:chatbot --system-prompt prompt.txt --n 50
445
+ agentra scan-multilingual myapp:chatbot --languages en,zh,ar,sw --attacks jailbreak,harmful --n 5
446
+
447
+ # Compliance
448
+ agentra compliance --framework owasp_llm_top10 --output report.html
449
+
450
+ # Monitoring
451
+ agentra monitor watch myapp:chatbot --interval 60 --webhook $SLACK_URL
452
+ agentra monitor drift --baseline my-eval --window 24
453
+
454
+ # Plugin ecosystem
455
+ agentra plugin list
456
+ agentra plugin install advanced-jailbreak
457
+
458
+ # Dashboard & info
459
+ agentra serve # open at :7234
460
+ agentra history # past scans
461
+ agentra costs --days 7 # cost breakdown
462
+ ```
463
+
464
+ ---
465
+
466
+ ## Learn more
467
+
468
+ - [Quick Start](https://pinexai.github.io/agentra/quickstart/)
469
+ - [Red Teaming Guide](https://pinexai.github.io/agentra/guard/)
470
+ - [Attack Heatmap](https://pinexai.github.io/agentra/fingerprint/)
471
+ - [Auto Test Generation](https://pinexai.github.io/agentra/auto-dataset/)
472
+ - [Evaluation Framework](https://pinexai.github.io/agentra/eval/)
473
+ - [Production Monitoring](https://pinexai.github.io/agentra/monitor/)
474
+ - [CI/CD Integration](https://pinexai.github.io/agentra/ci/)
475
+ - [Dashboard Guide](https://pinexai.github.io/agentra/dashboard/)
476
+
477
+ ---
478
+
479
+ ## Contributing
480
+
481
+ Issues and PRs welcome. See [github.com/pinexai/agentra](https://github.com/pinexai/agentra).
482
+
483
+ ---
484
+
485
+ <p align="center">MIT license · Built by <a href="https://github.com/pinexai">pinexai</a></p>