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.
Files changed (102) hide show
  1. {agenticdome_python_sdk-1.2.15 → agenticdome_python_sdk-1.2.17}/PKG-INFO +107 -36
  2. {agenticdome_python_sdk-1.2.15 → agenticdome_python_sdk-1.2.17}/README.md +91 -20
  3. {agenticdome_python_sdk-1.2.15 → agenticdome_python_sdk-1.2.17}/agenticdome_python_sdk.egg-info/PKG-INFO +107 -36
  4. {agenticdome_python_sdk-1.2.15 → agenticdome_python_sdk-1.2.17}/agenticdome_python_sdk.egg-info/SOURCES.txt +1 -0
  5. {agenticdome_python_sdk-1.2.15 → agenticdome_python_sdk-1.2.17}/agenticdome_python_sdk.egg-info/requires.txt +15 -15
  6. {agenticdome_python_sdk-1.2.15 → agenticdome_python_sdk-1.2.17}/agenticdome_sdk/demo.py +14 -3
  7. {agenticdome_python_sdk-1.2.15 → agenticdome_python_sdk-1.2.17}/docs/frameworks/README.md +18 -2
  8. {agenticdome_python_sdk-1.2.15 → agenticdome_python_sdk-1.2.17}/docs/frameworks/agno.md +15 -0
  9. {agenticdome_python_sdk-1.2.15 → agenticdome_python_sdk-1.2.17}/docs/frameworks/autogen.md +15 -0
  10. {agenticdome_python_sdk-1.2.15 → agenticdome_python_sdk-1.2.17}/docs/frameworks/aws-bedrock.md +15 -0
  11. {agenticdome_python_sdk-1.2.15 → agenticdome_python_sdk-1.2.17}/docs/frameworks/claude-agent-sdk.md +15 -0
  12. {agenticdome_python_sdk-1.2.15 → agenticdome_python_sdk-1.2.17}/docs/frameworks/crewai.md +16 -3
  13. {agenticdome_python_sdk-1.2.15 → agenticdome_python_sdk-1.2.17}/docs/frameworks/custom-python.md +15 -0
  14. {agenticdome_python_sdk-1.2.15 → agenticdome_python_sdk-1.2.17}/docs/frameworks/google-adk.md +15 -0
  15. {agenticdome_python_sdk-1.2.15 → agenticdome_python_sdk-1.2.17}/docs/frameworks/langgraph.md +15 -0
  16. {agenticdome_python_sdk-1.2.15 → agenticdome_python_sdk-1.2.17}/docs/frameworks/llamaindex.md +15 -0
  17. {agenticdome_python_sdk-1.2.15 → agenticdome_python_sdk-1.2.17}/docs/frameworks/microsoft-agent-framework.md +15 -0
  18. {agenticdome_python_sdk-1.2.15 → agenticdome_python_sdk-1.2.17}/docs/frameworks/microsoft-ai-foundry.md +15 -0
  19. {agenticdome_python_sdk-1.2.15 → agenticdome_python_sdk-1.2.17}/docs/frameworks/openai-agents.md +15 -0
  20. {agenticdome_python_sdk-1.2.15 → agenticdome_python_sdk-1.2.17}/docs/frameworks/pydanticai.md +15 -0
  21. {agenticdome_python_sdk-1.2.15 → agenticdome_python_sdk-1.2.17}/docs/frameworks/smolagents.md +15 -0
  22. {agenticdome_python_sdk-1.2.15 → agenticdome_python_sdk-1.2.17}/docs/mcp-integration.md +82 -6
  23. agenticdome_python_sdk-1.2.17/docs/runtime-deployment.md +51 -0
  24. {agenticdome_python_sdk-1.2.15 → agenticdome_python_sdk-1.2.17}/examples/PRODUCTION_INTEGRATION.md +8 -0
  25. {agenticdome_python_sdk-1.2.15 → agenticdome_python_sdk-1.2.17}/examples/README.md +27 -3
  26. agenticdome_python_sdk-1.2.17/examples/frameworks/README.md +21 -0
  27. {agenticdome_python_sdk-1.2.15 → agenticdome_python_sdk-1.2.17}/pyproject.toml +16 -16
  28. {agenticdome_python_sdk-1.2.15 → agenticdome_python_sdk-1.2.17}/tests/test_framework_guides.py +22 -0
  29. {agenticdome_python_sdk-1.2.15 → agenticdome_python_sdk-1.2.17}/tests/test_local_simulation.py +56 -1
  30. {agenticdome_python_sdk-1.2.15 → agenticdome_python_sdk-1.2.17}/tests/test_mcp_launch_example.py +15 -0
  31. agenticdome_python_sdk-1.2.15/examples/frameworks/README.md +0 -13
  32. {agenticdome_python_sdk-1.2.15 → agenticdome_python_sdk-1.2.17}/CONTRIBUTING.md +0 -0
  33. {agenticdome_python_sdk-1.2.15 → agenticdome_python_sdk-1.2.17}/LICENSE +0 -0
  34. {agenticdome_python_sdk-1.2.15 → agenticdome_python_sdk-1.2.17}/MANIFEST.in +0 -0
  35. {agenticdome_python_sdk-1.2.15 → agenticdome_python_sdk-1.2.17}/NOTICE +0 -0
  36. {agenticdome_python_sdk-1.2.15 → agenticdome_python_sdk-1.2.17}/SECURITY.md +0 -0
  37. {agenticdome_python_sdk-1.2.15 → agenticdome_python_sdk-1.2.17}/agenticdome_python_sdk.egg-info/dependency_links.txt +0 -0
  38. {agenticdome_python_sdk-1.2.15 → agenticdome_python_sdk-1.2.17}/agenticdome_python_sdk.egg-info/entry_points.txt +0 -0
  39. {agenticdome_python_sdk-1.2.15 → agenticdome_python_sdk-1.2.17}/agenticdome_python_sdk.egg-info/top_level.txt +0 -0
  40. {agenticdome_python_sdk-1.2.15 → agenticdome_python_sdk-1.2.17}/agenticdome_sdk/__init__.py +0 -0
  41. {agenticdome_python_sdk-1.2.15 → agenticdome_python_sdk-1.2.17}/agenticdome_sdk/_framework_firewall.py +0 -0
  42. {agenticdome_python_sdk-1.2.15 → agenticdome_python_sdk-1.2.17}/agenticdome_sdk/_mode.py +0 -0
  43. {agenticdome_python_sdk-1.2.15 → agenticdome_python_sdk-1.2.17}/agenticdome_sdk/agno.py +0 -0
  44. {agenticdome_python_sdk-1.2.15 → agenticdome_python_sdk-1.2.17}/agenticdome_sdk/autogen.py +0 -0
  45. {agenticdome_python_sdk-1.2.15 → agenticdome_python_sdk-1.2.17}/agenticdome_sdk/aws_bedrock.py +0 -0
  46. {agenticdome_python_sdk-1.2.15 → agenticdome_python_sdk-1.2.17}/agenticdome_sdk/claude.py +0 -0
  47. {agenticdome_python_sdk-1.2.15 → agenticdome_python_sdk-1.2.17}/agenticdome_sdk/client.py +0 -0
  48. {agenticdome_python_sdk-1.2.15 → agenticdome_python_sdk-1.2.17}/agenticdome_sdk/crewai.py +0 -0
  49. {agenticdome_python_sdk-1.2.15 → agenticdome_python_sdk-1.2.17}/agenticdome_sdk/google_adk.py +0 -0
  50. {agenticdome_python_sdk-1.2.15 → agenticdome_python_sdk-1.2.17}/agenticdome_sdk/identity.py +0 -0
  51. {agenticdome_python_sdk-1.2.15 → agenticdome_python_sdk-1.2.17}/agenticdome_sdk/langgraph.py +0 -0
  52. {agenticdome_python_sdk-1.2.15 → agenticdome_python_sdk-1.2.17}/agenticdome_sdk/llamaindex.py +0 -0
  53. {agenticdome_python_sdk-1.2.15 → agenticdome_python_sdk-1.2.17}/agenticdome_sdk/mcp_host.py +0 -0
  54. {agenticdome_python_sdk-1.2.15 → agenticdome_python_sdk-1.2.17}/agenticdome_sdk/microsoft_agent_framework.py +0 -0
  55. {agenticdome_python_sdk-1.2.15 → agenticdome_python_sdk-1.2.17}/agenticdome_sdk/microsoft_ai_foundry.py +0 -0
  56. {agenticdome_python_sdk-1.2.15 → agenticdome_python_sdk-1.2.17}/agenticdome_sdk/openai_agents.py +0 -0
  57. {agenticdome_python_sdk-1.2.15 → agenticdome_python_sdk-1.2.17}/agenticdome_sdk/proof.py +0 -0
  58. {agenticdome_python_sdk-1.2.15 → agenticdome_python_sdk-1.2.17}/agenticdome_sdk/pydantic.py +0 -0
  59. {agenticdome_python_sdk-1.2.15 → agenticdome_python_sdk-1.2.17}/agenticdome_sdk/simulation.py +0 -0
  60. {agenticdome_python_sdk-1.2.15 → agenticdome_python_sdk-1.2.17}/agenticdome_sdk/smolagents.py +0 -0
  61. {agenticdome_python_sdk-1.2.15 → agenticdome_python_sdk-1.2.17}/docs/performance-evidence.md +0 -0
  62. {agenticdome_python_sdk-1.2.15 → agenticdome_python_sdk-1.2.17}/examples/attack_demo.py +0 -0
  63. {agenticdome_python_sdk-1.2.15 → agenticdome_python_sdk-1.2.17}/examples/crewai_agenticdome_firewall.py +0 -0
  64. {agenticdome_python_sdk-1.2.15 → agenticdome_python_sdk-1.2.17}/examples/frameworks/_shared.py +0 -0
  65. {agenticdome_python_sdk-1.2.15 → agenticdome_python_sdk-1.2.17}/examples/frameworks/agno.py +0 -0
  66. {agenticdome_python_sdk-1.2.15 → agenticdome_python_sdk-1.2.17}/examples/frameworks/autogen.py +0 -0
  67. {agenticdome_python_sdk-1.2.15 → agenticdome_python_sdk-1.2.17}/examples/frameworks/aws_bedrock.py +0 -0
  68. {agenticdome_python_sdk-1.2.15 → agenticdome_python_sdk-1.2.17}/examples/frameworks/claude_agent_sdk.py +0 -0
  69. {agenticdome_python_sdk-1.2.15 → agenticdome_python_sdk-1.2.17}/examples/frameworks/crewai.py +0 -0
  70. {agenticdome_python_sdk-1.2.15 → agenticdome_python_sdk-1.2.17}/examples/frameworks/custom_python.py +0 -0
  71. {agenticdome_python_sdk-1.2.15 → agenticdome_python_sdk-1.2.17}/examples/frameworks/google_adk.py +0 -0
  72. {agenticdome_python_sdk-1.2.15 → agenticdome_python_sdk-1.2.17}/examples/frameworks/langgraph.py +0 -0
  73. {agenticdome_python_sdk-1.2.15 → agenticdome_python_sdk-1.2.17}/examples/frameworks/llamaindex.py +0 -0
  74. {agenticdome_python_sdk-1.2.15 → agenticdome_python_sdk-1.2.17}/examples/frameworks/mcp.py +0 -0
  75. {agenticdome_python_sdk-1.2.15 → agenticdome_python_sdk-1.2.17}/examples/frameworks/microsoft_agent_framework.py +0 -0
  76. {agenticdome_python_sdk-1.2.15 → agenticdome_python_sdk-1.2.17}/examples/frameworks/microsoft_ai_foundry.py +0 -0
  77. {agenticdome_python_sdk-1.2.15 → agenticdome_python_sdk-1.2.17}/examples/frameworks/openai_agents.py +0 -0
  78. {agenticdome_python_sdk-1.2.15 → agenticdome_python_sdk-1.2.17}/examples/frameworks/pydanticai.py +0 -0
  79. {agenticdome_python_sdk-1.2.15 → agenticdome_python_sdk-1.2.17}/examples/frameworks/smolagents.py +0 -0
  80. {agenticdome_python_sdk-1.2.15 → agenticdome_python_sdk-1.2.17}/examples/langgraph_agenticdome_firewall.py +0 -0
  81. {agenticdome_python_sdk-1.2.15 → agenticdome_python_sdk-1.2.17}/examples/local_simulation_gallery.py +0 -0
  82. {agenticdome_python_sdk-1.2.15 → agenticdome_python_sdk-1.2.17}/examples/mcp_gateway_action_firewall.py +0 -0
  83. {agenticdome_python_sdk-1.2.15 → agenticdome_python_sdk-1.2.17}/setup.cfg +0 -0
  84. {agenticdome_python_sdk-1.2.15 → agenticdome_python_sdk-1.2.17}/setup.py +0 -0
  85. {agenticdome_python_sdk-1.2.15 → agenticdome_python_sdk-1.2.17}/tests/test_agno_integration.py +0 -0
  86. {agenticdome_python_sdk-1.2.15 → agenticdome_python_sdk-1.2.17}/tests/test_attack_demo.py +0 -0
  87. {agenticdome_python_sdk-1.2.15 → agenticdome_python_sdk-1.2.17}/tests/test_autogen_integration.py +0 -0
  88. {agenticdome_python_sdk-1.2.15 → agenticdome_python_sdk-1.2.17}/tests/test_aws_bedrock_integration.py +0 -0
  89. {agenticdome_python_sdk-1.2.15 → agenticdome_python_sdk-1.2.17}/tests/test_claude_integration.py +0 -0
  90. {agenticdome_python_sdk-1.2.15 → agenticdome_python_sdk-1.2.17}/tests/test_client.py +0 -0
  91. {agenticdome_python_sdk-1.2.15 → agenticdome_python_sdk-1.2.17}/tests/test_crewai_integration.py +0 -0
  92. {agenticdome_python_sdk-1.2.15 → agenticdome_python_sdk-1.2.17}/tests/test_execution_broker.py +0 -0
  93. {agenticdome_python_sdk-1.2.15 → agenticdome_python_sdk-1.2.17}/tests/test_google_adk_integration.py +0 -0
  94. {agenticdome_python_sdk-1.2.15 → agenticdome_python_sdk-1.2.17}/tests/test_identity_context.py +0 -0
  95. {agenticdome_python_sdk-1.2.15 → agenticdome_python_sdk-1.2.17}/tests/test_langgraph_integration.py +0 -0
  96. {agenticdome_python_sdk-1.2.15 → agenticdome_python_sdk-1.2.17}/tests/test_llamaindex_integration.py +0 -0
  97. {agenticdome_python_sdk-1.2.15 → agenticdome_python_sdk-1.2.17}/tests/test_mcp_host_integration.py +0 -0
  98. {agenticdome_python_sdk-1.2.15 → agenticdome_python_sdk-1.2.17}/tests/test_microsoft_agent_framework_integration.py +0 -0
  99. {agenticdome_python_sdk-1.2.15 → agenticdome_python_sdk-1.2.17}/tests/test_microsoft_ai_foundry_integration.py +0 -0
  100. {agenticdome_python_sdk-1.2.15 → agenticdome_python_sdk-1.2.17}/tests/test_openai_agents_integration.py +0 -0
  101. {agenticdome_python_sdk-1.2.15 → agenticdome_python_sdk-1.2.17}/tests/test_pydanticai_integration.py +0 -0
  102. {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.15
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.14,>=1.15.5; extra == "crewai"
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.27.1,>=2.16.0; extra == "pydanticai"
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.27.1,>=2.16.0; extra == "pydantic"
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.10,>=1.2.9; extra == "langgraph"
48
- Requires-Dist: langchain-core<=1.5.3,>=1.5.0; extra == "langgraph"
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.68,>=1.43.54; extra == "bedrock"
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,>=1.43.54; extra == "aws-bedrock"
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.135,>=0.2.126; extra == "claude"
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.135,>=0.2.126; extra == "claude-agent-sdk"
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.14,>=1.15.5; extra == "all"
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.27.1,>=2.16.0; extra == "all"
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.10,>=1.2.9; extra == "all"
90
- Requires-Dist: langchain-core<=1.5.3,>=1.5.0; extra == "all"
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.68,>=1.43.54; extra == "all"
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.135,>=0.2.126; extra == "all"
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`. These are simulations: the example does not execute either tool.
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
- 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.
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
- # Show one ALLOWED and one BLOCKED action for LangGraph.
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 prove the same offline contract across all 15 integrations.
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 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`.
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
- | Redis token storage | `pip install "agenticdome-python-sdk[redis]"` |
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
- For distributed multi-worker deployments, add Redis so delegation tokens move across workers:
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 connection URL for distributed token storage. |
478
- | `AGENTICDOME_REDIS_KEY_PREFIX` | string | framework-specific | Redis key prefix. |
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
- # For distributed delegated execution:
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** — the authorization can store a decision token locally or in Redis; the specialist side consumes and verifies it before executing:
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 Redis/in-memory storage; stored tokens are consumed once:
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. For production teams and AgentOS deployments, configure Redis so delegation tokens are available across workers and pods, and use stable `session_id`/`run_id`/`trace_id` values.
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** — Redis is recommended when authorization and execution can happen in different workers or pods:
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 token store for production clusters
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
- In-memory token storage suits local development and single-process workers. For horizontally scaled deployments, use Redis so manager handoff tokens are shared across workers:
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
- The SDK provides integrity-protected, one-time delegation state for supported shared-store deployments. Configure `AGENTICDOME_TOKEN_HMAC_SECRET` from a secret manager and let the SDK create and consume these records; applications should not construct or modify their internal representation.
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`. These are simulations: the example does not execute either tool.
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
- 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.
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
- # Show one ALLOWED and one BLOCKED action for LangGraph.
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 prove the same offline contract across all 15 integrations.
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 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`.
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
- | Redis token storage | `pip install "agenticdome-python-sdk[redis]"` |
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
- For distributed multi-worker deployments, add Redis so delegation tokens move across workers:
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 connection URL for distributed token storage. |
366
- | `AGENTICDOME_REDIS_KEY_PREFIX` | string | framework-specific | Redis key prefix. |
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
- # For distributed delegated execution:
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** — the authorization can store a decision token locally or in Redis; the specialist side consumes and verifies it before executing:
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 Redis/in-memory storage; stored tokens are consumed once:
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. For production teams and AgentOS deployments, configure Redis so delegation tokens are available across workers and pods, and use stable `session_id`/`run_id`/`trace_id` values.
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** — Redis is recommended when authorization and execution can happen in different workers or pods:
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 token store for production clusters
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
- In-memory token storage suits local development and single-process workers. For horizontally scaled deployments, use Redis so manager handoff tokens are shared across workers:
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
- The SDK provides integrity-protected, one-time delegation state for supported shared-store deployments. Configure `AGENTICDOME_TOKEN_HMAC_SECRET` from a secret manager and let the SDK create and consume these records; applications should not construct or modify their internal representation.
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