nat-engine 1__py3-none-any.whl

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 (299) hide show
  1. mannf/__init__.py +33 -0
  2. mannf/__main__.py +10 -0
  3. mannf/_version.py +8 -0
  4. mannf/agents/__init__.py +7 -0
  5. mannf/agents/analyzer_agent.py +9 -0
  6. mannf/agents/base.py +9 -0
  7. mannf/agents/bdi_agent.py +9 -0
  8. mannf/agents/belief_state.py +9 -0
  9. mannf/agents/coordinator_agent.py +9 -0
  10. mannf/agents/executor_agent.py +9 -0
  11. mannf/agents/monitor_agent.py +9 -0
  12. mannf/agents/oracle_agent.py +9 -0
  13. mannf/agents/planner_agent.py +9 -0
  14. mannf/agents/test_agent.py +9 -0
  15. mannf/anomaly/__init__.py +7 -0
  16. mannf/anomaly/enhanced_detector.py +9 -0
  17. mannf/cli.py +9 -0
  18. mannf/core/__init__.py +26 -0
  19. mannf/core/agents/__init__.py +52 -0
  20. mannf/core/agents/accessibility_scanner_agent.py +245 -0
  21. mannf/core/agents/analyzer_agent.py +224 -0
  22. mannf/core/agents/autonomous_loop_agent.py +1086 -0
  23. mannf/core/agents/autonomous_loop_models.py +62 -0
  24. mannf/core/agents/autonomous_run_differ.py +427 -0
  25. mannf/core/agents/base.py +128 -0
  26. mannf/core/agents/bdi_agent.py +330 -0
  27. mannf/core/agents/belief_state.py +202 -0
  28. mannf/core/agents/browser_coordinator_agent.py +224 -0
  29. mannf/core/agents/browser_executor_agent.py +410 -0
  30. mannf/core/agents/coordinator_agent.py +262 -0
  31. mannf/core/agents/executor_agent.py +222 -0
  32. mannf/core/agents/monitor_agent.py +188 -0
  33. mannf/core/agents/oracle_agent.py +150 -0
  34. mannf/core/agents/performance_testing_agent.py +279 -0
  35. mannf/core/agents/planner_agent.py +128 -0
  36. mannf/core/agents/test_agent.py +249 -0
  37. mannf/core/agents/visual_regression_agent.py +311 -0
  38. mannf/core/agents/web_crawler_agent.py +510 -0
  39. mannf/core/agents/worker_pool.py +366 -0
  40. mannf/core/anomaly/__init__.py +14 -0
  41. mannf/core/anomaly/enhanced_detector.py +541 -0
  42. mannf/core/browser/__init__.py +63 -0
  43. mannf/core/browser/accessibility_scanner.py +424 -0
  44. mannf/core/browser/discovery_model.py +178 -0
  45. mannf/core/browser/dom_snapshot.py +349 -0
  46. mannf/core/browser/ingestor_bridge.py +371 -0
  47. mannf/core/browser/performance_metrics.py +217 -0
  48. mannf/core/browser/reflection_analyzer.py +442 -0
  49. mannf/core/browser/scenario_generator.py +1100 -0
  50. mannf/core/browser/security_scenario_generator.py +695 -0
  51. mannf/core/browser/visual_comparer.py +159 -0
  52. mannf/core/diagnostics/__init__.py +28 -0
  53. mannf/core/diagnostics/failure_clusterer.py +211 -0
  54. mannf/core/diagnostics/flake_detector.py +233 -0
  55. mannf/core/diagnostics/root_cause_analyzer.py +273 -0
  56. mannf/core/distributed/__init__.py +16 -0
  57. mannf/core/distributed/endpoint.py +139 -0
  58. mannf/core/distributed/system_under_test.py +207 -0
  59. mannf/core/functional_orchestrator.py +428 -0
  60. mannf/core/messaging/__init__.py +11 -0
  61. mannf/core/messaging/bus.py +113 -0
  62. mannf/core/messaging/messages.py +89 -0
  63. mannf/core/nat_orchestrator.py +342 -0
  64. mannf/core/neural/__init__.py +183 -0
  65. mannf/core/orchestrator.py +272 -0
  66. mannf/core/prioritization/__init__.py +17 -0
  67. mannf/core/prioritization/adaptive_controller.py +509 -0
  68. mannf/core/prioritization/belief_prioritizer.py +231 -0
  69. mannf/core/prioritization/risk_scorer.py +430 -0
  70. mannf/core/reporting/__init__.py +12 -0
  71. mannf/core/reporting/unified_report.py +664 -0
  72. mannf/core/testing/__init__.py +17 -0
  73. mannf/core/testing/adaptive_controller.py +149 -0
  74. mannf/core/testing/models.py +179 -0
  75. mannf/core/validation/__init__.py +10 -0
  76. mannf/core/validation/self_validation_runner.py +180 -0
  77. mannf/dashboard/__init__.py +7 -0
  78. mannf/dashboard/app.py +9 -0
  79. mannf/dashboard/models.py +9 -0
  80. mannf/dashboard/static/index.html +2538 -0
  81. mannf/dashboard/telemetry.py +9 -0
  82. mannf/distributed/__init__.py +7 -0
  83. mannf/distributed/endpoint.py +9 -0
  84. mannf/distributed/system_under_test.py +9 -0
  85. mannf/healing/__init__.py +7 -0
  86. mannf/healing/graphql_schema_diff.py +9 -0
  87. mannf/healing/healer.py +9 -0
  88. mannf/healing/models.py +9 -0
  89. mannf/healing/schema_diff.py +9 -0
  90. mannf/integrations/__init__.py +7 -0
  91. mannf/integrations/auth.py +9 -0
  92. mannf/integrations/graphql_parser.py +9 -0
  93. mannf/integrations/graphql_sut.py +9 -0
  94. mannf/integrations/http_sut.py +9 -0
  95. mannf/integrations/openapi_parser.py +9 -0
  96. mannf/integrations/postman_parser.py +9 -0
  97. mannf/llm/__init__.py +7 -0
  98. mannf/llm/anthropic_provider.py +9 -0
  99. mannf/llm/base.py +9 -0
  100. mannf/llm/config.py +9 -0
  101. mannf/llm/factory.py +9 -0
  102. mannf/llm/openai_provider.py +9 -0
  103. mannf/llm/prompts.py +9 -0
  104. mannf/messaging/__init__.py +7 -0
  105. mannf/messaging/bus.py +9 -0
  106. mannf/messaging/messages.py +9 -0
  107. mannf/nat_orchestrator.py +9 -0
  108. mannf/neural/__init__.py +7 -0
  109. mannf/orchestrator.py +9 -0
  110. mannf/prioritization/__init__.py +7 -0
  111. mannf/prioritization/adaptive_controller.py +9 -0
  112. mannf/prioritization/belief_prioritizer.py +9 -0
  113. mannf/prioritization/risk_scorer.py +9 -0
  114. mannf/product/__init__.py +29 -0
  115. mannf/product/admin/__init__.py +3 -0
  116. mannf/product/admin/routes.py +514 -0
  117. mannf/product/auth/__init__.py +5 -0
  118. mannf/product/auth/saml.py +212 -0
  119. mannf/product/billing/__init__.py +5 -0
  120. mannf/product/billing/audit.py +160 -0
  121. mannf/product/billing/feature_gates.py +180 -0
  122. mannf/product/billing/metering.py +179 -0
  123. mannf/product/billing/notifications.py +181 -0
  124. mannf/product/billing/plans.py +133 -0
  125. mannf/product/billing/rate_limits.py +35 -0
  126. mannf/product/billing/stripe_billing.py +906 -0
  127. mannf/product/billing/tenant_auth.py +233 -0
  128. mannf/product/billing/tenant_manager.py +873 -0
  129. mannf/product/cli.py +3900 -0
  130. mannf/product/cli_admin.py +408 -0
  131. mannf/product/dashboard/__init__.py +61 -0
  132. mannf/product/dashboard/app.py +3567 -0
  133. mannf/product/dashboard/models.py +460 -0
  134. mannf/product/dashboard/static/index.html +6347 -0
  135. mannf/product/dashboard/static/manifest.json +25 -0
  136. mannf/product/dashboard/static/pwa-icon-192.png +0 -0
  137. mannf/product/dashboard/static/pwa-icon-512.png +0 -0
  138. mannf/product/dashboard/static/sw.js +64 -0
  139. mannf/product/dashboard/telemetry.py +547 -0
  140. mannf/product/database.py +145 -0
  141. mannf/product/demo.py +844 -0
  142. mannf/product/doctor.py +509 -0
  143. mannf/product/exporters/__init__.py +65 -0
  144. mannf/product/exporters/azuredevops_exporter.py +257 -0
  145. mannf/product/exporters/base.py +307 -0
  146. mannf/product/exporters/bugzilla_exporter.py +200 -0
  147. mannf/product/exporters/dedup.py +275 -0
  148. mannf/product/exporters/finding_adapter.py +216 -0
  149. mannf/product/exporters/github_exporter.py +197 -0
  150. mannf/product/exporters/gitlab_exporter.py +215 -0
  151. mannf/product/exporters/jira_exporter.py +180 -0
  152. mannf/product/exporters/linear_exporter.py +195 -0
  153. mannf/product/exporters/loader.py +233 -0
  154. mannf/product/exporters/pagerduty_exporter.py +363 -0
  155. mannf/product/exporters/sentry_exporter.py +322 -0
  156. mannf/product/exporters/servicenow_exporter.py +240 -0
  157. mannf/product/exporters/shortcut_exporter.py +231 -0
  158. mannf/product/exporters/webhook_exporter.py +383 -0
  159. mannf/product/formatters/__init__.py +18 -0
  160. mannf/product/formatters/allure_formatter.py +161 -0
  161. mannf/product/formatters/ctrf_formatter.py +149 -0
  162. mannf/product/healing/__init__.py +30 -0
  163. mannf/product/healing/graphql_schema_diff.py +152 -0
  164. mannf/product/healing/healer.py +141 -0
  165. mannf/product/healing/models.py +175 -0
  166. mannf/product/healing/schema_diff.py +251 -0
  167. mannf/product/ingestors/__init__.py +77 -0
  168. mannf/product/ingestors/base.py +256 -0
  169. mannf/product/ingestors/bgstm_ingestor.py +764 -0
  170. mannf/product/ingestors/curl_ingestor.py +1019 -0
  171. mannf/product/ingestors/cypress_ingestor.py +487 -0
  172. mannf/product/ingestors/gherkin_ingestor.py +967 -0
  173. mannf/product/ingestors/graphql_ingestor.py +845 -0
  174. mannf/product/ingestors/grpc_ingestor.py +591 -0
  175. mannf/product/ingestors/har_ingestor.py +976 -0
  176. mannf/product/ingestors/loader.py +284 -0
  177. mannf/product/ingestors/models.py +146 -0
  178. mannf/product/ingestors/openapi_ingestor.py +606 -0
  179. mannf/product/ingestors/playwright_ingestor.py +449 -0
  180. mannf/product/ingestors/postman_ingestor.py +631 -0
  181. mannf/product/ingestors/traffic_ingestor.py +679 -0
  182. mannf/product/ingestors/websocket_ingestor.py +526 -0
  183. mannf/product/integrations/__init__.py +21 -0
  184. mannf/product/integrations/auth.py +190 -0
  185. mannf/product/integrations/graphql_parser.py +436 -0
  186. mannf/product/integrations/graphql_sut.py +247 -0
  187. mannf/product/integrations/grpc_sut.py +469 -0
  188. mannf/product/integrations/http_sut.py +237 -0
  189. mannf/product/integrations/kafka_adapter.py +342 -0
  190. mannf/product/integrations/openapi_parser.py +513 -0
  191. mannf/product/integrations/postman_parser.py +467 -0
  192. mannf/product/integrations/webhook_receiver.py +344 -0
  193. mannf/product/integrations/websocket_sut.py +434 -0
  194. mannf/product/llm/__init__.py +25 -0
  195. mannf/product/llm/anthropic_provider.py +94 -0
  196. mannf/product/llm/base.py +267 -0
  197. mannf/product/llm/config.py +48 -0
  198. mannf/product/llm/factory.py +42 -0
  199. mannf/product/llm/openai_provider.py +93 -0
  200. mannf/product/llm/prompts.py +403 -0
  201. mannf/product/llm/root_cause_service.py +311 -0
  202. mannf/product/llm/test_plan_models.py +78 -0
  203. mannf/product/metrics.py +149 -0
  204. mannf/product/middleware/__init__.py +3 -0
  205. mannf/product/middleware/audit_middleware.py +112 -0
  206. mannf/product/middleware/tenant_isolation.py +114 -0
  207. mannf/product/models.py +347 -0
  208. mannf/product/notifications/__init__.py +24 -0
  209. mannf/product/notifications/dispatcher.py +411 -0
  210. mannf/product/onboarding.py +190 -0
  211. mannf/product/orchestration/__init__.py +39 -0
  212. mannf/product/orchestration/ingest_scan_orchestrator.py +339 -0
  213. mannf/product/orchestration/pipeline.py +401 -0
  214. mannf/product/orchestrator.py +987 -0
  215. mannf/product/orchestrator_models.py +269 -0
  216. mannf/product/regression/__init__.py +36 -0
  217. mannf/product/regression/differ.py +172 -0
  218. mannf/product/regression/masking.py +100 -0
  219. mannf/product/regression/models.py +232 -0
  220. mannf/product/regression/recorder.py +124 -0
  221. mannf/product/regression/replayer.py +168 -0
  222. mannf/product/reports/__init__.py +10 -0
  223. mannf/product/reports/pdf.py +132 -0
  224. mannf/product/scheduling/__init__.py +57 -0
  225. mannf/product/scheduling/cron_utils.py +251 -0
  226. mannf/product/scheduling/engine.py +473 -0
  227. mannf/product/scheduling/models.py +86 -0
  228. mannf/product/scheduling/queue.py +894 -0
  229. mannf/product/scheduling/store.py +235 -0
  230. mannf/product/security/__init__.py +21 -0
  231. mannf/product/security/belief_guided.py +143 -0
  232. mannf/product/security/checks/__init__.py +55 -0
  233. mannf/product/security/checks/base.py +69 -0
  234. mannf/product/security/checks/bfla.py +77 -0
  235. mannf/product/security/checks/bola.py +77 -0
  236. mannf/product/security/checks/bopla.py +80 -0
  237. mannf/product/security/checks/broken_auth.py +86 -0
  238. mannf/product/security/checks/graphql_security.py +299 -0
  239. mannf/product/security/checks/inventory.py +70 -0
  240. mannf/product/security/checks/misconfig.py +158 -0
  241. mannf/product/security/checks/resource_consumption.py +70 -0
  242. mannf/product/security/checks/sensitive_flows.py +80 -0
  243. mannf/product/security/checks/ssrf.py +101 -0
  244. mannf/product/security/checks/unsafe_consumption.py +120 -0
  245. mannf/product/security/models.py +92 -0
  246. mannf/product/security/plugin_loader.py +182 -0
  247. mannf/product/security/reporter.py +92 -0
  248. mannf/product/security/scanner.py +183 -0
  249. mannf/product/server.py +6220 -0
  250. mannf/product/setup_wizard.py +873 -0
  251. mannf/product/status.py +404 -0
  252. mannf/product/storage/__init__.py +10 -0
  253. mannf/product/storage/artifact_store.py +343 -0
  254. mannf/product/telemetry.py +300 -0
  255. mannf/product/uninstall.py +169 -0
  256. mannf/product/upgrade.py +139 -0
  257. mannf/product/weights/__init__.py +13 -0
  258. mannf/product/weights/blob_store.py +299 -0
  259. mannf/product/weights/factory.py +42 -0
  260. mannf/product/weights/registry.py +159 -0
  261. mannf/product/weights/store.py +210 -0
  262. mannf/regression/__init__.py +7 -0
  263. mannf/regression/differ.py +9 -0
  264. mannf/regression/masking.py +9 -0
  265. mannf/regression/models.py +9 -0
  266. mannf/regression/recorder.py +9 -0
  267. mannf/regression/replayer.py +9 -0
  268. mannf/security/__init__.py +7 -0
  269. mannf/security/belief_guided.py +9 -0
  270. mannf/security/checks/__init__.py +7 -0
  271. mannf/security/checks/base.py +9 -0
  272. mannf/security/checks/bfla.py +9 -0
  273. mannf/security/checks/bola.py +9 -0
  274. mannf/security/checks/bopla.py +9 -0
  275. mannf/security/checks/broken_auth.py +9 -0
  276. mannf/security/checks/graphql_security.py +9 -0
  277. mannf/security/checks/inventory.py +9 -0
  278. mannf/security/checks/misconfig.py +9 -0
  279. mannf/security/checks/resource_consumption.py +9 -0
  280. mannf/security/checks/sensitive_flows.py +9 -0
  281. mannf/security/checks/ssrf.py +9 -0
  282. mannf/security/checks/unsafe_consumption.py +9 -0
  283. mannf/security/models.py +9 -0
  284. mannf/security/reporter.py +9 -0
  285. mannf/security/scanner.py +9 -0
  286. mannf/server.py +9 -0
  287. mannf/testing/__init__.py +7 -0
  288. mannf/testing/adaptive_controller.py +9 -0
  289. mannf/testing/models.py +9 -0
  290. mannf/weights/__init__.py +7 -0
  291. mannf/weights/registry.py +9 -0
  292. mannf/weights/store.py +9 -0
  293. nat_engine-1.dist-info/METADATA +555 -0
  294. nat_engine-1.dist-info/RECORD +299 -0
  295. nat_engine-1.dist-info/WHEEL +5 -0
  296. nat_engine-1.dist-info/entry_points.txt +4 -0
  297. nat_engine-1.dist-info/licenses/LICENSE +651 -0
  298. nat_engine-1.dist-info/licenses/NOTICE +178 -0
  299. nat_engine-1.dist-info/top_level.txt +1 -0
@@ -0,0 +1,7 @@
1
+ # Copyright (C) 2026 Brad Guider
2
+ # This file is part of NAT (Neural Agent Testing Framework).
3
+ # Licensed under the AGPL-3.0. See LICENSE for details.
4
+ # Commercial licensing available — see COMMERCIAL_LICENSE.md.
5
+
6
+ # Backward-compatible shim — source of truth has moved to mannf.product.weights
7
+ from mannf.product.weights import * # noqa: F401, F403
@@ -0,0 +1,9 @@
1
+ # Copyright (C) 2026 Brad Guider
2
+ # This file is part of NAT (Neural Agent Testing Framework).
3
+ # Licensed under the AGPL-3.0. See LICENSE for details.
4
+ # Commercial licensing available — see COMMERCIAL_LICENSE.md.
5
+
6
+ # Backward-compatible shim — source of truth has moved to mannf.product.weights.registry
7
+ import sys
8
+ import mannf.product.weights.registry as _real
9
+ sys.modules[__name__] = _real
mannf/weights/store.py ADDED
@@ -0,0 +1,9 @@
1
+ # Copyright (C) 2026 Brad Guider
2
+ # This file is part of NAT (Neural Agent Testing Framework).
3
+ # Licensed under the AGPL-3.0. See LICENSE for details.
4
+ # Commercial licensing available — see COMMERCIAL_LICENSE.md.
5
+
6
+ # Backward-compatible shim — source of truth has moved to mannf.product.weights.store
7
+ import sys
8
+ import mannf.product.weights.store as _real
9
+ sys.modules[__name__] = _real
@@ -0,0 +1,555 @@
1
+ Metadata-Version: 2.4
2
+ Name: nat-engine
3
+ Version: 1
4
+ Summary: NeuroAgentTest (NAT) — AI-powered API testing with multi-agent neural networks, OWASP security scanning, and adaptive test allocation
5
+ Author-email: NAT Contributors <licensing@nat-testing.io>
6
+ License: AGPL-3.0-or-later
7
+ Project-URL: Homepage, https://github.com/bg-playground/MultiAgent-Neural-Network-Framework
8
+ Project-URL: Documentation, https://github.com/bg-playground/MultiAgent-Neural-Network-Framework/tree/main/docs
9
+ Project-URL: Repository, https://github.com/bg-playground/MultiAgent-Neural-Network-Framework
10
+ Project-URL: Issues, https://github.com/bg-playground/MultiAgent-Neural-Network-Framework/issues
11
+ Project-URL: Changelog, https://github.com/bg-playground/MultiAgent-Neural-Network-Framework/blob/main/CHANGELOG.md
12
+ Keywords: api-testing,security-scanning,owasp,neural-network,multi-agent,bdi,testing,quality-assurance,openapi,graphql
13
+ Classifier: Development Status :: 5 - Production/Stable
14
+ Classifier: Intended Audience :: Developers
15
+ Classifier: License :: OSI Approved :: GNU Affero General Public License v3 or later (AGPLv3+)
16
+ Classifier: Operating System :: OS Independent
17
+ Classifier: Programming Language :: Python :: 3
18
+ Classifier: Programming Language :: Python :: 3.10
19
+ Classifier: Programming Language :: Python :: 3.11
20
+ Classifier: Programming Language :: Python :: 3.12
21
+ Classifier: Programming Language :: Python :: 3.13
22
+ Classifier: Topic :: Software Development :: Testing
23
+ Classifier: Topic :: Software Development :: Quality Assurance
24
+ Classifier: Topic :: Security
25
+ Classifier: Topic :: Internet :: WWW/HTTP
26
+ Classifier: Typing :: Typed
27
+ Requires-Python: >=3.10
28
+ Description-Content-Type: text/markdown
29
+ License-File: LICENSE
30
+ License-File: NOTICE
31
+ Requires-Dist: numpy>=1.24
32
+ Requires-Dist: httpx>=0.27
33
+ Requires-Dist: pyyaml>=6.0
34
+ Requires-Dist: fastapi>=0.115
35
+ Requires-Dist: uvicorn[standard]>=0.34
36
+ Requires-Dist: python-multipart>=0.0.18
37
+ Requires-Dist: opentelemetry-api>=1.20
38
+ Requires-Dist: azure-monitor-opentelemetry>=1.6
39
+ Requires-Dist: sqlalchemy[asyncio]>=2.0
40
+ Requires-Dist: asyncpg>=0.29
41
+ Requires-Dist: alembic>=1.13
42
+ Requires-Dist: defusedxml>=0.7
43
+ Provides-Extra: dev
44
+ Requires-Dist: pytest>=7.0; extra == "dev"
45
+ Requires-Dist: pytest-asyncio>=0.21; extra == "dev"
46
+ Requires-Dist: pytest-playwright>=0.4.0; extra == "dev"
47
+ Requires-Dist: pytest-timeout>=2.1; extra == "dev"
48
+ Requires-Dist: respx>=0.22; extra == "dev"
49
+ Requires-Dist: httpx>=0.27; extra == "dev"
50
+ Requires-Dist: stripe>=8.0; extra == "dev"
51
+ Requires-Dist: Pillow>=11.0; extra == "dev"
52
+ Requires-Dist: strawberry-graphql[fastapi]>=0.220; extra == "dev"
53
+ Requires-Dist: PyJWT>=2.8; extra == "dev"
54
+ Requires-Dist: slowapi>=0.1.9; extra == "dev"
55
+ Requires-Dist: jinja2>=3.1; extra == "dev"
56
+ Provides-Extra: billing
57
+ Requires-Dist: stripe>=8.0; extra == "billing"
58
+ Provides-Extra: azure-storage
59
+ Requires-Dist: azure-storage-blob>=12.19; extra == "azure-storage"
60
+ Provides-Extra: observability
61
+ Requires-Dist: psutil>=5.9; extra == "observability"
62
+ Provides-Extra: browser
63
+ Requires-Dist: playwright>=1.40.0; extra == "browser"
64
+ Requires-Dist: Pillow>=11.0; extra == "browser"
65
+ Provides-Extra: grpc
66
+ Requires-Dist: grpcio-tools>=1.60; extra == "grpc"
67
+ Dynamic: license-file
68
+
69
+ # NeuroAgentTest (NAT)
70
+
71
+ > **AI-powered API testing that learns, adapts, and finds the vulnerabilities your static tools miss.**
72
+
73
+ [![PyPI](https://img.shields.io/pypi/v/nat-engine)](https://pypi.org/project/nat-engine/)
74
+ [![Python](https://img.shields.io/pypi/pyversions/nat-engine)](https://pypi.org/project/nat-engine/)
75
+ [![CI](https://github.com/bg-playground/MultiAgent-Neural-Network-Framework/actions/workflows/e2e-regression.yml/badge.svg)](https://github.com/bg-playground/MultiAgent-Neural-Network-Framework/actions/workflows/e2e-regression.yml)
76
+ [![License: AGPL-3.0](https://img.shields.io/badge/License-AGPL--3.0-blue.svg)](https://github.com/bg-playground/MultiAgent-Neural-Network-Framework/blob/main/LICENSE)
77
+ [![Docker](https://img.shields.io/badge/Docker-ghcr.io-2496ED?logo=docker)](https://github.com/bg-playground/MultiAgent-Neural-Network-Framework/pkgs/container/nat-engine)
78
+
79
+ NAT is an open-source, **multi-agent neural network framework** for automated API testing and security scanning. Powered by BDI (Belief-Desire-Intention) agents and the Extended Contract Net Protocol (ECNP), NAT continuously learns from test results to focus coverage where risk is highest — so your team ships faster with fewer surprises.
80
+
81
+ ---
82
+
83
+ ## 🎯 Demo Mode
84
+
85
+ See NAT in action with a single command:
86
+
87
+ ```bash
88
+ nat demo
89
+ # or with Docker:
90
+ docker run -p 8080:8080 ghcr.io/bg-playground/nat-engine:demo
91
+ ```
92
+
93
+ The dashboard opens automatically with live agent activity, risk heatmaps, security findings, and more. Works offline — perfect for sales demos and conferences.
94
+
95
+ 👉 [Full demo guide](docs/guides/demo-mode.md)
96
+
97
+ ---
98
+
99
+ ## 📸 Dashboard Preview
100
+
101
+ NAT's web dashboard gives you full visibility into scan results, agent activity, and security findings.
102
+
103
+ ### Risk Overview & Anomaly Detection
104
+ ![Dashboard Overview](docs/assets/dashboard-overview-top.png)
105
+ > The Overview tab shows total scans, endpoints discovered, pass/fail rates, health score, and a real-time anomaly feed — all at a glance.
106
+
107
+ ### Multi-Agent Activity
108
+ ![Agent Activity](docs/assets/dashboard-agents-dark.png)
109
+ > Watch BDI agents (Planner, Executor, Analyzer, Coordinator) reason about uncertainty and update their beliefs as they learn from each test result.
110
+
111
+ ### OWASP Security Findings
112
+ ![Security Findings](docs/assets/dashboard-security.png)
113
+ > Automated OWASP API Security Top 10 checks with severity breakdown, confidence scores, and actionable remediation guidance.
114
+
115
+ ### Security Finding Detail
116
+ ![Security Detail](docs/assets/dashboard-security-detail.png)
117
+ > Drill into any finding to see evidence, CWE mapping, and specific remediation steps.
118
+
119
+ ---
120
+
121
+ ## 30-Second Quickstart
122
+
123
+ ```bash
124
+ # 1. Install
125
+ pip install nat-engine
126
+
127
+ # 2. Scan an API
128
+ nat scan \
129
+ --spec examples/petstore-openapi.yaml \
130
+ --base-url https://petstore3.swagger.io/api/v3
131
+
132
+ # 3. Security audit
133
+ nat security-scan \
134
+ --spec examples/petstore-openapi.yaml \
135
+ --base-url https://petstore3.swagger.io/api/v3
136
+ ```
137
+
138
+ That's it — NAT parses your OpenAPI spec, distributes test tasks across its agent network, scores risk, and reports findings. Full docs at [`docs/`](docs/README.md).
139
+
140
+ ---
141
+
142
+ ## Feature Highlights
143
+
144
+ | Feature | Description |
145
+ |---|---|
146
+ | 🤖 **BDI Multi-Agent Engine** | PlannerAgent, ExecutorAgent, AnalyzerAgent, and CoordinatorAgent collaborate via ECNP to maximize coverage |
147
+ | 📐 **REST + GraphQL + gRPC Testing** | OpenAPI/Swagger, GraphQL introspection, and `.proto`-based gRPC scanning (unary, streaming, bidi) — no "coming soon" |
148
+ | 🔒 **OWASP API Top 10** | 10 automated security checks (BOLA, Broken Auth, Mass Assignment, SSRF, and more) + 5 GraphQL-specific checks |
149
+ | 🧠 **Belief-Driven Prioritization** | Neural networks predict which endpoints are highest risk and allocate test budget accordingly |
150
+ | 📊 **Risk Scoring + Anomaly Detection** | Continuous scoring with latency spike, status-shift, and error-rate anomaly alerts |
151
+ | 🎯 **Confidence Calibration** | Per-finding confidence scores with calibration tuning and statistical confidence intervals |
152
+ | 🔑 **Flexible Auth** | No auth, API key, Bearer token, OAuth 2.0 (client credentials & password grant), SSO (OIDC/SAML) |
153
+ | 🏢 **RBAC & Multi-Tenant** | Role-based access control (admin/operator/viewer), SSO, tenant isolation, and audit logging |
154
+ | 👷 **Worker Pools** | Parallel distributed test execution via `nat worker launch` — scale across multiple agents |
155
+ | 📤 **11 Exporters** | Push findings to Jira, Linear, GitHub Issues, GitLab, Azure DevOps, Shortcut, ServiceNow, PagerDuty, Webhook, Sentry, and Bugzilla |
156
+ | 🕐 **Scheduled Scans** | Cron-based recurring scan schedules — backend implemented, API surface in Phase 9.4 |
157
+ | 🌐 **Functional Testing** | Browser-based E2E test execution with DOM snapshots, screenshots, and interaction traces via Playwright |
158
+ | 🖼️ **Visual Regression** | Pixel-diff analysis against stored baselines — catch unexpected UI changes automatically |
159
+ | ♿ **Accessibility Scanning** | WCAG 2.1 compliance checks integrated into every browser-based scan |
160
+ | ⚡ **Performance Testing** | Core Web Vitals measurement: LCP, FCP, TTI, CLS, TBT — every scan, every page |
161
+ | 🐳 **Docker-Ready** | One-command server deployment; shared across the team |
162
+ | ⚙️ **CI/CD Integration** | Native GitHub Actions support, Allure/CTRF export, PR annotations, and quality gates |
163
+ | 🧙 **Setup Wizard** | `nat setup` interactive onboarding wizard and `nat doctor` pre-flight environment validation |
164
+ | 🎬 **Demo Mode** | `nat demo` and `scripts/demo_orangehrm.py` for a live OrangeHRM E2E demo — no setup required |
165
+ | 📈 **Web Dashboard** | Live risk heatmaps, belief visualization, anomaly timeline, and go-live status |
166
+ | 🖥️ **REST API Server** | FastAPI server exposes all NAT capabilities as HTTP endpoints with RBAC and audit trail |
167
+
168
+ ---
169
+
170
+ ## Comparison vs. Competitors
171
+
172
+ | Capability | NAT | Postman | SoapUI | Burp Suite |
173
+ |---|---|---|---|---|
174
+ | OpenAPI spec scanning | ✅ | ✅ | ✅ | ⚠️ limited |
175
+ | GraphQL support | ✅ | ✅ | ❌ | ⚠️ limited |
176
+ | gRPC support | ✅ | ❌ | ❌ | ❌ |
177
+ | OWASP API Top 10 | ✅ | ❌ | ⚠️ | ✅ |
178
+ | Adaptive AI prioritization | ✅ | ❌ | ❌ | ❌ |
179
+ | Risk scoring + anomaly detection | ✅ | ❌ | ❌ | ❌ |
180
+ | Confidence calibration | ✅ | ❌ | ❌ | ❌ |
181
+ | Browser functional testing | ✅ | ❌ | ❌ | ❌ |
182
+ | Visual regression testing | ✅ | ❌ | ❌ | ❌ |
183
+ | Accessibility scanning (WCAG) | ✅ | ❌ | ❌ | ❌ |
184
+ | Performance testing (Web Vitals) | ✅ | ❌ | ❌ | ❌ |
185
+ | Worker pools (parallel execution) | ✅ | ❌ | ❌ | ❌ |
186
+ | 11 issue-tracker exporters | ✅ | ❌ | ❌ | ⚠️ limited |
187
+ | Scheduled / recurring scans | ✅ | ✅ | ❌ | ❌ |
188
+ | RBAC + multi-tenant + SSO | ✅ | ✅ | ❌ | ❌ |
189
+ | OAuth 2.0 auth | ✅ | ✅ | ✅ | ✅ |
190
+ | CI/CD GitHub Action + quality gates | ✅ | ✅ | ❌ | ❌ |
191
+ | Allure / CTRF report export | ✅ | ❌ | ❌ | ❌ |
192
+ | Docker deployment | ✅ | ❌ | ⚠️ | ❌ |
193
+ | Open source (AGPL) | ✅ | ❌ | ✅ | ❌ |
194
+ | Programmatic Python API | ✅ | ❌ | ❌ | ❌ |
195
+
196
+ ---
197
+
198
+ ## Installation
199
+
200
+ **pip (recommended):**
201
+ ```bash
202
+ pip install nat-engine
203
+ ```
204
+
205
+ **With optional extras:**
206
+ ```bash
207
+ # Browser functional testing + visual regression + accessibility + performance
208
+ pip install "nat-engine[browser]"
209
+
210
+ # gRPC scanning support
211
+ pip install "nat-engine[grpc]"
212
+
213
+ # All optional extras
214
+ pip install "nat-engine[browser,grpc,billing,observability]"
215
+ ```
216
+
217
+ **Docker:**
218
+ ```bash
219
+ docker run -p 8080:8080 ghcr.io/bg-playground/nat-engine:latest
220
+ ```
221
+
222
+ **From source:**
223
+ ```bash
224
+ git clone https://github.com/bg-playground/MultiAgent-Neural-Network-Framework.git
225
+ cd MultiAgent-Neural-Network-Framework
226
+ pip install -e ".[dev]"
227
+ ```
228
+
229
+ See [`docs/getting-started/installation.md`](docs/getting-started/installation.md) for full details.
230
+
231
+ ### Configuration
232
+
233
+ Copy the example environment file and customize it:
234
+
235
+ ```bash
236
+ cp .env.example .env
237
+ # Edit .env with your settings
238
+ ```
239
+
240
+ See [`.env.example`](.env.example) for all available configuration options, including database, authentication, rate limiting, webhooks, LLM integration, and exporter settings.
241
+
242
+ > **Note:** If `DATABASE_URL` is not set, NAT runs in in-memory mode and all scan data is lost on restart. Set `DATABASE_URL` to a PostgreSQL connection string for persistent storage.
243
+
244
+ ---
245
+
246
+ ## Usage Examples
247
+
248
+ ### REST API scan
249
+
250
+ ```bash
251
+ nat scan \
252
+ --spec openapi.yaml \
253
+ --base-url https://api.example.com \
254
+ --auth-token $API_TOKEN \
255
+ --output json
256
+ ```
257
+
258
+ ### GraphQL scan
259
+
260
+ ```bash
261
+ nat scan \
262
+ --type graphql \
263
+ --base-url https://api.example.com/graphql \
264
+ --graphql-introspection
265
+ ```
266
+
267
+ ### OWASP security audit
268
+
269
+ ```bash
270
+ nat security-scan \
271
+ --spec openapi.yaml \
272
+ --base-url https://api.example.com \
273
+ --severity-threshold high \
274
+ --output markdown
275
+ ```
276
+
277
+ ### OAuth 2.0 authenticated scan
278
+
279
+ ```bash
280
+ nat scan \
281
+ --spec openapi.yaml \
282
+ --base-url https://api.example.com \
283
+ --oauth2-token-url https://auth.example.com/oauth/token \
284
+ --oauth2-client-id $CLIENT_ID \
285
+ --oauth2-client-secret $CLIENT_SECRET
286
+ ```
287
+
288
+ ### GitHub Actions integration
289
+
290
+ ```yaml
291
+ - uses: bg-playground/MultiAgent-Neural-Network-Framework@main
292
+ with:
293
+ spec: openapi.yaml
294
+ base-url: https://staging.example.com
295
+ security-scan: 'true'
296
+ fail-on-severity: high
297
+ output: allure # also supports: ctrf, junit, html, json
298
+ fail-if: "critical > 0 OR risk_score > 0.8" # quality gate expression
299
+ ```
300
+
301
+ ### gRPC scan
302
+
303
+ ```bash
304
+ nat scan \
305
+ --proto services/auth.proto \
306
+ --grpc-endpoint grpc://localhost:50051 \
307
+ --output json
308
+ ```
309
+
310
+ ### Worker pool (parallel distributed execution)
311
+
312
+ ```bash
313
+ # Launch a worker pool of 4 agents
314
+ nat worker launch --concurrency 4
315
+
316
+ # Check pool status
317
+ nat worker status
318
+ ```
319
+
320
+ ### Export findings to an issue tracker
321
+
322
+ ```bash
323
+ # List available exporters
324
+ nat export list
325
+
326
+ # Push findings to Jira
327
+ nat security-scan \
328
+ --spec openapi.yaml \
329
+ --base-url https://api.example.com \
330
+ --export jira \
331
+ --export-config jira_url=https://myco.atlassian.net \
332
+ --export-config jira_project_key=SEC
333
+ ```
334
+
335
+ ### Setup wizard and environment validation
336
+
337
+ ```bash
338
+ # Interactive first-time setup
339
+ nat setup
340
+
341
+ # Validate your environment before a scan
342
+ nat doctor
343
+ ```
344
+
345
+ ### Programmatic Python API
346
+
347
+ ```python
348
+ import asyncio
349
+ from mannf.integrations.http_sut import HttpApiSUT
350
+ from mannf.integrations.openapi_parser import OpenApiParser
351
+ from mannf.integrations.auth import BearerTokenAuth
352
+ from mannf.testing.models import TestSuite
353
+
354
+ async def main():
355
+ auth = BearerTokenAuth("my-token")
356
+ sut = HttpApiSUT(base_url="https://api.example.com", auth=auth)
357
+ parser = OpenApiParser(spec_path="openapi.yaml", base_url="https://api.example.com",
358
+ registry=sut.registry)
359
+ test_cases = parser.parse()
360
+
361
+ suite = TestSuite(name="My API")
362
+ for tc in test_cases:
363
+ suite.add_case(tc)
364
+ result = await sut.execute(tc)
365
+ suite.record_result(result)
366
+
367
+ s = suite.summary()
368
+ print(f"Passed: {s['passed']}/{s['total']} ({s['pass_rate']*100:.1f}%)")
369
+
370
+ asyncio.run(main())
371
+ ```
372
+
373
+ ---
374
+
375
+ ## Architecture
376
+
377
+ ```
378
+ ┌─────────────────────────────────────────────────────────────────┐
379
+ │ NATOrchestrator │
380
+ │ │
381
+ │ ┌───────────────┐ TASK_ANNOUNCEMENT ┌──────────────────────┐│
382
+ │ │ PlannerAgent │────────────────────▶│ CoordinatorAgent ││
383
+ │ │ │ │ ││
384
+ │ │ Predictor NN │◀── CONTRACT_RESULT ─│ ECNP bid collection ││
385
+ │ │ BeliefState │ │ + award logic ││
386
+ │ └───────────────┘ └──────────┬───────────┘│
387
+ │ │ │
388
+ │ CONTRACT_AWARD │ │
389
+ │ ▼ │
390
+ │ ┌─────────────────────┐ │
391
+ │ │ ExecutorAgent (×N) │ │
392
+ │ │ │ │
393
+ │ │ Oracle NN + BDI │ │
394
+ │ │ Bids on tasks │ │
395
+ │ └──────────┬──────────┘ │
396
+ │ │ │
397
+ │ TEST_RESULT / │ │
398
+ │ CONTRACT_RESULT │ │
399
+ │ ▼ │
400
+ │ ┌───────────────┐◀─ BELIEF_UPDATE ── ┌─────────────────────┐ │
401
+ │ │ PlannerAgent │ │ AnalyzerAgent (×M) │ │
402
+ │ │ (belief sync) │ │ │ │
403
+ │ └───────────────┘ │ Autoencoder NN │ │
404
+ │ │ Anomaly detection │ │
405
+ │ │ BeliefState update │ │
406
+ │ └─────────────────────┘ │
407
+ └─────────────────────────────────────────────────────────────────┘
408
+ │ async pub/sub Message Bus │
409
+ ▼ ▼
410
+ ┌──────────────────┐ ┌──────────────────────────┐ ┌──────────────────┐
411
+ │ HttpApiSUT │ │ GraphQLSUT │ │ GrpcSUT │
412
+ │ (REST / OpenAPI)│ │ (GraphQL / introspect) │ │ (.proto / gRPC) │
413
+ └──────────────────┘ └──────────────────────────┘ └──────────────────┘
414
+
415
+
416
+ ┌───────────────────────────────────┐ ┌──────────────────────────────────┐
417
+ │ SecurityScanner │ │ FunctionalTestOrchestrator │
418
+ │ OWASP API1–API10 + GRAPHQL 1–5 │ │ Visual Regression + A11y + Perf │
419
+ └───────────────────────────────────┘ └──────────────────────────────────┘
420
+ ```
421
+
422
+ ---
423
+
424
+ ## Documentation
425
+
426
+ The full documentation lives in [`docs/`](docs/README.md):
427
+
428
+ | Section | Contents |
429
+ |---|---|
430
+ | [Getting Started](docs/getting-started/quickstart.md) | Install and first scan |
431
+ | [Guides](docs/guides/cli-reference.md) | CLI, REST API, Docker, CI/CD, Dashboard |
432
+ | [API Reference](docs/api-reference/rest-api.md) | REST endpoints, Python API, GitHub Action |
433
+ | [How-To](docs/how-to/run-security-audit.md) | Step-by-step task recipes |
434
+ | [Concepts](docs/concepts/architecture.md) | Architecture, BDI agents, neural networks |
435
+ | [Troubleshooting](docs/troubleshooting/common-issues.md) | Common problems and solutions |
436
+ | [FAQ](docs/faq.md) | Frequently asked questions |
437
+ | [Changelog](docs/changelog.md) | Release history |
438
+ | [Contributing](docs/contributing.md) | How to contribute |
439
+
440
+ ---
441
+
442
+ ## Project Structure
443
+
444
+ ```
445
+ src/mannf/
446
+ ├── core/
447
+ │ ├── agents/ # BDI agent implementations (Planner, Executor, Analyzer, Coordinator)
448
+ │ │ ├── worker_pool.py # WorkerPool — parallel distributed test execution
449
+ │ │ └── autonomous_loop_agent.py # Autonomous multi-iteration test loop
450
+ │ ├── anomaly/ # Enhanced anomaly detection (latency, status, payload, error rate)
451
+ │ ├── browser/ # Playwright-based functional testing engine
452
+ │ │ ├── functional_test_orchestrator.py # Visual regression, accessibility, performance
453
+ │ │ └── security_scenario_generator.py
454
+ │ ├── prioritization/ # BeliefPrioritizer, RiskScorer, confidence calibration
455
+ │ └── validation/ # Self-validation runner
456
+ ├── product/
457
+ │ ├── cli.py # nat CLI (scan, security-scan, worker, export, setup, doctor, demo, …)
458
+ │ ├── server.py # FastAPI REST API server with RBAC middleware
459
+ │ ├── dashboard/ # Web dashboard (risk heatmaps, belief charts, go-live status)
460
+ │ ├── exporters/ # 11 built-in exporters
461
+ │ │ ├── jira_exporter.py
462
+ │ │ ├── linear_exporter.py
463
+ │ │ ├── github_exporter.py
464
+ │ │ ├── gitlab_exporter.py
465
+ │ │ ├── azuredevops_exporter.py
466
+ │ │ ├── shortcut_exporter.py
467
+ │ │ ├── servicenow_exporter.py
468
+ │ │ ├── pagerduty_exporter.py
469
+ │ │ ├── webhook_exporter.py
470
+ │ │ ├── sentry_exporter.py
471
+ │ │ └── bugzilla_exporter.py
472
+ │ ├── ingestors/ # OpenAPI, GraphQL, gRPC (.proto), WebSocket, traffic (HAR/mitmproxy)
473
+ │ ├── integrations/ # HttpApiSUT, GraphQLSUT, GrpcSUT, WebSocketSUT, auth providers
474
+ │ ├── scheduling/ # Cron-based scheduled scans, JobQueue (in-memory/SQLite/Redis)
475
+ │ ├── billing/ # Stripe integration, plan tiers, tenant manager
476
+ │ ├── auth/ # OIDC/SAML SSO, RBAC middleware, audit logging
477
+ │ ├── formatters/ # Allure, CTRF, JUnit, HTML report formatters
478
+ │ └── middleware/ # Tenant isolation, audit middleware
479
+ action/ # GitHub Action entrypoint and result parser (PR annotations, quality gates)
480
+ action.yml # Composite GitHub Action definition
481
+ scripts/
482
+ ├── demo_orangehrm.py # Live OrangeHRM E2E demo — login, CRUD, leave, recruitment
483
+ └── demo.sh / demo.bat # Quick-start demo launchers
484
+ Dockerfile # Multi-stage production image
485
+ docker-compose.yml # Local development Compose file
486
+ examples/
487
+ ├── petstore-openapi.yaml # Sample OpenAPI spec
488
+ ├── graphql-schema.graphql # Sample GraphQL schema
489
+ ├── python/ # Programmatic usage examples
490
+ └── workflows/ # Example GitHub Actions workflows
491
+ docs/ # Full documentation
492
+ ├── guides/
493
+ │ ├── grpc-scanning.md # gRPC scanning guide (proto parsing, TLS, RPC types)
494
+ │ └── demo-mode.md # Demo mode walkthrough
495
+ └── demos/
496
+ └── orangehrm.md # OrangeHRM live demo guide
497
+ ```
498
+
499
+ ---
500
+
501
+ ## Requirements
502
+
503
+ - Python ≥ 3.10
504
+ - NumPy ≥ 1.24
505
+ - No GPU, no PyTorch, no external ML dependencies
506
+
507
+ **Optional extras:**
508
+ - `[browser]` — Playwright ≥ 1.40, Pillow ≥ 11 (functional testing, visual regression, accessibility, performance)
509
+ - `[grpc]` — grpcio-tools ≥ 1.60 (`.proto` file parsing for gRPC scanning)
510
+ - `[billing]` — stripe ≥ 8.0 (usage-based billing)
511
+ - `[observability]` — psutil ≥ 5.9 (system metrics)
512
+
513
+ ---
514
+
515
+ ## 🚀 Deployment
516
+
517
+ NAT runs on Azure Container Apps with automatic scaling and managed TLS.
518
+
519
+ - **Setup guide:** [`deploy/azure/README.md`](deploy/azure/README.md) — complete step-by-step instructions
520
+ - **One-command setup:** `cd deploy/azure && ./setup.sh` — idempotent bootstrap script
521
+ - **Custom domain:** `cd deploy/azure && ./custom-domain.sh` — configure `api.nat-testing.io`
522
+ - **CI/CD pipeline:** Push to `main` → Docker build → GHCR push → ACA deploy → health check
523
+
524
+ ---
525
+
526
+ ## Thesis Reference
527
+
528
+ > Guider, J. B. (1999). *A Multi-Agent Neural Network Framework for Adaptive
529
+ > Testing of Large-Scale Distributed Software Systems*. Doctoral dissertation,
530
+ > UCL / Florida State University Joint Programme.
531
+
532
+ Key results from the original thesis (Chapter 6, Table 6.1):
533
+
534
+ | Configuration | Coverage | Faults Found | Time |
535
+ |---|---|---|---|
536
+ | Scripted Regression | 68.4% | 71.2% | 112 min |
537
+ | MAS (No Learning) | 74.1% | 78.5% | 94 min |
538
+ | **NAT (Learning Enabled)** | **91.3%** | **93.0%** | **51 min** |
539
+
540
+ ---
541
+
542
+ ## License
543
+
544
+ NeuroAgentTest (NAT) is dual-licensed:
545
+
546
+ - **[AGPL-3.0-or-later](LICENSE)** — for open-source projects, academic research, and personal use.
547
+ - **[Commercial License](COMMERCIAL_LICENSE.md)** — for proprietary products and SaaS deployments where AGPL-3.0 copyleft obligations are not acceptable.
548
+
549
+ For commercial licensing inquiries, contact **licensing@nat-testing.io**.
550
+
551
+ All contributors must agree to the [Contributor License Agreement (CLA)](CLA.md).
552
+
553
+ See [docs/faq.md](docs/faq.md#licensing--community) for licensing FAQs, including information on internal use, CI/CD pipelines, and the CLA.
554
+
555
+ A `NOTICE` file listing all third-party dependency licenses is included in the repository root ([NOTICE](NOTICE)).