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.
- {agenticdome_python_sdk-1.2.8 → agenticdome_python_sdk-1.2.10}/MANIFEST.in +1 -0
- {agenticdome_python_sdk-1.2.8 → agenticdome_python_sdk-1.2.10}/PKG-INFO +172 -41
- agenticdome_python_sdk-1.2.8/agenticdome_python_sdk.egg-info/PKG-INFO → agenticdome_python_sdk-1.2.10/README.md +152 -128
- agenticdome_python_sdk-1.2.8/README.md → agenticdome_python_sdk-1.2.10/agenticdome_python_sdk.egg-info/PKG-INFO +259 -22
- {agenticdome_python_sdk-1.2.8 → agenticdome_python_sdk-1.2.10}/agenticdome_python_sdk.egg-info/SOURCES.txt +26 -0
- agenticdome_python_sdk-1.2.10/agenticdome_python_sdk.egg-info/entry_points.txt +2 -0
- {agenticdome_python_sdk-1.2.8 → agenticdome_python_sdk-1.2.10}/agenticdome_python_sdk.egg-info/requires.txt +18 -18
- {agenticdome_python_sdk-1.2.8 → agenticdome_python_sdk-1.2.10}/agenticdome_sdk/__init__.py +5 -0
- {agenticdome_python_sdk-1.2.8 → agenticdome_python_sdk-1.2.10}/agenticdome_sdk/_framework_firewall.py +2 -1
- agenticdome_python_sdk-1.2.10/agenticdome_sdk/_mode.py +35 -0
- {agenticdome_python_sdk-1.2.8 → agenticdome_python_sdk-1.2.10}/agenticdome_sdk/agno.py +2 -1
- {agenticdome_python_sdk-1.2.8 → agenticdome_python_sdk-1.2.10}/agenticdome_sdk/aws_bedrock.py +2 -1
- {agenticdome_python_sdk-1.2.8 → agenticdome_python_sdk-1.2.10}/agenticdome_sdk/client.py +88 -12
- {agenticdome_python_sdk-1.2.8 → agenticdome_python_sdk-1.2.10}/agenticdome_sdk/crewai.py +3 -2
- agenticdome_python_sdk-1.2.10/agenticdome_sdk/demo.py +156 -0
- {agenticdome_python_sdk-1.2.8 → agenticdome_python_sdk-1.2.10}/agenticdome_sdk/google_adk.py +2 -1
- {agenticdome_python_sdk-1.2.8 → agenticdome_python_sdk-1.2.10}/agenticdome_sdk/langgraph.py +2 -1
- {agenticdome_python_sdk-1.2.8 → agenticdome_python_sdk-1.2.10}/agenticdome_sdk/llamaindex.py +2 -1
- {agenticdome_python_sdk-1.2.8 → agenticdome_python_sdk-1.2.10}/agenticdome_sdk/mcp_host.py +2 -1
- {agenticdome_python_sdk-1.2.8 → agenticdome_python_sdk-1.2.10}/agenticdome_sdk/microsoft_agent_framework.py +2 -1
- {agenticdome_python_sdk-1.2.8 → agenticdome_python_sdk-1.2.10}/agenticdome_sdk/microsoft_ai_foundry.py +3 -4
- {agenticdome_python_sdk-1.2.8 → agenticdome_python_sdk-1.2.10}/agenticdome_sdk/openai_agents.py +2 -1
- {agenticdome_python_sdk-1.2.8 → agenticdome_python_sdk-1.2.10}/agenticdome_sdk/pydantic.py +2 -1
- agenticdome_python_sdk-1.2.10/agenticdome_sdk/simulation.py +189 -0
- agenticdome_python_sdk-1.2.10/examples/PRODUCTION_INTEGRATION.md +167 -0
- agenticdome_python_sdk-1.2.10/examples/README.md +107 -0
- {agenticdome_python_sdk-1.2.8 → agenticdome_python_sdk-1.2.10}/examples/attack_demo.py +34 -12
- agenticdome_python_sdk-1.2.10/examples/frameworks/README.md +13 -0
- agenticdome_python_sdk-1.2.10/examples/frameworks/_shared.py +22 -0
- agenticdome_python_sdk-1.2.10/examples/frameworks/agno.py +4 -0
- agenticdome_python_sdk-1.2.10/examples/frameworks/autogen.py +4 -0
- agenticdome_python_sdk-1.2.10/examples/frameworks/aws_bedrock.py +4 -0
- agenticdome_python_sdk-1.2.10/examples/frameworks/claude_agent_sdk.py +4 -0
- agenticdome_python_sdk-1.2.10/examples/frameworks/crewai.py +4 -0
- agenticdome_python_sdk-1.2.10/examples/frameworks/custom_python.py +4 -0
- agenticdome_python_sdk-1.2.10/examples/frameworks/google_adk.py +4 -0
- agenticdome_python_sdk-1.2.10/examples/frameworks/langgraph.py +4 -0
- agenticdome_python_sdk-1.2.10/examples/frameworks/llamaindex.py +4 -0
- agenticdome_python_sdk-1.2.10/examples/frameworks/mcp.py +4 -0
- agenticdome_python_sdk-1.2.10/examples/frameworks/microsoft_agent_framework.py +4 -0
- agenticdome_python_sdk-1.2.10/examples/frameworks/microsoft_ai_foundry.py +4 -0
- agenticdome_python_sdk-1.2.10/examples/frameworks/openai_agents.py +4 -0
- agenticdome_python_sdk-1.2.10/examples/frameworks/pydanticai.py +4 -0
- agenticdome_python_sdk-1.2.10/examples/frameworks/smolagents.py +4 -0
- agenticdome_python_sdk-1.2.10/examples/langgraph_agenticdome_firewall.py +72 -0
- agenticdome_python_sdk-1.2.10/examples/local_simulation_gallery.py +32 -0
- {agenticdome_python_sdk-1.2.8 → agenticdome_python_sdk-1.2.10}/pyproject.toml +23 -19
- {agenticdome_python_sdk-1.2.8 → agenticdome_python_sdk-1.2.10}/tests/test_execution_broker.py +18 -1
- agenticdome_python_sdk-1.2.10/tests/test_local_simulation.py +251 -0
- {agenticdome_python_sdk-1.2.8 → agenticdome_python_sdk-1.2.10}/LICENSE +0 -0
- {agenticdome_python_sdk-1.2.8 → agenticdome_python_sdk-1.2.10}/agenticdome_python_sdk.egg-info/dependency_links.txt +0 -0
- {agenticdome_python_sdk-1.2.8 → agenticdome_python_sdk-1.2.10}/agenticdome_python_sdk.egg-info/top_level.txt +0 -0
- {agenticdome_python_sdk-1.2.8 → agenticdome_python_sdk-1.2.10}/agenticdome_sdk/autogen.py +0 -0
- {agenticdome_python_sdk-1.2.8 → agenticdome_python_sdk-1.2.10}/agenticdome_sdk/claude.py +0 -0
- {agenticdome_python_sdk-1.2.8 → agenticdome_python_sdk-1.2.10}/agenticdome_sdk/identity.py +0 -0
- {agenticdome_python_sdk-1.2.8 → agenticdome_python_sdk-1.2.10}/agenticdome_sdk/proof.py +0 -0
- {agenticdome_python_sdk-1.2.8 → agenticdome_python_sdk-1.2.10}/agenticdome_sdk/smolagents.py +0 -0
- {agenticdome_python_sdk-1.2.8 → agenticdome_python_sdk-1.2.10}/examples/crewai_agenticdome_firewall.py +0 -0
- {agenticdome_python_sdk-1.2.8 → agenticdome_python_sdk-1.2.10}/setup.cfg +0 -0
- {agenticdome_python_sdk-1.2.8 → agenticdome_python_sdk-1.2.10}/setup.py +0 -0
- {agenticdome_python_sdk-1.2.8 → agenticdome_python_sdk-1.2.10}/tests/test_agno_integration.py +0 -0
- {agenticdome_python_sdk-1.2.8 → agenticdome_python_sdk-1.2.10}/tests/test_attack_demo.py +0 -0
- {agenticdome_python_sdk-1.2.8 → agenticdome_python_sdk-1.2.10}/tests/test_autogen_integration.py +0 -0
- {agenticdome_python_sdk-1.2.8 → agenticdome_python_sdk-1.2.10}/tests/test_aws_bedrock_integration.py +0 -0
- {agenticdome_python_sdk-1.2.8 → agenticdome_python_sdk-1.2.10}/tests/test_claude_integration.py +0 -0
- {agenticdome_python_sdk-1.2.8 → agenticdome_python_sdk-1.2.10}/tests/test_client.py +0 -0
- {agenticdome_python_sdk-1.2.8 → agenticdome_python_sdk-1.2.10}/tests/test_crewai_integration.py +0 -0
- {agenticdome_python_sdk-1.2.8 → agenticdome_python_sdk-1.2.10}/tests/test_google_adk_integration.py +0 -0
- {agenticdome_python_sdk-1.2.8 → agenticdome_python_sdk-1.2.10}/tests/test_identity_context.py +0 -0
- {agenticdome_python_sdk-1.2.8 → agenticdome_python_sdk-1.2.10}/tests/test_langgraph_integration.py +0 -0
- {agenticdome_python_sdk-1.2.8 → agenticdome_python_sdk-1.2.10}/tests/test_live_tenant.py +0 -0
- {agenticdome_python_sdk-1.2.8 → agenticdome_python_sdk-1.2.10}/tests/test_llamaindex_integration.py +0 -0
- {agenticdome_python_sdk-1.2.8 → agenticdome_python_sdk-1.2.10}/tests/test_mcp_host_integration.py +0 -0
- {agenticdome_python_sdk-1.2.8 → agenticdome_python_sdk-1.2.10}/tests/test_microsoft_agent_framework_integration.py +0 -0
- {agenticdome_python_sdk-1.2.8 → agenticdome_python_sdk-1.2.10}/tests/test_microsoft_ai_foundry_integration.py +0 -0
- {agenticdome_python_sdk-1.2.8 → agenticdome_python_sdk-1.2.10}/tests/test_openai_agents_integration.py +0 -0
- {agenticdome_python_sdk-1.2.8 → agenticdome_python_sdk-1.2.10}/tests/test_pydanticai_integration.py +0 -0
- {agenticdome_python_sdk-1.2.8 → agenticdome_python_sdk-1.2.10}/tests/test_smolagents_integration.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: agenticdome-python-sdk
|
|
3
|
-
Version: 1.2.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
56
|
+
Requires-Dist: agno<=2.8.7,>=2.8.0; extra == "agno"
|
|
56
57
|
Provides-Extra: openai-agents
|
|
57
|
-
Requires-Dist: openai-agents<=0.
|
|
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
|
+
Requires-Dist: boto3<=1.43.68,>=1.43.54; extra == "bedrock"
|
|
62
63
|
Provides-Extra: aws-bedrock
|
|
63
|
-
Requires-Dist: boto3<=1.43.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
96
|
-
Requires-Dist: claude-agent-sdk<=0.2.
|
|
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 —
|
|
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. [
|
|
133
|
-
2. [
|
|
134
|
-
3. [
|
|
135
|
-
4. [
|
|
136
|
-
5. [
|
|
137
|
-
6. [
|
|
138
|
-
7. [
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
9. [
|
|
142
|
-
10. [
|
|
143
|
-
11. [
|
|
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
|
-
|
|
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.
|
|
301
|
+
**1. Try the installed local simulation.** No account, API key, tenant, network call, telemetry, or framework package is required:
|
|
253
302
|
|
|
254
|
-
|
|
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
|
-
**
|
|
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
|
-
**
|
|
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
|
-
**
|
|
345
|
+
**6. Verify** locally or against the real assigned sidecar:
|
|
281
346
|
|
|
282
347
|
```bash
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
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 |
|