agenticdome-python-sdk 1.2.8__tar.gz → 1.2.10__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 (78) hide show
  1. {agenticdome_python_sdk-1.2.8 → agenticdome_python_sdk-1.2.10}/MANIFEST.in +1 -0
  2. {agenticdome_python_sdk-1.2.8 → agenticdome_python_sdk-1.2.10}/PKG-INFO +172 -41
  3. agenticdome_python_sdk-1.2.8/agenticdome_python_sdk.egg-info/PKG-INFO → agenticdome_python_sdk-1.2.10/README.md +152 -128
  4. agenticdome_python_sdk-1.2.8/README.md → agenticdome_python_sdk-1.2.10/agenticdome_python_sdk.egg-info/PKG-INFO +259 -22
  5. {agenticdome_python_sdk-1.2.8 → agenticdome_python_sdk-1.2.10}/agenticdome_python_sdk.egg-info/SOURCES.txt +26 -0
  6. agenticdome_python_sdk-1.2.10/agenticdome_python_sdk.egg-info/entry_points.txt +2 -0
  7. {agenticdome_python_sdk-1.2.8 → agenticdome_python_sdk-1.2.10}/agenticdome_python_sdk.egg-info/requires.txt +18 -18
  8. {agenticdome_python_sdk-1.2.8 → agenticdome_python_sdk-1.2.10}/agenticdome_sdk/__init__.py +5 -0
  9. {agenticdome_python_sdk-1.2.8 → agenticdome_python_sdk-1.2.10}/agenticdome_sdk/_framework_firewall.py +2 -1
  10. agenticdome_python_sdk-1.2.10/agenticdome_sdk/_mode.py +35 -0
  11. {agenticdome_python_sdk-1.2.8 → agenticdome_python_sdk-1.2.10}/agenticdome_sdk/agno.py +2 -1
  12. {agenticdome_python_sdk-1.2.8 → agenticdome_python_sdk-1.2.10}/agenticdome_sdk/aws_bedrock.py +2 -1
  13. {agenticdome_python_sdk-1.2.8 → agenticdome_python_sdk-1.2.10}/agenticdome_sdk/client.py +88 -12
  14. {agenticdome_python_sdk-1.2.8 → agenticdome_python_sdk-1.2.10}/agenticdome_sdk/crewai.py +3 -2
  15. agenticdome_python_sdk-1.2.10/agenticdome_sdk/demo.py +156 -0
  16. {agenticdome_python_sdk-1.2.8 → agenticdome_python_sdk-1.2.10}/agenticdome_sdk/google_adk.py +2 -1
  17. {agenticdome_python_sdk-1.2.8 → agenticdome_python_sdk-1.2.10}/agenticdome_sdk/langgraph.py +2 -1
  18. {agenticdome_python_sdk-1.2.8 → agenticdome_python_sdk-1.2.10}/agenticdome_sdk/llamaindex.py +2 -1
  19. {agenticdome_python_sdk-1.2.8 → agenticdome_python_sdk-1.2.10}/agenticdome_sdk/mcp_host.py +2 -1
  20. {agenticdome_python_sdk-1.2.8 → agenticdome_python_sdk-1.2.10}/agenticdome_sdk/microsoft_agent_framework.py +2 -1
  21. {agenticdome_python_sdk-1.2.8 → agenticdome_python_sdk-1.2.10}/agenticdome_sdk/microsoft_ai_foundry.py +3 -4
  22. {agenticdome_python_sdk-1.2.8 → agenticdome_python_sdk-1.2.10}/agenticdome_sdk/openai_agents.py +2 -1
  23. {agenticdome_python_sdk-1.2.8 → agenticdome_python_sdk-1.2.10}/agenticdome_sdk/pydantic.py +2 -1
  24. agenticdome_python_sdk-1.2.10/agenticdome_sdk/simulation.py +189 -0
  25. agenticdome_python_sdk-1.2.10/examples/PRODUCTION_INTEGRATION.md +167 -0
  26. agenticdome_python_sdk-1.2.10/examples/README.md +107 -0
  27. {agenticdome_python_sdk-1.2.8 → agenticdome_python_sdk-1.2.10}/examples/attack_demo.py +34 -12
  28. agenticdome_python_sdk-1.2.10/examples/frameworks/README.md +13 -0
  29. agenticdome_python_sdk-1.2.10/examples/frameworks/_shared.py +22 -0
  30. agenticdome_python_sdk-1.2.10/examples/frameworks/agno.py +4 -0
  31. agenticdome_python_sdk-1.2.10/examples/frameworks/autogen.py +4 -0
  32. agenticdome_python_sdk-1.2.10/examples/frameworks/aws_bedrock.py +4 -0
  33. agenticdome_python_sdk-1.2.10/examples/frameworks/claude_agent_sdk.py +4 -0
  34. agenticdome_python_sdk-1.2.10/examples/frameworks/crewai.py +4 -0
  35. agenticdome_python_sdk-1.2.10/examples/frameworks/custom_python.py +4 -0
  36. agenticdome_python_sdk-1.2.10/examples/frameworks/google_adk.py +4 -0
  37. agenticdome_python_sdk-1.2.10/examples/frameworks/langgraph.py +4 -0
  38. agenticdome_python_sdk-1.2.10/examples/frameworks/llamaindex.py +4 -0
  39. agenticdome_python_sdk-1.2.10/examples/frameworks/mcp.py +4 -0
  40. agenticdome_python_sdk-1.2.10/examples/frameworks/microsoft_agent_framework.py +4 -0
  41. agenticdome_python_sdk-1.2.10/examples/frameworks/microsoft_ai_foundry.py +4 -0
  42. agenticdome_python_sdk-1.2.10/examples/frameworks/openai_agents.py +4 -0
  43. agenticdome_python_sdk-1.2.10/examples/frameworks/pydanticai.py +4 -0
  44. agenticdome_python_sdk-1.2.10/examples/frameworks/smolagents.py +4 -0
  45. agenticdome_python_sdk-1.2.10/examples/langgraph_agenticdome_firewall.py +72 -0
  46. agenticdome_python_sdk-1.2.10/examples/local_simulation_gallery.py +32 -0
  47. {agenticdome_python_sdk-1.2.8 → agenticdome_python_sdk-1.2.10}/pyproject.toml +23 -19
  48. {agenticdome_python_sdk-1.2.8 → agenticdome_python_sdk-1.2.10}/tests/test_execution_broker.py +18 -1
  49. agenticdome_python_sdk-1.2.10/tests/test_local_simulation.py +251 -0
  50. {agenticdome_python_sdk-1.2.8 → agenticdome_python_sdk-1.2.10}/LICENSE +0 -0
  51. {agenticdome_python_sdk-1.2.8 → agenticdome_python_sdk-1.2.10}/agenticdome_python_sdk.egg-info/dependency_links.txt +0 -0
  52. {agenticdome_python_sdk-1.2.8 → agenticdome_python_sdk-1.2.10}/agenticdome_python_sdk.egg-info/top_level.txt +0 -0
  53. {agenticdome_python_sdk-1.2.8 → agenticdome_python_sdk-1.2.10}/agenticdome_sdk/autogen.py +0 -0
  54. {agenticdome_python_sdk-1.2.8 → agenticdome_python_sdk-1.2.10}/agenticdome_sdk/claude.py +0 -0
  55. {agenticdome_python_sdk-1.2.8 → agenticdome_python_sdk-1.2.10}/agenticdome_sdk/identity.py +0 -0
  56. {agenticdome_python_sdk-1.2.8 → agenticdome_python_sdk-1.2.10}/agenticdome_sdk/proof.py +0 -0
  57. {agenticdome_python_sdk-1.2.8 → agenticdome_python_sdk-1.2.10}/agenticdome_sdk/smolagents.py +0 -0
  58. {agenticdome_python_sdk-1.2.8 → agenticdome_python_sdk-1.2.10}/examples/crewai_agenticdome_firewall.py +0 -0
  59. {agenticdome_python_sdk-1.2.8 → agenticdome_python_sdk-1.2.10}/setup.cfg +0 -0
  60. {agenticdome_python_sdk-1.2.8 → agenticdome_python_sdk-1.2.10}/setup.py +0 -0
  61. {agenticdome_python_sdk-1.2.8 → agenticdome_python_sdk-1.2.10}/tests/test_agno_integration.py +0 -0
  62. {agenticdome_python_sdk-1.2.8 → agenticdome_python_sdk-1.2.10}/tests/test_attack_demo.py +0 -0
  63. {agenticdome_python_sdk-1.2.8 → agenticdome_python_sdk-1.2.10}/tests/test_autogen_integration.py +0 -0
  64. {agenticdome_python_sdk-1.2.8 → agenticdome_python_sdk-1.2.10}/tests/test_aws_bedrock_integration.py +0 -0
  65. {agenticdome_python_sdk-1.2.8 → agenticdome_python_sdk-1.2.10}/tests/test_claude_integration.py +0 -0
  66. {agenticdome_python_sdk-1.2.8 → agenticdome_python_sdk-1.2.10}/tests/test_client.py +0 -0
  67. {agenticdome_python_sdk-1.2.8 → agenticdome_python_sdk-1.2.10}/tests/test_crewai_integration.py +0 -0
  68. {agenticdome_python_sdk-1.2.8 → agenticdome_python_sdk-1.2.10}/tests/test_google_adk_integration.py +0 -0
  69. {agenticdome_python_sdk-1.2.8 → agenticdome_python_sdk-1.2.10}/tests/test_identity_context.py +0 -0
  70. {agenticdome_python_sdk-1.2.8 → agenticdome_python_sdk-1.2.10}/tests/test_langgraph_integration.py +0 -0
  71. {agenticdome_python_sdk-1.2.8 → agenticdome_python_sdk-1.2.10}/tests/test_live_tenant.py +0 -0
  72. {agenticdome_python_sdk-1.2.8 → agenticdome_python_sdk-1.2.10}/tests/test_llamaindex_integration.py +0 -0
  73. {agenticdome_python_sdk-1.2.8 → agenticdome_python_sdk-1.2.10}/tests/test_mcp_host_integration.py +0 -0
  74. {agenticdome_python_sdk-1.2.8 → agenticdome_python_sdk-1.2.10}/tests/test_microsoft_agent_framework_integration.py +0 -0
  75. {agenticdome_python_sdk-1.2.8 → agenticdome_python_sdk-1.2.10}/tests/test_microsoft_ai_foundry_integration.py +0 -0
  76. {agenticdome_python_sdk-1.2.8 → agenticdome_python_sdk-1.2.10}/tests/test_openai_agents_integration.py +0 -0
  77. {agenticdome_python_sdk-1.2.8 → agenticdome_python_sdk-1.2.10}/tests/test_pydanticai_integration.py +0 -0
  78. {agenticdome_python_sdk-1.2.8 → agenticdome_python_sdk-1.2.10}/tests/test_smolagents_integration.py +0 -0
@@ -4,6 +4,7 @@ include pyproject.toml
4
4
  include setup.py
5
5
 
6
6
  recursive-include examples *.py
7
+ recursive-include examples *.md
7
8
  recursive-include tests *.py
8
9
  global-exclude __pycache__
9
10
  global-exclude *.py[cod]
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: agenticdome-python-sdk
3
- Version: 1.2.8
3
+ Version: 1.2.10
4
4
  Summary: Official Python SDK for AgenticDome security guardrails, DLP, tool authorization, and multi-agent delegation enforcement.
5
5
  Author: AgenticDome
6
6
  License: Proprietary
@@ -8,6 +8,7 @@ Project-URL: Homepage, https://www.agenticdome.io
8
8
  Project-URL: Repository, https://github.com/agenticdome/agenticdome-python-sdk
9
9
  Project-URL: Documentation, https://github.com/agenticdome/agenticdome-python-sdk#readme
10
10
  Project-URL: Issues, https://github.com/agenticdome/agenticdome-python-sdk/issues
11
+ Project-URL: Examples, https://github.com/agenticdome/agenticdome-python-sdk/tree/main/examples
11
12
  Keywords: agentguard,agenticdome,ai-security,agent-security,guardrails,a2a,mcp,zero-trust,runtime-security
12
13
  Classifier: Development Status :: 5 - Production/Stable
13
14
  Classifier: Intended Audience :: Developers
@@ -27,16 +28,16 @@ License-File: LICENSE
27
28
  Requires-Dist: requests>=2.31.0
28
29
  Requires-Dist: urllib3>=2.0.0
29
30
  Provides-Extra: crewai
30
- Requires-Dist: crewai<=1.15.10,>=1.15.5; extra == "crewai"
31
+ Requires-Dist: crewai<=1.15.14,>=1.15.5; extra == "crewai"
31
32
  Provides-Extra: redis
32
33
  Requires-Dist: redis>=4.5.0; extra == "redis"
33
34
  Provides-Extra: pop
34
35
  Requires-Dist: cryptography>=42.0.0; extra == "pop"
35
36
  Provides-Extra: pydanticai
36
- Requires-Dist: pydantic-ai<=2.22.0,>=2.16.0; extra == "pydanticai"
37
+ Requires-Dist: pydantic-ai<=2.27.1,>=2.16.0; extra == "pydanticai"
37
38
  Requires-Dist: anyio>=4.0.0; extra == "pydanticai"
38
39
  Provides-Extra: pydantic
39
- Requires-Dist: pydantic-ai<=2.22.0,>=2.16.0; extra == "pydantic"
40
+ Requires-Dist: pydantic-ai<=2.27.1,>=2.16.0; extra == "pydantic"
40
41
  Requires-Dist: anyio>=4.0.0; extra == "pydantic"
41
42
  Provides-Extra: langgraph
42
43
  Requires-Dist: langgraph<=1.2.10,>=1.2.9; extra == "langgraph"
@@ -52,48 +53,48 @@ Provides-Extra: foundry
52
53
  Requires-Dist: azure-ai-projects<=2.4.0,>=2.3.0; extra == "foundry"
53
54
  Requires-Dist: azure-identity==1.25.3; extra == "foundry"
54
55
  Provides-Extra: agno
55
- Requires-Dist: agno<=2.8.6,>=2.8.0; extra == "agno"
56
+ Requires-Dist: agno<=2.8.7,>=2.8.0; extra == "agno"
56
57
  Provides-Extra: openai-agents
57
- Requires-Dist: openai-agents<=0.19.2,>=0.18.3; extra == "openai-agents"
58
+ Requires-Dist: openai-agents<=0.20.0,>=0.18.3; extra == "openai-agents"
58
59
  Provides-Extra: mcp
59
60
  Requires-Dist: mcp<=1.28.1,>=1.26.0; extra == "mcp"
60
61
  Provides-Extra: bedrock
61
- Requires-Dist: boto3<=1.43.62,>=1.43.54; extra == "bedrock"
62
+ Requires-Dist: boto3<=1.43.68,>=1.43.54; extra == "bedrock"
62
63
  Provides-Extra: aws-bedrock
63
- Requires-Dist: boto3<=1.43.62,>=1.43.54; extra == "aws-bedrock"
64
+ Requires-Dist: boto3<=1.43.68,>=1.43.54; extra == "aws-bedrock"
64
65
  Provides-Extra: llamaindex
65
66
  Requires-Dist: llama-index==0.14.23; extra == "llamaindex"
66
67
  Provides-Extra: llama-index
67
68
  Requires-Dist: llama-index==0.14.23; extra == "llama-index"
68
69
  Provides-Extra: google-adk
69
- Requires-Dist: google-adk<=2.6.1,>=2.5.0; extra == "google-adk"
70
+ Requires-Dist: google-adk<=2.6.3,>=2.5.0; extra == "google-adk"
70
71
  Provides-Extra: adk
71
- Requires-Dist: google-adk<=2.6.1,>=2.5.0; extra == "adk"
72
+ Requires-Dist: google-adk<=2.6.3,>=2.5.0; extra == "adk"
72
73
  Provides-Extra: claude
73
- Requires-Dist: claude-agent-sdk<=0.2.128,>=0.2.126; extra == "claude"
74
+ Requires-Dist: claude-agent-sdk<=0.2.135,>=0.2.126; extra == "claude"
74
75
  Provides-Extra: claude-agent-sdk
75
- Requires-Dist: claude-agent-sdk<=0.2.128,>=0.2.126; extra == "claude-agent-sdk"
76
+ Requires-Dist: claude-agent-sdk<=0.2.135,>=0.2.126; extra == "claude-agent-sdk"
76
77
  Provides-Extra: smolagents
77
78
  Requires-Dist: smolagents==1.26.0; extra == "smolagents"
78
79
  Provides-Extra: all
79
- Requires-Dist: crewai<=1.15.10,>=1.15.5; extra == "all"
80
+ Requires-Dist: crewai<=1.15.14,>=1.15.5; extra == "all"
80
81
  Requires-Dist: redis>=4.5.0; extra == "all"
81
82
  Requires-Dist: cryptography>=42.0.0; extra == "all"
82
- Requires-Dist: pydantic-ai<=2.22.0,>=2.16.0; extra == "all"
83
+ Requires-Dist: pydantic-ai<=2.27.1,>=2.16.0; extra == "all"
83
84
  Requires-Dist: anyio>=4.0.0; extra == "all"
84
85
  Requires-Dist: langgraph<=1.2.10,>=1.2.9; extra == "all"
85
86
  Requires-Dist: langchain-core<=1.5.3,>=1.5.0; extra == "all"
86
87
  Requires-Dist: langchain-openai==1.3.5; extra == "all"
87
88
  Requires-Dist: autogen-agentchat==0.7.5; extra == "all"
88
- Requires-Dist: agno<=2.8.6,>=2.8.0; extra == "all"
89
+ Requires-Dist: agno<=2.8.7,>=2.8.0; extra == "all"
89
90
  Requires-Dist: azure-ai-projects<=2.4.0,>=2.3.0; extra == "all"
90
91
  Requires-Dist: azure-identity==1.25.3; extra == "all"
91
- Requires-Dist: openai-agents<=0.19.2,>=0.18.3; extra == "all"
92
+ Requires-Dist: openai-agents<=0.20.0,>=0.18.3; extra == "all"
92
93
  Requires-Dist: mcp<=1.28.1,>=1.26.0; extra == "all"
93
- Requires-Dist: boto3<=1.43.62,>=1.43.54; extra == "all"
94
+ Requires-Dist: boto3<=1.43.68,>=1.43.54; extra == "all"
94
95
  Requires-Dist: llama-index==0.14.23; extra == "all"
95
- Requires-Dist: google-adk<=2.6.1,>=2.5.0; extra == "all"
96
- Requires-Dist: claude-agent-sdk<=0.2.128,>=0.2.126; extra == "all"
96
+ Requires-Dist: google-adk<=2.6.3,>=2.5.0; extra == "all"
97
+ Requires-Dist: claude-agent-sdk<=0.2.135,>=0.2.126; extra == "all"
97
98
  Requires-Dist: smolagents==1.26.0; extra == "all"
98
99
  Provides-Extra: dev
99
100
  Requires-Dist: pytest>=8.0.0; extra == "dev"
@@ -112,10 +113,57 @@ Dynamic: license-file
112
113
 
113
114
  > **Production-grade security guardrails, DLP, tool authorization, and cryptographically verified multi-agent delegation for Python autonomous AI runtimes.**
114
115
 
115
- `agenticdome-python-sdk` is the official Python SDK and middleware package for [AgenticDome](https://agenticdome.io). It enforces deterministic security controls at every boundary your agents cross — prompt ingress, tool execution, agent-to-agent handoffs, and output egress — backed by the AgenticDome central policy plane.
116
+ `agenticdome-python-sdk` is the official Python SDK and middleware package for [AgenticDome](https://agenticdome.io). It enforces deterministic security controls at every boundary your agents cross — prompt ingress, tool execution, agent-to-agent handoffs, and output egress — using the tenant's assigned AgenticDome runtime sidecar.
116
117
 
117
118
  **One security pattern, fifteen runtimes:** CrewAI · PydanticAI · LangGraph/LangChain · Microsoft Agent Framework · Microsoft AutoGen · Microsoft AI Foundry · OpenAI Agents SDK · Claude Agent SDK · Hugging Face smolagents · Agno · Google ADK · LlamaIndex · AWS Bedrock · MCP hosts/gateways · custom Python.
118
119
 
120
+ ## Five-minute developer trial
121
+
122
+ ### 1. Install
123
+
124
+ ```bash
125
+ pip install agenticdome-python-sdk
126
+ ```
127
+
128
+ ### 2. Enable the offline simulator
129
+
130
+ ```bash
131
+ export AGENTICDOME_MODE=local_sim
132
+ ```
133
+
134
+ No account, API key, tenant, network connection, or third-party framework package is required.
135
+
136
+ ### 3. See one allowed and one blocked action
137
+
138
+ ```bash
139
+ agenticdome-demo --framework langgraph --scenario both
140
+ ```
141
+
142
+ Look for `ALLOWED — TOOL WOULD EXECUTE` followed by `BLOCKED — TOOL WOULD NOT EXECUTE`. These are simulations: the example does not execute either tool.
143
+
144
+ ### 4. Select your framework
145
+
146
+ ```bash
147
+ agenticdome-demo --list-frameworks
148
+ agenticdome-demo --framework all --scenario both
149
+ ```
150
+
151
+ You can also open the [framework example gallery](examples/README.md) and run the individual example matching your stack. Before editing production code, use the [production integration playbook](examples/PRODUCTION_INTEGRATION.md) to find the exact construction file, public attachment call and local execution boundary for your framework.
152
+
153
+ ### 5. Connect the same integration to AgenticDome
154
+
155
+ When you are ready to test real tenant policy, remove `AGENTICDOME_MODE=local_sim`, obtain the assigned runtime sidecar URL, Runtime/SDK API key and tenant ID from AgenticDome, and configure:
156
+
157
+ ```bash
158
+ unset AGENTICDOME_MODE
159
+ export AGENTICDOME_API_BASE="https://your-assigned-sidecar.example"
160
+ export AGENTICDOME_API_KEY="your_runtime_sdk_key"
161
+ export AGENTICDOME_TENANT_ID="your_tenant_id"
162
+ agenticdome-demo --framework langgraph --scenario both --live
163
+ ```
164
+
165
+ Offline simulation demonstrates the SDK decision flow using a bundled public baseline. Only live mode applies the customer's policy, topology, telemetry, signed decisions and runtime enforcement.
166
+
119
167
  ```python
120
168
  # The 30-second version: block a prompt-injected refund before it executes.
121
169
  import agenticdome_sdk.crewai # registers global CrewAI security hooks
@@ -129,18 +177,19 @@ result = crew.kickoff() # hostile prompts, unsafe tools, and rogue
129
177
 
130
178
  ## Contents
131
179
 
132
- 1. [Why AgenticDome](#why-agenticdome)
133
- 2. [How It Works](#how-it-works)
134
- 3. [Quickstart](#quickstart)
135
- 4. [Installation](#installation)
136
- 5. [Configuration](#configuration)
137
- 6. [Choosing Your Integration Point](#choosing-your-integration-point)
138
- 7. [Framework Integrations](#framework-integrations)
139
- - [CrewAI](#crewai) · [PydanticAI](#pydanticai) · [LangGraph](#langgraph) · [Microsoft Agent Framework](#microsoft-agent-framework) · [Microsoft AutoGen](#microsoft-autogen) · [Microsoft AI Foundry](#microsoft-ai-foundry) · [OpenAI Agents SDK](#openai-agents-sdk) · [Agno](#agno) · [Google ADK](#google-adk) · [LlamaIndex](#llamaindex) · [AWS Bedrock](#aws-bedrock) · [MCP Host / Gateway](#mcp-host--gateway)
140
- 8. [Core SDK Client (Custom Runtimes)](#core-sdk-client-custom-runtimes)
141
- 9. [Production Deployment](#production-deployment)
142
- 10. [Package Build and Verification](#package-build-and-verification)
143
- 11. [License](#license)
180
+ 1. [Five-minute developer trial](#five-minute-developer-trial)
181
+ 2. [Why AgenticDome](#why-agenticdome)
182
+ 3. [How It Works](#how-it-works)
183
+ 4. [Quickstart](#quickstart)
184
+ 5. [Installation](#installation)
185
+ 6. [Configuration](#configuration)
186
+ 7. [Choosing Your Integration Point](#choosing-your-integration-point)
187
+ 8. [Framework Integrations](#framework-integrations)
188
+ - [CrewAI](#crewai) · [PydanticAI](#pydanticai) · [LangGraph](#langgraph) · [Microsoft Agent Framework](#microsoft-agent-framework) · [Microsoft AutoGen](#microsoft-autogen) · [Microsoft AI Foundry](#microsoft-ai-foundry) · [OpenAI Agents SDK](#openai-agents-sdk) · [Claude Agent SDK](#claude-agent-sdk) · [Hugging Face smolagents](#hugging-face-smolagents) · [Agno](#agno) · [Google ADK](#google-adk) · [LlamaIndex](#llamaindex) · [AWS Bedrock](#aws-bedrock) · [MCP Host / Gateway](#mcp-host--gateway)
189
+ 9. [Core SDK Client (Custom Runtimes)](#core-sdk-client-custom-runtimes)
190
+ 10. [Production Deployment](#production-deployment)
191
+ 11. [Package Build and Verification](#package-build-and-verification)
192
+ 12. [License](#license)
144
193
 
145
194
  ---
146
195
 
@@ -247,17 +296,33 @@ AgenticDome uses a **hybrid split-plane architecture**. Your local Python runtim
247
296
 
248
297
  ## Quickstart
249
298
 
250
- Five steps from zero to a protected runtime.
299
+ Start with a network-free simulation, then connect the same SDK to your assigned runtime sidecar for real tenant enforcement.
251
300
 
252
- **1. Onboard.** Create an account in the AgenticDome Management Console (AU region), copy your tenant identifier from organization settings, and generate a production API key from the access-control section.
301
+ **1. Try the installed local simulation.** No account, API key, tenant, network call, telemetry, or framework package is required:
253
302
 
254
- **2. Install** the SDK with the extra matching your framework:
303
+ ```bash
304
+ pip install agenticdome-python-sdk
305
+ # Show one ALLOWED and one BLOCKED action for LangGraph.
306
+ agenticdome-demo --framework langgraph --scenario both
307
+
308
+ # Or prove the same offline contract across all 15 integrations.
309
+ agenticdome-demo --framework all --scenario both
310
+ agenticdome-demo --list-frameworks
311
+ ```
312
+
313
+ This is visibly labelled **LOCAL SIMULATION — NOT CLOUD ENFORCEMENT**. It evaluates a small bundled demonstration policy through the real public client contract, but it does not load tenant policy, issue signed decision tokens or execution receipts, write cloud evidence, or provide runtime assurance. To exercise any wrapper inside your own process without credentials, set `AGENTICDOME_MODE=local_sim`. The SDK refuses that mode when `AGENTICDOME_PRODUCTION_MODE=true`.
314
+
315
+ Browse the public [`examples/`](examples/README.md) gallery for a runnable allowed/blocked example for CrewAI, PydanticAI, LangGraph, Microsoft Agent Framework, AutoGen, AI Foundry, OpenAI Agents, Claude, smolagents, Agno, Google ADK, LlamaIndex, Bedrock, MCP, and custom Python. Local blocked/redacted results emit safe terminal logs containing verdict metadata only—not raw prompts, arguments, keys, or secrets.
316
+
317
+ **2. Onboard for real enforcement.** Create an account in the AgenticDome Management Console, obtain your tenant identifier and Runtime / SDK API key, and identify the tenant's assigned runtime sidecar.
318
+
319
+ **3. Install** the SDK with the extra matching your framework:
255
320
 
256
321
  ```bash
257
322
  pip install "agenticdome-python-sdk[crewai]" # or pydanticai, langgraph, ...
258
323
  ```
259
324
 
260
- **3. Configure** the three required environment variables (all clients fail with a configuration error rather than silently running unprotected):
325
+ **4. Configure** the three required production environment variables (live clients fail with a configuration error rather than silently running unprotected):
261
326
 
262
327
  ```bash
263
328
  # Tenant runtime sidecar URL. Do not use the control-plane website URL here.
@@ -266,7 +331,7 @@ export AGENTICDOME_API_KEY="your_api_key_abc123..."
266
331
  export AGENTICDOME_TENANT_ID="your_tenant_id_xyz789..."
267
332
  ```
268
333
 
269
- **4. Attach** AgenticDome at your framework's boundary — environment variables alone never intercept execution; every framework needs its one-time code attachment (see [Choosing Your Integration Point](#choosing-your-integration-point)):
334
+ **5. Attach** AgenticDome at your framework's boundary — environment variables alone never intercept execution; every framework needs its one-time code attachment (see [Choosing Your Integration Point](#choosing-your-integration-point)):
270
335
 
271
336
  ```python
272
337
  # CrewAI example: one import in your bootstrap, before crews are built.
@@ -277,14 +342,26 @@ crew = Crew(agents=[manager, specialist], tasks=[task])
277
342
  result = crew.kickoff()
278
343
  ```
279
344
 
280
- **5. Verify** by running the vulnerable-vs-protected attack demo:
345
+ **6. Verify** locally or against the real assigned sidecar:
281
346
 
282
347
  ```bash
283
- python examples/attack_demo.py --framework crewai --scenario refund_hijack
284
- python examples/attack_demo.py --framework claude --scenario metadata_exfil
285
- python examples/attack_demo.py --framework smolagents --scenario generated_code_exfil
348
+ # Local, deterministic and network-free.
349
+ agenticdome-demo --framework crewai --scenario both
350
+ agenticdome-demo --framework langgraph --scenario both
351
+ agenticdome-demo --framework claude --scenario both
352
+ agenticdome-demo --framework smolagents --scenario both
353
+ agenticdome-demo --framework all --scenario both
354
+
355
+ # Additional blocked-only examples for focused attack demonstrations.
356
+ agenticdome-demo --framework claude --scenario metadata_exfil
357
+ agenticdome-demo --framework smolagents --scenario metadata_exfil
358
+
359
+ # Live: uses AGENTICDOME_API_BASE/API_KEY/TENANT_ID and the assigned sidecar.
360
+ agenticdome-demo --framework langgraph --scenario safe_lookup --live
286
361
  ```
287
362
 
363
+ Every Python integration listed below is selectable through `agenticdome-demo --framework ...`; the demo prints the correct package extra and integration import for that framework. Local simulation proves SDK compatibility and control flow only. The live command proves the configured tenant-sidecar path.
364
+
288
365
  ---
289
366
 
290
367
  ## Installation
@@ -334,6 +411,18 @@ AgenticDome has two setup layers, and both are required:
334
411
 
335
412
  Environment variables do **not** intercept framework execution by themselves.
336
413
 
414
+ ### Offline community trial
415
+
416
+ Every supported Python integration inherits the same credential-free, network-free simulator:
417
+
418
+ ```bash
419
+ export AGENTICDOME_MODE="local_sim"
420
+ ```
421
+
422
+ No API base, API key, tenant ID, or third-party framework package is needed to run the public demonstration. `ALLOWED` decisions are logged at `INFO`; `BLOCKED` and `REDACTED` decisions are logged at `WARNING` so they are visible in a normal terminal. Logs contain decision metadata only and exclude raw prompt text and tool arguments.
423
+
424
+ Local simulation is deliberately limited: it uses the bundled public baseline, does not execute tools, does not use tenant policy, topology, signed provenance, runtime telemetry, decision tokens, or execution receipts, and cannot satisfy an enforced execution broker. It is refused whenever `AGENTICDOME_PRODUCTION_MODE=true`.
425
+
337
426
  ### Required variables
338
427
 
339
428
  ```bash
@@ -390,6 +479,7 @@ export AGENTICDOME_PRODUCTION_MODE="false" # production hardening (st
390
479
  | `AGENTICDOME_API_BASE` | string | required | Tenant runtime sidecar origin, e.g. `https://demo-sidecar.agenticdome.io`. Separate from the control-plane console URL. |
391
480
  | `AGENTICDOME_API_KEY` | string | required | API key generated in the AgenticDome console. |
392
481
  | `AGENTICDOME_TENANT_ID` | string | required | Tenant or organization isolation namespace. |
482
+ | `AGENTICDOME_MODE` | `live` / `local_sim` | `live` | Selects real sidecar enforcement or the credential-free, network-free demonstration evaluator. `local_sim` is refused in production mode. |
393
483
  | `AGENTICDOME_PLATFORM` | string | framework-specific | Runtime platform label included in policy context. |
394
484
  | `AGENTICDOME_TIMEOUT_S` | integer | `20` | HTTP timeout in seconds for SDK calls. |
395
485
  | `AGENTICDOME_FAIL_CLOSED` | boolean | `true` | Blocks execution if security checks fail. |
@@ -492,6 +582,8 @@ Every framework adapter exposes the same family of local hardening controls, pre
492
582
 
493
583
  One table, one decision. Find your runtime, apply the required code action, and jump to its guide. In every case, environment config alone is **not** enough — hooks activate only after the code attachment shown here.
494
584
 
585
+ For a shorter operator/developer handoff, use the [production integration playbook](examples/PRODUCTION_INTEGRATION.md). It includes the attachment boundary, bypass warning and production proof checklist for every supported framework without exposing private policy or detection internals.
586
+
495
587
  | Runtime | SDK module | Global code location | Required code action | Tool-level enforcement |
496
588
  | :--- | :--- | :--- | :--- | :--- |
497
589
  | [CrewAI](#crewai) | `agenticdome_sdk.crewai` | Application bootstrap, before crews are created | `import agenticdome_sdk.crewai` once for global hooks, or `AgenticDomeCrewAIFirewall().attach(...)` for scoped hooks | `secure_tool(...)` for explicit local wrapper enforcement, schema validation, sanitized-argument execution |
@@ -2426,6 +2518,44 @@ client.report_incident(
2426
2518
 
2427
2519
  ---
2428
2520
 
2521
+ ## Brokered Execution and the Enforcement Gateway
2522
+
2523
+ For high-impact tools, authorise at the last responsible moment and bind the decision to the real destination, HTTP method, tool version/digest, and workload identity. The sidecar returns a short-lived, single-use execution receipt; attach it to the actual outbound request that traverses the AgenticDome enforcement gateway.
2524
+
2525
+ ```python
2526
+ from agenticdome_sdk import AgentGuardClient
2527
+
2528
+ client = AgentGuardClient(
2529
+ "https://your-sidecar.example.com",
2530
+ execution_broker_mode="enforce",
2531
+ )
2532
+ decision = client.guardrail_validate(
2533
+ text="Read customer account",
2534
+ agent_id="support-agent-1",
2535
+ direction="outbound",
2536
+ platform="mcp",
2537
+ tool_name="crm.lookup",
2538
+ tool_args={"customer_id": "123"},
2539
+ tool_version="1.4.2",
2540
+ tool_digest="sha256:" + "a" * 64,
2541
+ execution_destination="https://crm.example.com/customers/123",
2542
+ execution_http_method="GET",
2543
+ workload_id="spiffe://customer.example/agent/support-agent-1",
2544
+ )
2545
+
2546
+ # Apply these headers to the real HTTP request, not to a simulated callback.
2547
+ headers = client.enforcement_headers(
2548
+ decision,
2549
+ workload_id="spiffe://customer.example/agent/support-agent-1",
2550
+ )
2551
+ ```
2552
+
2553
+ The control-plane website, provenance registry, SBOM registry, and LLM are not called on this request path. Approved provenance and policy bundles are already cached in the assigned sidecar. If the gateway is in enforce mode, a missing, expired, replayed, destination-mismatched, method-mismatched, or workload-mismatched receipt fails closed.
2554
+
2555
+ Framework adapters share this core client, but the application still owns the final executor boundary: pass the real destination/method and attach the returned headers where the framework invokes the external tool. Customers using an AgenticDome-managed sidecar install only the SDK; the deployment administrator operates Envoy, Tetragon/eBPF, SPIFFE, and sandbox infrastructure.
2556
+
2557
+ ---
2558
+
2429
2559
  ## Production Deployment
2430
2560
 
2431
2561
  ### Fail-safe behavior
@@ -2506,6 +2636,7 @@ python -m pytest -q tests/test_langgraph_integration.py
2506
2636
  | :--- | :--- | :--- |
2507
2637
  | Core SDK client | `python -m pytest -q tests/test_client.py` | Request validation, headers, guardrail calls, A2A/MCP JSON-RPC calls, Mesh DLP, HTTP errors, JSON handling |
2508
2638
  | Attack demos | `python -m pytest -q tests/test_attack_demo.py` | Offline vulnerable-vs-protected CLI coverage, including AutoGen, Claude Agent SDK, and Hugging Face smolagents |
2639
+ | Local simulation parity | `python -m pytest -q tests/test_local_simulation.py` | No-credential/no-network mode, production refusal, broker fail-closed behavior, installed demo catalog and constructor coverage for every supported Python adapter |
2509
2640
  | CrewAI | `python -m pytest -q tests/test_crewai_integration.py` | Prompt/tool hooks, handoff token injection, specialist verification, output redaction, schema checks, rate limits, retries, streaming DLP |
2510
2641
  | PydanticAI | `python -m pytest -q tests/test_pydanticai_integration.py` | Agent hooks, secure tools, sanitized arguments, token-store fallback, production session enforcement, rate limits, retries, streaming output |
2511
2642
  | LangGraph / LangChain | `python -m pytest -q tests/test_langgraph_integration.py` | Graph input, transition, tool, retrieval, middleware, security routing, token consumption, output DLP, streaming events |