agenticdome-python-sdk 1.2.15__tar.gz → 1.2.17__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.15 → agenticdome_python_sdk-1.2.17}/PKG-INFO +107 -36
- {agenticdome_python_sdk-1.2.15 → agenticdome_python_sdk-1.2.17}/README.md +91 -20
- {agenticdome_python_sdk-1.2.15 → agenticdome_python_sdk-1.2.17}/agenticdome_python_sdk.egg-info/PKG-INFO +107 -36
- {agenticdome_python_sdk-1.2.15 → agenticdome_python_sdk-1.2.17}/agenticdome_python_sdk.egg-info/SOURCES.txt +1 -0
- {agenticdome_python_sdk-1.2.15 → agenticdome_python_sdk-1.2.17}/agenticdome_python_sdk.egg-info/requires.txt +15 -15
- {agenticdome_python_sdk-1.2.15 → agenticdome_python_sdk-1.2.17}/agenticdome_sdk/demo.py +14 -3
- {agenticdome_python_sdk-1.2.15 → agenticdome_python_sdk-1.2.17}/docs/frameworks/README.md +18 -2
- {agenticdome_python_sdk-1.2.15 → agenticdome_python_sdk-1.2.17}/docs/frameworks/agno.md +15 -0
- {agenticdome_python_sdk-1.2.15 → agenticdome_python_sdk-1.2.17}/docs/frameworks/autogen.md +15 -0
- {agenticdome_python_sdk-1.2.15 → agenticdome_python_sdk-1.2.17}/docs/frameworks/aws-bedrock.md +15 -0
- {agenticdome_python_sdk-1.2.15 → agenticdome_python_sdk-1.2.17}/docs/frameworks/claude-agent-sdk.md +15 -0
- {agenticdome_python_sdk-1.2.15 → agenticdome_python_sdk-1.2.17}/docs/frameworks/crewai.md +16 -3
- {agenticdome_python_sdk-1.2.15 → agenticdome_python_sdk-1.2.17}/docs/frameworks/custom-python.md +15 -0
- {agenticdome_python_sdk-1.2.15 → agenticdome_python_sdk-1.2.17}/docs/frameworks/google-adk.md +15 -0
- {agenticdome_python_sdk-1.2.15 → agenticdome_python_sdk-1.2.17}/docs/frameworks/langgraph.md +15 -0
- {agenticdome_python_sdk-1.2.15 → agenticdome_python_sdk-1.2.17}/docs/frameworks/llamaindex.md +15 -0
- {agenticdome_python_sdk-1.2.15 → agenticdome_python_sdk-1.2.17}/docs/frameworks/microsoft-agent-framework.md +15 -0
- {agenticdome_python_sdk-1.2.15 → agenticdome_python_sdk-1.2.17}/docs/frameworks/microsoft-ai-foundry.md +15 -0
- {agenticdome_python_sdk-1.2.15 → agenticdome_python_sdk-1.2.17}/docs/frameworks/openai-agents.md +15 -0
- {agenticdome_python_sdk-1.2.15 → agenticdome_python_sdk-1.2.17}/docs/frameworks/pydanticai.md +15 -0
- {agenticdome_python_sdk-1.2.15 → agenticdome_python_sdk-1.2.17}/docs/frameworks/smolagents.md +15 -0
- {agenticdome_python_sdk-1.2.15 → agenticdome_python_sdk-1.2.17}/docs/mcp-integration.md +82 -6
- agenticdome_python_sdk-1.2.17/docs/runtime-deployment.md +51 -0
- {agenticdome_python_sdk-1.2.15 → agenticdome_python_sdk-1.2.17}/examples/PRODUCTION_INTEGRATION.md +8 -0
- {agenticdome_python_sdk-1.2.15 → agenticdome_python_sdk-1.2.17}/examples/README.md +27 -3
- agenticdome_python_sdk-1.2.17/examples/frameworks/README.md +21 -0
- {agenticdome_python_sdk-1.2.15 → agenticdome_python_sdk-1.2.17}/pyproject.toml +16 -16
- {agenticdome_python_sdk-1.2.15 → agenticdome_python_sdk-1.2.17}/tests/test_framework_guides.py +22 -0
- {agenticdome_python_sdk-1.2.15 → agenticdome_python_sdk-1.2.17}/tests/test_local_simulation.py +56 -1
- {agenticdome_python_sdk-1.2.15 → agenticdome_python_sdk-1.2.17}/tests/test_mcp_launch_example.py +15 -0
- agenticdome_python_sdk-1.2.15/examples/frameworks/README.md +0 -13
- {agenticdome_python_sdk-1.2.15 → agenticdome_python_sdk-1.2.17}/CONTRIBUTING.md +0 -0
- {agenticdome_python_sdk-1.2.15 → agenticdome_python_sdk-1.2.17}/LICENSE +0 -0
- {agenticdome_python_sdk-1.2.15 → agenticdome_python_sdk-1.2.17}/MANIFEST.in +0 -0
- {agenticdome_python_sdk-1.2.15 → agenticdome_python_sdk-1.2.17}/NOTICE +0 -0
- {agenticdome_python_sdk-1.2.15 → agenticdome_python_sdk-1.2.17}/SECURITY.md +0 -0
- {agenticdome_python_sdk-1.2.15 → agenticdome_python_sdk-1.2.17}/agenticdome_python_sdk.egg-info/dependency_links.txt +0 -0
- {agenticdome_python_sdk-1.2.15 → agenticdome_python_sdk-1.2.17}/agenticdome_python_sdk.egg-info/entry_points.txt +0 -0
- {agenticdome_python_sdk-1.2.15 → agenticdome_python_sdk-1.2.17}/agenticdome_python_sdk.egg-info/top_level.txt +0 -0
- {agenticdome_python_sdk-1.2.15 → agenticdome_python_sdk-1.2.17}/agenticdome_sdk/__init__.py +0 -0
- {agenticdome_python_sdk-1.2.15 → agenticdome_python_sdk-1.2.17}/agenticdome_sdk/_framework_firewall.py +0 -0
- {agenticdome_python_sdk-1.2.15 → agenticdome_python_sdk-1.2.17}/agenticdome_sdk/_mode.py +0 -0
- {agenticdome_python_sdk-1.2.15 → agenticdome_python_sdk-1.2.17}/agenticdome_sdk/agno.py +0 -0
- {agenticdome_python_sdk-1.2.15 → agenticdome_python_sdk-1.2.17}/agenticdome_sdk/autogen.py +0 -0
- {agenticdome_python_sdk-1.2.15 → agenticdome_python_sdk-1.2.17}/agenticdome_sdk/aws_bedrock.py +0 -0
- {agenticdome_python_sdk-1.2.15 → agenticdome_python_sdk-1.2.17}/agenticdome_sdk/claude.py +0 -0
- {agenticdome_python_sdk-1.2.15 → agenticdome_python_sdk-1.2.17}/agenticdome_sdk/client.py +0 -0
- {agenticdome_python_sdk-1.2.15 → agenticdome_python_sdk-1.2.17}/agenticdome_sdk/crewai.py +0 -0
- {agenticdome_python_sdk-1.2.15 → agenticdome_python_sdk-1.2.17}/agenticdome_sdk/google_adk.py +0 -0
- {agenticdome_python_sdk-1.2.15 → agenticdome_python_sdk-1.2.17}/agenticdome_sdk/identity.py +0 -0
- {agenticdome_python_sdk-1.2.15 → agenticdome_python_sdk-1.2.17}/agenticdome_sdk/langgraph.py +0 -0
- {agenticdome_python_sdk-1.2.15 → agenticdome_python_sdk-1.2.17}/agenticdome_sdk/llamaindex.py +0 -0
- {agenticdome_python_sdk-1.2.15 → agenticdome_python_sdk-1.2.17}/agenticdome_sdk/mcp_host.py +0 -0
- {agenticdome_python_sdk-1.2.15 → agenticdome_python_sdk-1.2.17}/agenticdome_sdk/microsoft_agent_framework.py +0 -0
- {agenticdome_python_sdk-1.2.15 → agenticdome_python_sdk-1.2.17}/agenticdome_sdk/microsoft_ai_foundry.py +0 -0
- {agenticdome_python_sdk-1.2.15 → agenticdome_python_sdk-1.2.17}/agenticdome_sdk/openai_agents.py +0 -0
- {agenticdome_python_sdk-1.2.15 → agenticdome_python_sdk-1.2.17}/agenticdome_sdk/proof.py +0 -0
- {agenticdome_python_sdk-1.2.15 → agenticdome_python_sdk-1.2.17}/agenticdome_sdk/pydantic.py +0 -0
- {agenticdome_python_sdk-1.2.15 → agenticdome_python_sdk-1.2.17}/agenticdome_sdk/simulation.py +0 -0
- {agenticdome_python_sdk-1.2.15 → agenticdome_python_sdk-1.2.17}/agenticdome_sdk/smolagents.py +0 -0
- {agenticdome_python_sdk-1.2.15 → agenticdome_python_sdk-1.2.17}/docs/performance-evidence.md +0 -0
- {agenticdome_python_sdk-1.2.15 → agenticdome_python_sdk-1.2.17}/examples/attack_demo.py +0 -0
- {agenticdome_python_sdk-1.2.15 → agenticdome_python_sdk-1.2.17}/examples/crewai_agenticdome_firewall.py +0 -0
- {agenticdome_python_sdk-1.2.15 → agenticdome_python_sdk-1.2.17}/examples/frameworks/_shared.py +0 -0
- {agenticdome_python_sdk-1.2.15 → agenticdome_python_sdk-1.2.17}/examples/frameworks/agno.py +0 -0
- {agenticdome_python_sdk-1.2.15 → agenticdome_python_sdk-1.2.17}/examples/frameworks/autogen.py +0 -0
- {agenticdome_python_sdk-1.2.15 → agenticdome_python_sdk-1.2.17}/examples/frameworks/aws_bedrock.py +0 -0
- {agenticdome_python_sdk-1.2.15 → agenticdome_python_sdk-1.2.17}/examples/frameworks/claude_agent_sdk.py +0 -0
- {agenticdome_python_sdk-1.2.15 → agenticdome_python_sdk-1.2.17}/examples/frameworks/crewai.py +0 -0
- {agenticdome_python_sdk-1.2.15 → agenticdome_python_sdk-1.2.17}/examples/frameworks/custom_python.py +0 -0
- {agenticdome_python_sdk-1.2.15 → agenticdome_python_sdk-1.2.17}/examples/frameworks/google_adk.py +0 -0
- {agenticdome_python_sdk-1.2.15 → agenticdome_python_sdk-1.2.17}/examples/frameworks/langgraph.py +0 -0
- {agenticdome_python_sdk-1.2.15 → agenticdome_python_sdk-1.2.17}/examples/frameworks/llamaindex.py +0 -0
- {agenticdome_python_sdk-1.2.15 → agenticdome_python_sdk-1.2.17}/examples/frameworks/mcp.py +0 -0
- {agenticdome_python_sdk-1.2.15 → agenticdome_python_sdk-1.2.17}/examples/frameworks/microsoft_agent_framework.py +0 -0
- {agenticdome_python_sdk-1.2.15 → agenticdome_python_sdk-1.2.17}/examples/frameworks/microsoft_ai_foundry.py +0 -0
- {agenticdome_python_sdk-1.2.15 → agenticdome_python_sdk-1.2.17}/examples/frameworks/openai_agents.py +0 -0
- {agenticdome_python_sdk-1.2.15 → agenticdome_python_sdk-1.2.17}/examples/frameworks/pydanticai.py +0 -0
- {agenticdome_python_sdk-1.2.15 → agenticdome_python_sdk-1.2.17}/examples/frameworks/smolagents.py +0 -0
- {agenticdome_python_sdk-1.2.15 → agenticdome_python_sdk-1.2.17}/examples/langgraph_agenticdome_firewall.py +0 -0
- {agenticdome_python_sdk-1.2.15 → agenticdome_python_sdk-1.2.17}/examples/local_simulation_gallery.py +0 -0
- {agenticdome_python_sdk-1.2.15 → agenticdome_python_sdk-1.2.17}/examples/mcp_gateway_action_firewall.py +0 -0
- {agenticdome_python_sdk-1.2.15 → agenticdome_python_sdk-1.2.17}/setup.cfg +0 -0
- {agenticdome_python_sdk-1.2.15 → agenticdome_python_sdk-1.2.17}/setup.py +0 -0
- {agenticdome_python_sdk-1.2.15 → agenticdome_python_sdk-1.2.17}/tests/test_agno_integration.py +0 -0
- {agenticdome_python_sdk-1.2.15 → agenticdome_python_sdk-1.2.17}/tests/test_attack_demo.py +0 -0
- {agenticdome_python_sdk-1.2.15 → agenticdome_python_sdk-1.2.17}/tests/test_autogen_integration.py +0 -0
- {agenticdome_python_sdk-1.2.15 → agenticdome_python_sdk-1.2.17}/tests/test_aws_bedrock_integration.py +0 -0
- {agenticdome_python_sdk-1.2.15 → agenticdome_python_sdk-1.2.17}/tests/test_claude_integration.py +0 -0
- {agenticdome_python_sdk-1.2.15 → agenticdome_python_sdk-1.2.17}/tests/test_client.py +0 -0
- {agenticdome_python_sdk-1.2.15 → agenticdome_python_sdk-1.2.17}/tests/test_crewai_integration.py +0 -0
- {agenticdome_python_sdk-1.2.15 → agenticdome_python_sdk-1.2.17}/tests/test_execution_broker.py +0 -0
- {agenticdome_python_sdk-1.2.15 → agenticdome_python_sdk-1.2.17}/tests/test_google_adk_integration.py +0 -0
- {agenticdome_python_sdk-1.2.15 → agenticdome_python_sdk-1.2.17}/tests/test_identity_context.py +0 -0
- {agenticdome_python_sdk-1.2.15 → agenticdome_python_sdk-1.2.17}/tests/test_langgraph_integration.py +0 -0
- {agenticdome_python_sdk-1.2.15 → agenticdome_python_sdk-1.2.17}/tests/test_llamaindex_integration.py +0 -0
- {agenticdome_python_sdk-1.2.15 → agenticdome_python_sdk-1.2.17}/tests/test_mcp_host_integration.py +0 -0
- {agenticdome_python_sdk-1.2.15 → agenticdome_python_sdk-1.2.17}/tests/test_microsoft_agent_framework_integration.py +0 -0
- {agenticdome_python_sdk-1.2.15 → agenticdome_python_sdk-1.2.17}/tests/test_microsoft_ai_foundry_integration.py +0 -0
- {agenticdome_python_sdk-1.2.15 → agenticdome_python_sdk-1.2.17}/tests/test_openai_agents_integration.py +0 -0
- {agenticdome_python_sdk-1.2.15 → agenticdome_python_sdk-1.2.17}/tests/test_pydanticai_integration.py +0 -0
- {agenticdome_python_sdk-1.2.15 → agenticdome_python_sdk-1.2.17}/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.17
|
|
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-Expression: Apache-2.0
|
|
@@ -32,20 +32,20 @@ License-File: NOTICE
|
|
|
32
32
|
Requires-Dist: requests>=2.31.0
|
|
33
33
|
Requires-Dist: urllib3>=2.0.0
|
|
34
34
|
Provides-Extra: crewai
|
|
35
|
-
Requires-Dist: crewai<=1.15.
|
|
35
|
+
Requires-Dist: crewai<=1.15.15,>=1.15.5; extra == "crewai"
|
|
36
36
|
Provides-Extra: redis
|
|
37
37
|
Requires-Dist: redis>=4.5.0; extra == "redis"
|
|
38
38
|
Provides-Extra: pop
|
|
39
39
|
Requires-Dist: cryptography>=42.0.0; extra == "pop"
|
|
40
40
|
Provides-Extra: pydanticai
|
|
41
|
-
Requires-Dist: pydantic-ai<=2.
|
|
41
|
+
Requires-Dist: pydantic-ai<=2.29.0,>=2.16.0; extra == "pydanticai"
|
|
42
42
|
Requires-Dist: anyio>=4.0.0; extra == "pydanticai"
|
|
43
43
|
Provides-Extra: pydantic
|
|
44
|
-
Requires-Dist: pydantic-ai<=2.
|
|
44
|
+
Requires-Dist: pydantic-ai<=2.29.0,>=2.16.0; extra == "pydantic"
|
|
45
45
|
Requires-Dist: anyio>=4.0.0; extra == "pydantic"
|
|
46
46
|
Provides-Extra: langgraph
|
|
47
|
-
Requires-Dist: langgraph<=1.2.
|
|
48
|
-
Requires-Dist: langchain-core<=1.5.
|
|
47
|
+
Requires-Dist: langgraph<=1.2.11,>=1.2.9; extra == "langgraph"
|
|
48
|
+
Requires-Dist: langchain-core<=1.5.4,>=1.5.0; extra == "langgraph"
|
|
49
49
|
Requires-Dist: langchain-openai==1.3.5; extra == "langgraph"
|
|
50
50
|
Requires-Dist: anyio>=4.0.0; extra == "langgraph"
|
|
51
51
|
Provides-Extra: microsoft
|
|
@@ -63,9 +63,9 @@ Requires-Dist: openai-agents<=0.20.0,>=0.18.3; extra == "openai-agents"
|
|
|
63
63
|
Provides-Extra: mcp
|
|
64
64
|
Requires-Dist: mcp<=1.28.1,>=1.26.0; extra == "mcp"
|
|
65
65
|
Provides-Extra: bedrock
|
|
66
|
-
Requires-Dist: boto3<=1.43.
|
|
66
|
+
Requires-Dist: boto3<=1.43.70,>=1.43.54; extra == "bedrock"
|
|
67
67
|
Provides-Extra: aws-bedrock
|
|
68
|
-
Requires-Dist: boto3<=1.43.
|
|
68
|
+
Requires-Dist: boto3<=1.43.70,>=1.43.54; extra == "aws-bedrock"
|
|
69
69
|
Provides-Extra: llamaindex
|
|
70
70
|
Requires-Dist: llama-index==0.14.23; extra == "llamaindex"
|
|
71
71
|
Provides-Extra: llama-index
|
|
@@ -75,19 +75,19 @@ Requires-Dist: google-adk<=2.6.3,>=2.5.0; extra == "google-adk"
|
|
|
75
75
|
Provides-Extra: adk
|
|
76
76
|
Requires-Dist: google-adk<=2.6.3,>=2.5.0; extra == "adk"
|
|
77
77
|
Provides-Extra: claude
|
|
78
|
-
Requires-Dist: claude-agent-sdk<=0.2.
|
|
78
|
+
Requires-Dist: claude-agent-sdk<=0.2.137,>=0.2.126; extra == "claude"
|
|
79
79
|
Provides-Extra: claude-agent-sdk
|
|
80
|
-
Requires-Dist: claude-agent-sdk<=0.2.
|
|
80
|
+
Requires-Dist: claude-agent-sdk<=0.2.137,>=0.2.126; extra == "claude-agent-sdk"
|
|
81
81
|
Provides-Extra: smolagents
|
|
82
82
|
Requires-Dist: smolagents==1.26.0; extra == "smolagents"
|
|
83
83
|
Provides-Extra: all
|
|
84
|
-
Requires-Dist: crewai<=1.15.
|
|
84
|
+
Requires-Dist: crewai<=1.15.15,>=1.15.5; extra == "all"
|
|
85
85
|
Requires-Dist: redis>=4.5.0; extra == "all"
|
|
86
86
|
Requires-Dist: cryptography>=42.0.0; extra == "all"
|
|
87
|
-
Requires-Dist: pydantic-ai<=2.
|
|
87
|
+
Requires-Dist: pydantic-ai<=2.29.0,>=2.16.0; extra == "all"
|
|
88
88
|
Requires-Dist: anyio>=4.0.0; extra == "all"
|
|
89
|
-
Requires-Dist: langgraph<=1.2.
|
|
90
|
-
Requires-Dist: langchain-core<=1.5.
|
|
89
|
+
Requires-Dist: langgraph<=1.2.11,>=1.2.9; extra == "all"
|
|
90
|
+
Requires-Dist: langchain-core<=1.5.4,>=1.5.0; extra == "all"
|
|
91
91
|
Requires-Dist: langchain-openai==1.3.5; extra == "all"
|
|
92
92
|
Requires-Dist: autogen-agentchat==0.7.5; extra == "all"
|
|
93
93
|
Requires-Dist: agno<=2.8.7,>=2.8.0; extra == "all"
|
|
@@ -95,10 +95,10 @@ Requires-Dist: azure-ai-projects<=2.4.0,>=2.3.0; extra == "all"
|
|
|
95
95
|
Requires-Dist: azure-identity==1.25.3; extra == "all"
|
|
96
96
|
Requires-Dist: openai-agents<=0.20.0,>=0.18.3; extra == "all"
|
|
97
97
|
Requires-Dist: mcp<=1.28.1,>=1.26.0; extra == "all"
|
|
98
|
-
Requires-Dist: boto3<=1.43.
|
|
98
|
+
Requires-Dist: boto3<=1.43.70,>=1.43.54; extra == "all"
|
|
99
99
|
Requires-Dist: llama-index==0.14.23; extra == "all"
|
|
100
100
|
Requires-Dist: google-adk<=2.6.3,>=2.5.0; extra == "all"
|
|
101
|
-
Requires-Dist: claude-agent-sdk<=0.2.
|
|
101
|
+
Requires-Dist: claude-agent-sdk<=0.2.137,>=0.2.126; extra == "all"
|
|
102
102
|
Requires-Dist: smolagents==1.26.0; extra == "all"
|
|
103
103
|
Provides-Extra: dev
|
|
104
104
|
Requires-Dist: pytest>=8.0.0; extra == "dev"
|
|
@@ -147,7 +147,14 @@ No account, API key, tenant, network connection, or third-party framework packag
|
|
|
147
147
|
agenticdome-demo --framework langgraph --scenario both
|
|
148
148
|
```
|
|
149
149
|
|
|
150
|
-
Look for `ALLOWED — TOOL WOULD EXECUTE` followed by `BLOCKED — TOOL WOULD NOT EXECUTE`.
|
|
150
|
+
Look for `ALLOWED — TOOL WOULD EXECUTE` followed by `BLOCKED — TOOL WOULD NOT EXECUTE`.
|
|
151
|
+
|
|
152
|
+
> **Offline demonstration—not runtime evidence.** This command evaluates two
|
|
153
|
+
> fixed onboarding scenarios with a deterministic, bundled public baseline. It
|
|
154
|
+
> does not contact AgenticDome, load tenant policy, execute either tool, or
|
|
155
|
+
> instantiate a LangGraph graph. `--framework langgraph` labels the example
|
|
156
|
+
> payload and points you to the matching integration; it is not a LangGraph
|
|
157
|
+
> integration test.
|
|
151
158
|
|
|
152
159
|
### 4. Select your framework
|
|
153
160
|
|
|
@@ -170,7 +177,13 @@ export AGENTICDOME_TENANT_ID="your_tenant_id"
|
|
|
170
177
|
agenticdome-demo --framework langgraph --scenario both --live
|
|
171
178
|
```
|
|
172
179
|
|
|
173
|
-
|
|
180
|
+
With `--live`, the same fixed scenarios are sent to the actual assigned
|
|
181
|
+
AgenticDome runtime sidecar, so their verdicts come from the customer's tenant
|
|
182
|
+
policy and engine. The live demo still does not instantiate LangGraph or prove
|
|
183
|
+
that an application has attached the framework adapter at every execution
|
|
184
|
+
boundary. Use the framework guide to attach the adapter, test the real
|
|
185
|
+
application path, and use AgenticDome Runtime Assurance for production
|
|
186
|
+
evidence.
|
|
174
187
|
|
|
175
188
|
```python
|
|
176
189
|
# The 30-second version: block a prompt-injected refund before it executes.
|
|
@@ -205,6 +218,21 @@ result = crew.kickoff() # hostile prompts, unsafe tools, and rogue
|
|
|
205
218
|
|
|
206
219
|
An agent can be hijacked while holding valid tokens, approved tools, and fully authorized paths. Legacy security sees a compliant request; the business sees a breach. AgenticDome adds an intent-aware enforcement layer at the exact boundaries where agents act:
|
|
207
220
|
|
|
221
|
+
### Identity is necessary, but it is not the action decision
|
|
222
|
+
|
|
223
|
+
Give every agent and workload a distinct principal and keep your identity
|
|
224
|
+
provider authoritative for authentication, scopes, conditional access,
|
|
225
|
+
credential lifecycle, and downstream entitlements. Then pass the identity the
|
|
226
|
+
application has actually authenticated into AgenticDome alongside the agent,
|
|
227
|
+
purpose, tool, final arguments, session, and delegation context. A valid token
|
|
228
|
+
proves access authority; it does not prove that a prompt-influenced action is
|
|
229
|
+
appropriate. AgenticDome complements IAM by evaluating that action at the
|
|
230
|
+
application-controlled execution boundary. It does not issue enterprise
|
|
231
|
+
identities or make a stolen credential safe.
|
|
232
|
+
|
|
233
|
+
For the architectural rationale, see
|
|
234
|
+
[An agent principal proves who—not why](https://www.agenticdome.io/research/agent-principal-identity).
|
|
235
|
+
|
|
208
236
|
| Control | What it stops | Where it runs |
|
|
209
237
|
| :--- | :--- | :--- |
|
|
210
238
|
| **Prompt ingress guardrails** | Prompt injection, jailbreaks, system-prompt extraction, instruction override, policy bypass | Before agent/LLM execution |
|
|
@@ -266,6 +294,20 @@ Customer application |
|
|
|
266
294
|
|
|
267
295
|
The SDK must be attached in application code; setting environment variables alone does not intercept a framework. The assigned sidecar authenticates the tenant and evaluates live requests. Tools still execute in the customer's environment or selected provider unless a separate execution service has been deliberately configured.
|
|
268
296
|
|
|
297
|
+
### Where the assigned runtime runs
|
|
298
|
+
|
|
299
|
+
- **Managed service:** AgenticDome assigns the tenant a managed sidecar in the
|
|
300
|
+
selected supported geographic region, subject to availability and the
|
|
301
|
+
customer's plan or contract.
|
|
302
|
+
- **Sovereign deployment:** the runtime is deployed within the contracted
|
|
303
|
+
customer-controlled boundary, such as a dedicated VPC, customer cloud, or
|
|
304
|
+
on-premises environment.
|
|
305
|
+
|
|
306
|
+
The SDK does not choose or change runtime placement; it connects to the
|
|
307
|
+
tenant-specific API base supplied during onboarding. See
|
|
308
|
+
[Runtime location and Redis responsibilities](https://github.com/agenticdome/agenticdome-python-sdk/blob/main/docs/runtime-deployment.md) for
|
|
309
|
+
the deployment boundary and customer responsibilities.
|
|
310
|
+
|
|
269
311
|
### Who does what
|
|
270
312
|
|
|
271
313
|
| Persona / component | Responsibilities | Commercial model |
|
|
@@ -286,15 +328,23 @@ Start with a network-free simulation, then connect the same SDK to your assigned
|
|
|
286
328
|
|
|
287
329
|
```bash
|
|
288
330
|
pip install agenticdome-python-sdk
|
|
289
|
-
#
|
|
331
|
+
# Label the fixed demonstration as LangGraph and show one ALLOWED and one BLOCKED path.
|
|
290
332
|
agenticdome-demo --framework langgraph --scenario both
|
|
291
333
|
|
|
292
|
-
# Or
|
|
334
|
+
# Or repeat the fixed demonstration under every supported framework label.
|
|
293
335
|
agenticdome-demo --framework all --scenario both
|
|
294
336
|
agenticdome-demo --list-frameworks
|
|
295
337
|
```
|
|
296
338
|
|
|
297
|
-
This is visibly labelled **LOCAL SIMULATION — NOT CLOUD ENFORCEMENT**. It
|
|
339
|
+
This is visibly labelled **LOCAL SIMULATION — NOT CLOUD ENFORCEMENT**. It
|
|
340
|
+
evaluates two fixed inputs with a small deterministic bundled baseline through
|
|
341
|
+
the public core-client response shape. The `--framework` option changes the
|
|
342
|
+
payload label and integration guidance; it does not import, instantiate, or run
|
|
343
|
+
the selected framework. The simulation does not load tenant policy, issue
|
|
344
|
+
signed decision tokens or execution receipts, write cloud evidence, or provide
|
|
345
|
+
runtime assurance. To exercise a real adapter inside your own process without
|
|
346
|
+
credentials, set `AGENTICDOME_MODE=local_sim` in that application or framework
|
|
347
|
+
example. The SDK refuses that mode when `AGENTICDOME_PRODUCTION_MODE=true`.
|
|
298
348
|
|
|
299
349
|
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.
|
|
300
350
|
|
|
@@ -372,7 +422,7 @@ pip install agenticdome-python-sdk
|
|
|
372
422
|
| LlamaIndex | `pip install "agenticdome-python-sdk[llamaindex]"` |
|
|
373
423
|
| AWS Bedrock / Bedrock Agents | `pip install "agenticdome-python-sdk[bedrock]"` |
|
|
374
424
|
| MCP host / gateway | `pip install "agenticdome-python-sdk[mcp]"` |
|
|
375
|
-
|
|
|
425
|
+
| Optional cross-process delegation store | `pip install "agenticdome-python-sdk[redis]"` |
|
|
376
426
|
| Proof-of-possession helpers | `pip install "agenticdome-python-sdk[pop]"` |
|
|
377
427
|
| All optional integrations | `pip install "agenticdome-python-sdk[all]"` |
|
|
378
428
|
|
|
@@ -426,7 +476,10 @@ export AGENTICDOME_REQUIRE_TOKEN="true"
|
|
|
426
476
|
export AGENTICDOME_REPORT_INCIDENTS="true"
|
|
427
477
|
```
|
|
428
478
|
|
|
429
|
-
|
|
479
|
+
Redis is **not required for normal SDK policy calls** or when using an assigned
|
|
480
|
+
managed sidecar. Add customer-managed Redis only when manager-to-specialist
|
|
481
|
+
delegation is authorised in one application process, worker, or pod and its
|
|
482
|
+
one-time handoff state must be consumed in another:
|
|
430
483
|
|
|
431
484
|
```bash
|
|
432
485
|
export AGENTICDOME_REDIS_URL="redis://redis.internal:6379/0"
|
|
@@ -474,8 +527,8 @@ export AGENTICDOME_PRODUCTION_MODE="false" # production hardening (st
|
|
|
474
527
|
| `AGENTICDOME_REQUIRE_SESSION_ID` | boolean | framework-specific | Requires explicit session ID for strict audit mapping. |
|
|
475
528
|
| `AGENTICDOME_DEFAULT_TOOL_PLATFORM` | string | `unknown` / `python` | Fallback platform for tools. |
|
|
476
529
|
| `AGENTICDOME_HANDOFF_TOKEN_TTL_S` | integer | `900` | Delegation token TTL in seconds. |
|
|
477
|
-
| `AGENTICDOME_REDIS_URL` | string | empty | Optional Redis
|
|
478
|
-
| `AGENTICDOME_REDIS_KEY_PREFIX` | string | framework-specific |
|
|
530
|
+
| `AGENTICDOME_REDIS_URL` | string | empty | Optional customer-application Redis URL, needed only when one-time delegation state must cross processes, workers, or pods. It is unrelated to the managed sidecar's internal backing services. |
|
|
531
|
+
| `AGENTICDOME_REDIS_KEY_PREFIX` | string | framework-specific | Optional key prefix for the customer application's cross-process delegation store. |
|
|
479
532
|
| `AGENTICDOME_TOKEN_HMAC_SECRET` | string | empty | Optional secret-manager value used by the SDK to protect shared delegation state. Applications should not inspect or construct that state. |
|
|
480
533
|
| `AGENTICDOME_PRODUCTION_MODE` | boolean | `false` | Enables production hardening such as stable session ID enforcement. |
|
|
481
534
|
| `AGENTICDOME_REQUIRE_STABLE_SESSION_ID_IN_PROD` | boolean | `true` | Requires a stable session/run/trace ID when production mode is enabled. |
|
|
@@ -1228,10 +1281,10 @@ export AGENTICDOME_PRODUCTION_MODE="true"
|
|
|
1228
1281
|
export AGENTICDOME_REQUIRE_STABLE_SESSION_ID_IN_PROD="true"
|
|
1229
1282
|
export AGENTICDOME_FOUNDRY_REQUIRE_OUTPUT_SANITIZATION_IN_PROD="true"
|
|
1230
1283
|
|
|
1231
|
-
#
|
|
1232
|
-
export AGENTICDOME_REDIS_URL="redis://redis.internal:6379/0"
|
|
1233
|
-
export AGENTICDOME_REDIS_KEY_PREFIX="AgenticDome:foundry:handoff"
|
|
1234
|
-
export AGENTICDOME_TOKEN_HMAC_SECRET="replace-with-secret-from-kms"
|
|
1284
|
+
# Optional only when delegated execution crosses processes/workers/pods:
|
|
1285
|
+
# export AGENTICDOME_REDIS_URL="redis://redis.internal:6379/0"
|
|
1286
|
+
# export AGENTICDOME_REDIS_KEY_PREFIX="AgenticDome:foundry:handoff"
|
|
1287
|
+
# export AGENTICDOME_TOKEN_HMAC_SECRET="replace-with-secret-from-kms"
|
|
1235
1288
|
```
|
|
1236
1289
|
|
|
1237
1290
|
**Attach middleware, then secure the run boundary:**
|
|
@@ -1302,7 +1355,10 @@ def create_refund(ctx, args):
|
|
|
1302
1355
|
return {"refund_id": "rfnd_123", "status": "created"}
|
|
1303
1356
|
```
|
|
1304
1357
|
|
|
1305
|
-
**Delegated Foundry tool execution** —
|
|
1358
|
+
**Delegated Foundry tool execution** — authorization stores decision state in
|
|
1359
|
+
memory by default. Configure the optional Redis store only when the specialist
|
|
1360
|
+
executes in another process, worker, or pod; the specialist consumes and
|
|
1361
|
+
verifies the decision before executing:
|
|
1306
1362
|
|
|
1307
1363
|
```python
|
|
1308
1364
|
await firewall.authorize_manager_handoff(
|
|
@@ -1681,7 +1737,8 @@ firewall.pre_hook(
|
|
|
1681
1737
|
)
|
|
1682
1738
|
```
|
|
1683
1739
|
|
|
1684
|
-
The specialist side verifies a token passed in args or recovers it from
|
|
1740
|
+
The specialist side verifies a token passed in args or recovers it from the
|
|
1741
|
+
configured in-process or optional Redis store; stored tokens are consumed once:
|
|
1685
1742
|
|
|
1686
1743
|
```python
|
|
1687
1744
|
firewall.pre_hook(
|
|
@@ -1733,7 +1790,7 @@ export AGENTICDOME_AGNO_OTEL_ENABLED="true"
|
|
|
1733
1790
|
# export AGENTICDOME_TOKEN_HMAC_SECRET="replace-with-secret-from-your-secret-manager"
|
|
1734
1791
|
```
|
|
1735
1792
|
|
|
1736
|
-
Notes: environment configuration alone does not attach AgenticDome — call `attach_firewall(agent_or_team)`, register `create_hook_bundle()`, use the middleware/plugin helper, or assign `cybersec_pre_hook`, `cybersec_post_hook`, and `cybersec_tool_hook` directly. Hosted/remote tools can only be protected at the local request/response boundary.
|
|
1793
|
+
Notes: environment configuration alone does not attach AgenticDome — call `attach_firewall(agent_or_team)`, register `create_hook_bundle()`, use the middleware/plugin helper, or assign `cybersec_pre_hook`, `cybersec_post_hook`, and `cybersec_tool_hook` directly. Hosted/remote tools can only be protected at the local request/response boundary. Use stable `session_id`/`run_id`/`trace_id` values. Configure the optional Redis store only when delegation authorization and execution cross workers or pods.
|
|
1737
1794
|
|
|
1738
1795
|
Official references: [Agno SDK overview](https://docs.agno.com/features/sdk) · [Agent reference](https://docs.agno.com/reference/agents/agent)
|
|
1739
1796
|
|
|
@@ -2120,7 +2177,9 @@ result = await secure_refund(
|
|
|
2120
2177
|
)
|
|
2121
2178
|
```
|
|
2122
2179
|
|
|
2123
|
-
**Multi-agent delegation** —
|
|
2180
|
+
**Multi-agent delegation** — the in-process store is sufficient when
|
|
2181
|
+
authorization and execution stay in one process. Configure Redis only when the
|
|
2182
|
+
one-time delegation state must cross workers or pods:
|
|
2124
2183
|
|
|
2125
2184
|
```python
|
|
2126
2185
|
record = await firewall.authorize_manager_handoff(
|
|
@@ -2528,9 +2587,16 @@ The middleware supports configurable fail behavior:
|
|
|
2528
2587
|
- **Fail closed** (`AGENTICDOME_FAIL_CLOSED="true"`): block execution if security checks fail or the AgenticDome API is unavailable. **Use this in production.**
|
|
2529
2588
|
- **Fail open** (`AGENTICDOME_FAIL_CLOSED="false"`): allow execution for development or non-critical environments. Do not use in production unless you have compensating controls.
|
|
2530
2589
|
|
|
2531
|
-
### Redis
|
|
2590
|
+
### Optional Redis for cross-process delegation
|
|
2591
|
+
|
|
2592
|
+
Most customers do not need to install or configure Redis. Prompt screening,
|
|
2593
|
+
tool authorization, MCP checks, output review, and calls to an assigned runtime
|
|
2594
|
+
sidecar do not require customer-managed Redis. The Python adapters use an
|
|
2595
|
+
in-process token store by default.
|
|
2532
2596
|
|
|
2533
|
-
|
|
2597
|
+
Use Redis only when manager-to-specialist delegation is authorised in one
|
|
2598
|
+
application process, worker, or pod and the one-time handoff state must be
|
|
2599
|
+
consumed in another:
|
|
2534
2600
|
|
|
2535
2601
|
```bash
|
|
2536
2602
|
pip install "agenticdome-python-sdk[redis]"
|
|
@@ -2539,7 +2605,12 @@ export AGENTICDOME_REDIS_URL="redis://redis.example.internal:6379/0"
|
|
|
2539
2605
|
export AGENTICDOME_REDIS_KEY_PREFIX="AgenticDome:runtime:handoff"
|
|
2540
2606
|
```
|
|
2541
2607
|
|
|
2542
|
-
|
|
2608
|
+
This is the customer application's shared token store; it is not the Redis
|
|
2609
|
+
service operated behind an AgenticDome-managed sidecar. The SDK provides
|
|
2610
|
+
integrity-protected, one-time delegation state for supported shared-store
|
|
2611
|
+
deployments. Configure `AGENTICDOME_TOKEN_HMAC_SECRET` from a secret manager and
|
|
2612
|
+
let the SDK create and consume these records; applications should not construct
|
|
2613
|
+
or modify their internal representation.
|
|
2543
2614
|
|
|
2544
2615
|
### Production checklist
|
|
2545
2616
|
|
|
@@ -35,7 +35,14 @@ No account, API key, tenant, network connection, or third-party framework packag
|
|
|
35
35
|
agenticdome-demo --framework langgraph --scenario both
|
|
36
36
|
```
|
|
37
37
|
|
|
38
|
-
Look for `ALLOWED — TOOL WOULD EXECUTE` followed by `BLOCKED — TOOL WOULD NOT EXECUTE`.
|
|
38
|
+
Look for `ALLOWED — TOOL WOULD EXECUTE` followed by `BLOCKED — TOOL WOULD NOT EXECUTE`.
|
|
39
|
+
|
|
40
|
+
> **Offline demonstration—not runtime evidence.** This command evaluates two
|
|
41
|
+
> fixed onboarding scenarios with a deterministic, bundled public baseline. It
|
|
42
|
+
> does not contact AgenticDome, load tenant policy, execute either tool, or
|
|
43
|
+
> instantiate a LangGraph graph. `--framework langgraph` labels the example
|
|
44
|
+
> payload and points you to the matching integration; it is not a LangGraph
|
|
45
|
+
> integration test.
|
|
39
46
|
|
|
40
47
|
### 4. Select your framework
|
|
41
48
|
|
|
@@ -58,7 +65,13 @@ export AGENTICDOME_TENANT_ID="your_tenant_id"
|
|
|
58
65
|
agenticdome-demo --framework langgraph --scenario both --live
|
|
59
66
|
```
|
|
60
67
|
|
|
61
|
-
|
|
68
|
+
With `--live`, the same fixed scenarios are sent to the actual assigned
|
|
69
|
+
AgenticDome runtime sidecar, so their verdicts come from the customer's tenant
|
|
70
|
+
policy and engine. The live demo still does not instantiate LangGraph or prove
|
|
71
|
+
that an application has attached the framework adapter at every execution
|
|
72
|
+
boundary. Use the framework guide to attach the adapter, test the real
|
|
73
|
+
application path, and use AgenticDome Runtime Assurance for production
|
|
74
|
+
evidence.
|
|
62
75
|
|
|
63
76
|
```python
|
|
64
77
|
# The 30-second version: block a prompt-injected refund before it executes.
|
|
@@ -93,6 +106,21 @@ result = crew.kickoff() # hostile prompts, unsafe tools, and rogue
|
|
|
93
106
|
|
|
94
107
|
An agent can be hijacked while holding valid tokens, approved tools, and fully authorized paths. Legacy security sees a compliant request; the business sees a breach. AgenticDome adds an intent-aware enforcement layer at the exact boundaries where agents act:
|
|
95
108
|
|
|
109
|
+
### Identity is necessary, but it is not the action decision
|
|
110
|
+
|
|
111
|
+
Give every agent and workload a distinct principal and keep your identity
|
|
112
|
+
provider authoritative for authentication, scopes, conditional access,
|
|
113
|
+
credential lifecycle, and downstream entitlements. Then pass the identity the
|
|
114
|
+
application has actually authenticated into AgenticDome alongside the agent,
|
|
115
|
+
purpose, tool, final arguments, session, and delegation context. A valid token
|
|
116
|
+
proves access authority; it does not prove that a prompt-influenced action is
|
|
117
|
+
appropriate. AgenticDome complements IAM by evaluating that action at the
|
|
118
|
+
application-controlled execution boundary. It does not issue enterprise
|
|
119
|
+
identities or make a stolen credential safe.
|
|
120
|
+
|
|
121
|
+
For the architectural rationale, see
|
|
122
|
+
[An agent principal proves who—not why](https://www.agenticdome.io/research/agent-principal-identity).
|
|
123
|
+
|
|
96
124
|
| Control | What it stops | Where it runs |
|
|
97
125
|
| :--- | :--- | :--- |
|
|
98
126
|
| **Prompt ingress guardrails** | Prompt injection, jailbreaks, system-prompt extraction, instruction override, policy bypass | Before agent/LLM execution |
|
|
@@ -154,6 +182,20 @@ Customer application |
|
|
|
154
182
|
|
|
155
183
|
The SDK must be attached in application code; setting environment variables alone does not intercept a framework. The assigned sidecar authenticates the tenant and evaluates live requests. Tools still execute in the customer's environment or selected provider unless a separate execution service has been deliberately configured.
|
|
156
184
|
|
|
185
|
+
### Where the assigned runtime runs
|
|
186
|
+
|
|
187
|
+
- **Managed service:** AgenticDome assigns the tenant a managed sidecar in the
|
|
188
|
+
selected supported geographic region, subject to availability and the
|
|
189
|
+
customer's plan or contract.
|
|
190
|
+
- **Sovereign deployment:** the runtime is deployed within the contracted
|
|
191
|
+
customer-controlled boundary, such as a dedicated VPC, customer cloud, or
|
|
192
|
+
on-premises environment.
|
|
193
|
+
|
|
194
|
+
The SDK does not choose or change runtime placement; it connects to the
|
|
195
|
+
tenant-specific API base supplied during onboarding. See
|
|
196
|
+
[Runtime location and Redis responsibilities](https://github.com/agenticdome/agenticdome-python-sdk/blob/main/docs/runtime-deployment.md) for
|
|
197
|
+
the deployment boundary and customer responsibilities.
|
|
198
|
+
|
|
157
199
|
### Who does what
|
|
158
200
|
|
|
159
201
|
| Persona / component | Responsibilities | Commercial model |
|
|
@@ -174,15 +216,23 @@ Start with a network-free simulation, then connect the same SDK to your assigned
|
|
|
174
216
|
|
|
175
217
|
```bash
|
|
176
218
|
pip install agenticdome-python-sdk
|
|
177
|
-
#
|
|
219
|
+
# Label the fixed demonstration as LangGraph and show one ALLOWED and one BLOCKED path.
|
|
178
220
|
agenticdome-demo --framework langgraph --scenario both
|
|
179
221
|
|
|
180
|
-
# Or
|
|
222
|
+
# Or repeat the fixed demonstration under every supported framework label.
|
|
181
223
|
agenticdome-demo --framework all --scenario both
|
|
182
224
|
agenticdome-demo --list-frameworks
|
|
183
225
|
```
|
|
184
226
|
|
|
185
|
-
This is visibly labelled **LOCAL SIMULATION — NOT CLOUD ENFORCEMENT**. It
|
|
227
|
+
This is visibly labelled **LOCAL SIMULATION — NOT CLOUD ENFORCEMENT**. It
|
|
228
|
+
evaluates two fixed inputs with a small deterministic bundled baseline through
|
|
229
|
+
the public core-client response shape. The `--framework` option changes the
|
|
230
|
+
payload label and integration guidance; it does not import, instantiate, or run
|
|
231
|
+
the selected framework. The simulation does not load tenant policy, issue
|
|
232
|
+
signed decision tokens or execution receipts, write cloud evidence, or provide
|
|
233
|
+
runtime assurance. To exercise a real adapter inside your own process without
|
|
234
|
+
credentials, set `AGENTICDOME_MODE=local_sim` in that application or framework
|
|
235
|
+
example. The SDK refuses that mode when `AGENTICDOME_PRODUCTION_MODE=true`.
|
|
186
236
|
|
|
187
237
|
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.
|
|
188
238
|
|
|
@@ -260,7 +310,7 @@ pip install agenticdome-python-sdk
|
|
|
260
310
|
| LlamaIndex | `pip install "agenticdome-python-sdk[llamaindex]"` |
|
|
261
311
|
| AWS Bedrock / Bedrock Agents | `pip install "agenticdome-python-sdk[bedrock]"` |
|
|
262
312
|
| MCP host / gateway | `pip install "agenticdome-python-sdk[mcp]"` |
|
|
263
|
-
|
|
|
313
|
+
| Optional cross-process delegation store | `pip install "agenticdome-python-sdk[redis]"` |
|
|
264
314
|
| Proof-of-possession helpers | `pip install "agenticdome-python-sdk[pop]"` |
|
|
265
315
|
| All optional integrations | `pip install "agenticdome-python-sdk[all]"` |
|
|
266
316
|
|
|
@@ -314,7 +364,10 @@ export AGENTICDOME_REQUIRE_TOKEN="true"
|
|
|
314
364
|
export AGENTICDOME_REPORT_INCIDENTS="true"
|
|
315
365
|
```
|
|
316
366
|
|
|
317
|
-
|
|
367
|
+
Redis is **not required for normal SDK policy calls** or when using an assigned
|
|
368
|
+
managed sidecar. Add customer-managed Redis only when manager-to-specialist
|
|
369
|
+
delegation is authorised in one application process, worker, or pod and its
|
|
370
|
+
one-time handoff state must be consumed in another:
|
|
318
371
|
|
|
319
372
|
```bash
|
|
320
373
|
export AGENTICDOME_REDIS_URL="redis://redis.internal:6379/0"
|
|
@@ -362,8 +415,8 @@ export AGENTICDOME_PRODUCTION_MODE="false" # production hardening (st
|
|
|
362
415
|
| `AGENTICDOME_REQUIRE_SESSION_ID` | boolean | framework-specific | Requires explicit session ID for strict audit mapping. |
|
|
363
416
|
| `AGENTICDOME_DEFAULT_TOOL_PLATFORM` | string | `unknown` / `python` | Fallback platform for tools. |
|
|
364
417
|
| `AGENTICDOME_HANDOFF_TOKEN_TTL_S` | integer | `900` | Delegation token TTL in seconds. |
|
|
365
|
-
| `AGENTICDOME_REDIS_URL` | string | empty | Optional Redis
|
|
366
|
-
| `AGENTICDOME_REDIS_KEY_PREFIX` | string | framework-specific |
|
|
418
|
+
| `AGENTICDOME_REDIS_URL` | string | empty | Optional customer-application Redis URL, needed only when one-time delegation state must cross processes, workers, or pods. It is unrelated to the managed sidecar's internal backing services. |
|
|
419
|
+
| `AGENTICDOME_REDIS_KEY_PREFIX` | string | framework-specific | Optional key prefix for the customer application's cross-process delegation store. |
|
|
367
420
|
| `AGENTICDOME_TOKEN_HMAC_SECRET` | string | empty | Optional secret-manager value used by the SDK to protect shared delegation state. Applications should not inspect or construct that state. |
|
|
368
421
|
| `AGENTICDOME_PRODUCTION_MODE` | boolean | `false` | Enables production hardening such as stable session ID enforcement. |
|
|
369
422
|
| `AGENTICDOME_REQUIRE_STABLE_SESSION_ID_IN_PROD` | boolean | `true` | Requires a stable session/run/trace ID when production mode is enabled. |
|
|
@@ -1116,10 +1169,10 @@ export AGENTICDOME_PRODUCTION_MODE="true"
|
|
|
1116
1169
|
export AGENTICDOME_REQUIRE_STABLE_SESSION_ID_IN_PROD="true"
|
|
1117
1170
|
export AGENTICDOME_FOUNDRY_REQUIRE_OUTPUT_SANITIZATION_IN_PROD="true"
|
|
1118
1171
|
|
|
1119
|
-
#
|
|
1120
|
-
export AGENTICDOME_REDIS_URL="redis://redis.internal:6379/0"
|
|
1121
|
-
export AGENTICDOME_REDIS_KEY_PREFIX="AgenticDome:foundry:handoff"
|
|
1122
|
-
export AGENTICDOME_TOKEN_HMAC_SECRET="replace-with-secret-from-kms"
|
|
1172
|
+
# Optional only when delegated execution crosses processes/workers/pods:
|
|
1173
|
+
# export AGENTICDOME_REDIS_URL="redis://redis.internal:6379/0"
|
|
1174
|
+
# export AGENTICDOME_REDIS_KEY_PREFIX="AgenticDome:foundry:handoff"
|
|
1175
|
+
# export AGENTICDOME_TOKEN_HMAC_SECRET="replace-with-secret-from-kms"
|
|
1123
1176
|
```
|
|
1124
1177
|
|
|
1125
1178
|
**Attach middleware, then secure the run boundary:**
|
|
@@ -1190,7 +1243,10 @@ def create_refund(ctx, args):
|
|
|
1190
1243
|
return {"refund_id": "rfnd_123", "status": "created"}
|
|
1191
1244
|
```
|
|
1192
1245
|
|
|
1193
|
-
**Delegated Foundry tool execution** —
|
|
1246
|
+
**Delegated Foundry tool execution** — authorization stores decision state in
|
|
1247
|
+
memory by default. Configure the optional Redis store only when the specialist
|
|
1248
|
+
executes in another process, worker, or pod; the specialist consumes and
|
|
1249
|
+
verifies the decision before executing:
|
|
1194
1250
|
|
|
1195
1251
|
```python
|
|
1196
1252
|
await firewall.authorize_manager_handoff(
|
|
@@ -1569,7 +1625,8 @@ firewall.pre_hook(
|
|
|
1569
1625
|
)
|
|
1570
1626
|
```
|
|
1571
1627
|
|
|
1572
|
-
The specialist side verifies a token passed in args or recovers it from
|
|
1628
|
+
The specialist side verifies a token passed in args or recovers it from the
|
|
1629
|
+
configured in-process or optional Redis store; stored tokens are consumed once:
|
|
1573
1630
|
|
|
1574
1631
|
```python
|
|
1575
1632
|
firewall.pre_hook(
|
|
@@ -1621,7 +1678,7 @@ export AGENTICDOME_AGNO_OTEL_ENABLED="true"
|
|
|
1621
1678
|
# export AGENTICDOME_TOKEN_HMAC_SECRET="replace-with-secret-from-your-secret-manager"
|
|
1622
1679
|
```
|
|
1623
1680
|
|
|
1624
|
-
Notes: environment configuration alone does not attach AgenticDome — call `attach_firewall(agent_or_team)`, register `create_hook_bundle()`, use the middleware/plugin helper, or assign `cybersec_pre_hook`, `cybersec_post_hook`, and `cybersec_tool_hook` directly. Hosted/remote tools can only be protected at the local request/response boundary.
|
|
1681
|
+
Notes: environment configuration alone does not attach AgenticDome — call `attach_firewall(agent_or_team)`, register `create_hook_bundle()`, use the middleware/plugin helper, or assign `cybersec_pre_hook`, `cybersec_post_hook`, and `cybersec_tool_hook` directly. Hosted/remote tools can only be protected at the local request/response boundary. Use stable `session_id`/`run_id`/`trace_id` values. Configure the optional Redis store only when delegation authorization and execution cross workers or pods.
|
|
1625
1682
|
|
|
1626
1683
|
Official references: [Agno SDK overview](https://docs.agno.com/features/sdk) · [Agent reference](https://docs.agno.com/reference/agents/agent)
|
|
1627
1684
|
|
|
@@ -2008,7 +2065,9 @@ result = await secure_refund(
|
|
|
2008
2065
|
)
|
|
2009
2066
|
```
|
|
2010
2067
|
|
|
2011
|
-
**Multi-agent delegation** —
|
|
2068
|
+
**Multi-agent delegation** — the in-process store is sufficient when
|
|
2069
|
+
authorization and execution stay in one process. Configure Redis only when the
|
|
2070
|
+
one-time delegation state must cross workers or pods:
|
|
2012
2071
|
|
|
2013
2072
|
```python
|
|
2014
2073
|
record = await firewall.authorize_manager_handoff(
|
|
@@ -2416,9 +2475,16 @@ The middleware supports configurable fail behavior:
|
|
|
2416
2475
|
- **Fail closed** (`AGENTICDOME_FAIL_CLOSED="true"`): block execution if security checks fail or the AgenticDome API is unavailable. **Use this in production.**
|
|
2417
2476
|
- **Fail open** (`AGENTICDOME_FAIL_CLOSED="false"`): allow execution for development or non-critical environments. Do not use in production unless you have compensating controls.
|
|
2418
2477
|
|
|
2419
|
-
### Redis
|
|
2478
|
+
### Optional Redis for cross-process delegation
|
|
2479
|
+
|
|
2480
|
+
Most customers do not need to install or configure Redis. Prompt screening,
|
|
2481
|
+
tool authorization, MCP checks, output review, and calls to an assigned runtime
|
|
2482
|
+
sidecar do not require customer-managed Redis. The Python adapters use an
|
|
2483
|
+
in-process token store by default.
|
|
2420
2484
|
|
|
2421
|
-
|
|
2485
|
+
Use Redis only when manager-to-specialist delegation is authorised in one
|
|
2486
|
+
application process, worker, or pod and the one-time handoff state must be
|
|
2487
|
+
consumed in another:
|
|
2422
2488
|
|
|
2423
2489
|
```bash
|
|
2424
2490
|
pip install "agenticdome-python-sdk[redis]"
|
|
@@ -2427,7 +2493,12 @@ export AGENTICDOME_REDIS_URL="redis://redis.example.internal:6379/0"
|
|
|
2427
2493
|
export AGENTICDOME_REDIS_KEY_PREFIX="AgenticDome:runtime:handoff"
|
|
2428
2494
|
```
|
|
2429
2495
|
|
|
2430
|
-
|
|
2496
|
+
This is the customer application's shared token store; it is not the Redis
|
|
2497
|
+
service operated behind an AgenticDome-managed sidecar. The SDK provides
|
|
2498
|
+
integrity-protected, one-time delegation state for supported shared-store
|
|
2499
|
+
deployments. Configure `AGENTICDOME_TOKEN_HMAC_SECRET` from a secret manager and
|
|
2500
|
+
let the SDK create and consume these records; applications should not construct
|
|
2501
|
+
or modify their internal representation.
|
|
2431
2502
|
|
|
2432
2503
|
### Production checklist
|
|
2433
2504
|
|