agenticdome-python-sdk 1.1.3__tar.gz → 1.1.4__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 (56) hide show
  1. {agenticdome_python_sdk-1.1.3/agenticdome_python_sdk.egg-info → agenticdome_python_sdk-1.1.4}/PKG-INFO +89 -52
  2. {agenticdome_python_sdk-1.1.3 → agenticdome_python_sdk-1.1.4}/README.md +56 -22
  3. {agenticdome_python_sdk-1.1.3 → agenticdome_python_sdk-1.1.4/agenticdome_python_sdk.egg-info}/PKG-INFO +89 -52
  4. {agenticdome_python_sdk-1.1.3 → agenticdome_python_sdk-1.1.4}/agenticdome_python_sdk.egg-info/SOURCES.txt +3 -0
  5. agenticdome_python_sdk-1.1.4/agenticdome_python_sdk.egg-info/requires.txt +81 -0
  6. agenticdome_python_sdk-1.1.4/agenticdome_sdk/__init__.py +18 -0
  7. {agenticdome_python_sdk-1.1.3 → agenticdome_python_sdk-1.1.4}/agenticdome_sdk/client.py +153 -9
  8. agenticdome_python_sdk-1.1.4/agenticdome_sdk/identity.py +129 -0
  9. {agenticdome_python_sdk-1.1.3 → agenticdome_python_sdk-1.1.4}/agenticdome_sdk/langgraph.py +34 -0
  10. {agenticdome_python_sdk-1.1.3 → agenticdome_python_sdk-1.1.4}/agenticdome_sdk/microsoft_agent_framework.py +3 -0
  11. {agenticdome_python_sdk-1.1.3 → agenticdome_python_sdk-1.1.4}/agenticdome_sdk/microsoft_ai_foundry.py +1 -0
  12. agenticdome_python_sdk-1.1.4/agenticdome_sdk/proof.py +80 -0
  13. {agenticdome_python_sdk-1.1.3 → agenticdome_python_sdk-1.1.4}/examples/crewai_agenticdome_firewall.py +1 -1
  14. {agenticdome_python_sdk-1.1.3 → agenticdome_python_sdk-1.1.4}/pyproject.toml +34 -30
  15. {agenticdome_python_sdk-1.1.3 → agenticdome_python_sdk-1.1.4}/tests/test_agno_integration.py +1 -1
  16. {agenticdome_python_sdk-1.1.3 → agenticdome_python_sdk-1.1.4}/tests/test_aws_bedrock_integration.py +1 -1
  17. {agenticdome_python_sdk-1.1.3 → agenticdome_python_sdk-1.1.4}/tests/test_client.py +63 -0
  18. {agenticdome_python_sdk-1.1.3 → agenticdome_python_sdk-1.1.4}/tests/test_crewai_integration.py +1 -1
  19. {agenticdome_python_sdk-1.1.3 → agenticdome_python_sdk-1.1.4}/tests/test_google_adk_integration.py +1 -1
  20. agenticdome_python_sdk-1.1.4/tests/test_identity_context.py +40 -0
  21. {agenticdome_python_sdk-1.1.3 → agenticdome_python_sdk-1.1.4}/tests/test_langgraph_integration.py +5 -5
  22. agenticdome_python_sdk-1.1.4/tests/test_live_tenant.py +113 -0
  23. {agenticdome_python_sdk-1.1.3 → agenticdome_python_sdk-1.1.4}/tests/test_llamaindex_integration.py +1 -1
  24. {agenticdome_python_sdk-1.1.3 → agenticdome_python_sdk-1.1.4}/tests/test_microsoft_agent_framework_integration.py +1 -1
  25. {agenticdome_python_sdk-1.1.3 → agenticdome_python_sdk-1.1.4}/tests/test_microsoft_ai_foundry_integration.py +1 -1
  26. {agenticdome_python_sdk-1.1.3 → agenticdome_python_sdk-1.1.4}/tests/test_openai_agents_integration.py +1 -1
  27. {agenticdome_python_sdk-1.1.3 → agenticdome_python_sdk-1.1.4}/tests/test_packaging_contract.py +26 -2
  28. {agenticdome_python_sdk-1.1.3 → agenticdome_python_sdk-1.1.4}/tests/test_pydanticai_integration.py +2 -2
  29. agenticdome_python_sdk-1.1.3/agenticdome_python_sdk.egg-info/requires.txt +0 -77
  30. agenticdome_python_sdk-1.1.3/agenticdome_sdk/__init__.py +0 -10
  31. agenticdome_python_sdk-1.1.3/tests/test_live_tenant.py +0 -67
  32. {agenticdome_python_sdk-1.1.3 → agenticdome_python_sdk-1.1.4}/LICENSE +0 -0
  33. {agenticdome_python_sdk-1.1.3 → agenticdome_python_sdk-1.1.4}/MANIFEST.in +0 -0
  34. {agenticdome_python_sdk-1.1.3 → agenticdome_python_sdk-1.1.4}/agenticdome_python_sdk.egg-info/dependency_links.txt +0 -0
  35. {agenticdome_python_sdk-1.1.3 → agenticdome_python_sdk-1.1.4}/agenticdome_python_sdk.egg-info/top_level.txt +0 -0
  36. {agenticdome_python_sdk-1.1.3 → agenticdome_python_sdk-1.1.4}/agenticdome_sdk/agno.py +0 -0
  37. {agenticdome_python_sdk-1.1.3 → agenticdome_python_sdk-1.1.4}/agenticdome_sdk/aws_bedrock.py +0 -0
  38. {agenticdome_python_sdk-1.1.3 → agenticdome_python_sdk-1.1.4}/agenticdome_sdk/crewai.py +0 -0
  39. {agenticdome_python_sdk-1.1.3 → agenticdome_python_sdk-1.1.4}/agenticdome_sdk/google_adk.py +0 -0
  40. {agenticdome_python_sdk-1.1.3 → agenticdome_python_sdk-1.1.4}/agenticdome_sdk/llamaindex.py +0 -0
  41. {agenticdome_python_sdk-1.1.3 → agenticdome_python_sdk-1.1.4}/agenticdome_sdk/mcp_host.py +0 -0
  42. {agenticdome_python_sdk-1.1.3 → agenticdome_python_sdk-1.1.4}/agenticdome_sdk/openai_agents.py +0 -0
  43. {agenticdome_python_sdk-1.1.3 → agenticdome_python_sdk-1.1.4}/agenticdome_sdk/pydantic.py +0 -0
  44. {agenticdome_python_sdk-1.1.3 → agenticdome_python_sdk-1.1.4}/agenticdome_sdk/scenarios.py +0 -0
  45. {agenticdome_python_sdk-1.1.3 → agenticdome_python_sdk-1.1.4}/examples/agno_lateral_refund.py +0 -0
  46. {agenticdome_python_sdk-1.1.3 → agenticdome_python_sdk-1.1.4}/examples/ai_foundry_callback_export.py +0 -0
  47. {agenticdome_python_sdk-1.1.3 → agenticdome_python_sdk-1.1.4}/examples/attack_demo.py +0 -0
  48. {agenticdome_python_sdk-1.1.3 → agenticdome_python_sdk-1.1.4}/examples/crewai_lateral_refund.py +0 -0
  49. {agenticdome_python_sdk-1.1.3 → agenticdome_python_sdk-1.1.4}/examples/mcp_remote_patch.py +0 -0
  50. {agenticdome_python_sdk-1.1.3 → agenticdome_python_sdk-1.1.4}/examples/mesh_output_redaction.py +0 -0
  51. {agenticdome_python_sdk-1.1.3 → agenticdome_python_sdk-1.1.4}/examples/microsoft_metadata_exfil.py +0 -0
  52. {agenticdome_python_sdk-1.1.3 → agenticdome_python_sdk-1.1.4}/examples/salesforce_hidden_bcc.py +0 -0
  53. {agenticdome_python_sdk-1.1.3 → agenticdome_python_sdk-1.1.4}/examples/servicenow_delete_logs.py +0 -0
  54. {agenticdome_python_sdk-1.1.3 → agenticdome_python_sdk-1.1.4}/setup.cfg +0 -0
  55. {agenticdome_python_sdk-1.1.3 → agenticdome_python_sdk-1.1.4}/setup.py +0 -0
  56. {agenticdome_python_sdk-1.1.3 → agenticdome_python_sdk-1.1.4}/tests/test_mcp_host_integration.py +0 -0
@@ -1,10 +1,10 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: agenticdome-python-sdk
3
- Version: 1.1.3
3
+ Version: 1.1.4
4
4
  Summary: Official Python SDK for AgenticDome security guardrails, DLP, tool authorization, and multi-agent delegation enforcement.
5
5
  Author: AgenticDome
6
6
  License: Proprietary
7
- Project-URL: Homepage, https://au.agenticdome.io
7
+ Project-URL: Homepage, https://www.agenticdome.io
8
8
  Project-URL: Repository, https://github.com/agenticdome/agenticdome-python-sdk
9
9
  Project-URL: Documentation, https://github.com/agenticdome/agenticdome-python-sdk#readme
10
10
  Project-URL: Issues, https://github.com/agenticdome/agenticdome-python-sdk/issues
@@ -27,56 +27,59 @@ License-File: LICENSE
27
27
  Requires-Dist: requests>=2.31.0
28
28
  Requires-Dist: urllib3>=2.0.0
29
29
  Provides-Extra: crewai
30
- Requires-Dist: crewai>=1.15.2; extra == "crewai"
30
+ Requires-Dist: crewai==1.15.5; extra == "crewai"
31
31
  Provides-Extra: redis
32
32
  Requires-Dist: redis>=4.5.0; extra == "redis"
33
+ Provides-Extra: pop
34
+ Requires-Dist: cryptography>=42.0.0; extra == "pop"
33
35
  Provides-Extra: pydanticai
34
- Requires-Dist: pydantic-ai>=2.10.0; extra == "pydanticai"
36
+ Requires-Dist: pydantic-ai==2.14.1; extra == "pydanticai"
35
37
  Requires-Dist: anyio>=4.0.0; extra == "pydanticai"
36
38
  Provides-Extra: pydantic
37
- Requires-Dist: pydantic-ai>=2.10.0; extra == "pydantic"
39
+ Requires-Dist: pydantic-ai==2.14.1; extra == "pydantic"
38
40
  Requires-Dist: anyio>=4.0.0; extra == "pydantic"
39
41
  Provides-Extra: langgraph
40
- Requires-Dist: langgraph>=1.2.9; extra == "langgraph"
41
- Requires-Dist: langchain-core>=1.4.9; extra == "langgraph"
42
+ Requires-Dist: langgraph==1.2.9; extra == "langgraph"
43
+ Requires-Dist: langchain-core==1.5.0; extra == "langgraph"
42
44
  Requires-Dist: anyio>=4.0.0; extra == "langgraph"
43
45
  Provides-Extra: microsoft
44
46
  Provides-Extra: foundry
45
- Requires-Dist: azure-ai-projects>=2.3.0; extra == "foundry"
46
- Requires-Dist: azure-identity>=1.25.3; extra == "foundry"
47
+ Requires-Dist: azure-ai-projects==2.3.0; extra == "foundry"
48
+ Requires-Dist: azure-identity==1.25.3; extra == "foundry"
47
49
  Provides-Extra: agno
48
- Requires-Dist: agno>=2.7.3; extra == "agno"
50
+ Requires-Dist: agno==2.8.0; extra == "agno"
49
51
  Provides-Extra: openai-agents
50
- Requires-Dist: openai-agents>=0.18.2; extra == "openai-agents"
52
+ Requires-Dist: openai-agents==0.18.3; extra == "openai-agents"
51
53
  Provides-Extra: mcp
52
- Requires-Dist: mcp>=1.26.0; extra == "mcp"
54
+ Requires-Dist: mcp<=1.28.1,>=1.26.0; extra == "mcp"
53
55
  Provides-Extra: bedrock
54
- Requires-Dist: boto3>=1.43.48; extra == "bedrock"
56
+ Requires-Dist: boto3==1.43.52; extra == "bedrock"
55
57
  Provides-Extra: aws-bedrock
56
- Requires-Dist: boto3>=1.43.48; extra == "aws-bedrock"
58
+ Requires-Dist: boto3==1.43.52; extra == "aws-bedrock"
57
59
  Provides-Extra: llamaindex
58
- Requires-Dist: llama-index>=0.14.23; extra == "llamaindex"
60
+ Requires-Dist: llama-index==0.14.23; extra == "llamaindex"
59
61
  Provides-Extra: llama-index
60
- Requires-Dist: llama-index>=0.14.23; extra == "llama-index"
62
+ Requires-Dist: llama-index==0.14.23; extra == "llama-index"
61
63
  Provides-Extra: google-adk
62
- Requires-Dist: google-adk>=2.4.0; extra == "google-adk"
64
+ Requires-Dist: google-adk==2.5.0; extra == "google-adk"
63
65
  Provides-Extra: adk
64
- Requires-Dist: google-adk>=2.4.0; extra == "adk"
66
+ Requires-Dist: google-adk==2.5.0; extra == "adk"
65
67
  Provides-Extra: all
66
- Requires-Dist: crewai>=1.15.2; extra == "all"
68
+ Requires-Dist: crewai==1.15.5; extra == "all"
67
69
  Requires-Dist: redis>=4.5.0; extra == "all"
68
- Requires-Dist: pydantic-ai>=2.10.0; extra == "all"
70
+ Requires-Dist: cryptography>=42.0.0; extra == "all"
71
+ Requires-Dist: pydantic-ai==2.14.1; extra == "all"
69
72
  Requires-Dist: anyio>=4.0.0; extra == "all"
70
- Requires-Dist: langgraph>=1.2.9; extra == "all"
71
- Requires-Dist: langchain-core>=1.4.9; extra == "all"
72
- Requires-Dist: agno>=2.7.3; extra == "all"
73
- Requires-Dist: azure-ai-projects>=2.3.0; extra == "all"
74
- Requires-Dist: azure-identity>=1.25.3; extra == "all"
75
- Requires-Dist: openai-agents>=0.18.2; extra == "all"
76
- Requires-Dist: mcp>=1.26.0; extra == "all"
77
- Requires-Dist: boto3>=1.43.48; extra == "all"
78
- Requires-Dist: llama-index>=0.14.23; extra == "all"
79
- Requires-Dist: google-adk>=2.4.0; extra == "all"
73
+ Requires-Dist: langgraph==1.2.9; extra == "all"
74
+ Requires-Dist: langchain-core==1.5.0; extra == "all"
75
+ Requires-Dist: agno==2.8.0; extra == "all"
76
+ Requires-Dist: azure-ai-projects==2.3.0; extra == "all"
77
+ Requires-Dist: azure-identity==1.25.3; extra == "all"
78
+ Requires-Dist: openai-agents==0.18.3; extra == "all"
79
+ Requires-Dist: mcp<=1.28.1,>=1.26.0; extra == "all"
80
+ Requires-Dist: boto3==1.43.52; extra == "all"
81
+ Requires-Dist: llama-index==0.14.23; extra == "all"
82
+ Requires-Dist: google-adk==2.5.0; extra == "all"
80
83
  Provides-Extra: dev
81
84
  Requires-Dist: pytest>=8.0.0; extra == "dev"
82
85
  Requires-Dist: ruff>=0.5.0; extra == "dev"
@@ -155,7 +158,7 @@ Your local Python runtime executes agents, tools, workflows, and framework-speci
155
158
  [ LOCAL ENTERPRISE RUNTIME PERIMETER ] [ AGENTICDOME CENTRAL PLANE ]
156
159
 
157
160
  +-------------------------------------------------+ +-----------------------------+
158
- | Python Agent Runtime | | https://au.agenticdome.io |
161
+ | Python Agent Runtime | | https://demo-sidecar.agenticdome.io |
159
162
  | CrewAI / PydanticAI / LangGraph / Microsoft AF / AI Foundry / Agno / OpenAI Agents / MCP Hosts / Bedrock / Google ADK / LlamaIndex | | Centralized Policy Engine |
160
163
  +-------------------------------------------------+ +-----------------------------+
161
164
  | | ^ ^
@@ -225,15 +228,48 @@ Authorizes tool calls before execution using:
225
228
 
226
229
  AgenticDome can transparently authorize multi-agent delegation workflows and issue decision tokens that bind:
227
230
 
231
+ - Originating human subject, when present
232
+ - Ordered and nested agent actor chain
228
233
  - Source manager agent
229
234
  - Target specialist agent
230
235
  - Tool name
231
236
  - Tool arguments
232
237
  - Session ID
238
+ - Trace and lineage root/parent IDs
239
+ - Intent digest, policy binding, authorized scopes, and trust epochs
233
240
  - Tenant context
234
241
  - Policy decision
235
242
 
236
- This helps prevent unauthorized lateral privilege escalation between agents.
243
+ Execution verification consumes the server-side call budget and checks revocation state. Optional proof-bound decisions use a DPoP-style signed JWT tied to the decision token hash; sending the public-key thumbprint alone is not treated as proof.
244
+
245
+ Install the proof helper extra and create a runtime-held key:
246
+
247
+ ```bash
248
+ pip install "agenticdome-python-sdk[pop]"
249
+ ```
250
+
251
+ ```python
252
+ from agenticdome_sdk import create_dpop_proof, generate_rsa_proof_key
253
+
254
+ proof_key = generate_rsa_proof_key()
255
+ # Pass proof_key["thumbprint"] as proof_thumbprint when authorizing.
256
+ proof = create_dpop_proof(
257
+ proof_key["private_key_pem"],
258
+ access_token=decision_token,
259
+ method="POST",
260
+ uri="/a2a",
261
+ )
262
+ client.a2a_verify_decision_token_rpc(
263
+ decision_token,
264
+ tool_name=tool_name,
265
+ tool_args=tool_args,
266
+ agent_id=worker_id,
267
+ source_agent_id=manager_id,
268
+ proof_token=proof,
269
+ )
270
+ ```
271
+
272
+ This helps prevent unauthorized lateral privilege escalation and stolen-token replay between agents.
237
273
 
238
274
  ### Inline Output Data Loss Prevention, DLP
239
275
 
@@ -302,6 +338,7 @@ Install the extra for the framework you use:
302
338
  | AWS Bedrock / Bedrock Agents | `pip install "agenticdome-python-sdk[bedrock]"` |
303
339
  | MCP host / gateway | `pip install "agenticdome-python-sdk[mcp]"` |
304
340
  | Redis token storage | `pip install "agenticdome-python-sdk[redis]"` |
341
+ | Proof-of-possession helpers | `pip install "agenticdome-python-sdk[pop]"` |
305
342
  | All optional integrations | `pip install "agenticdome-python-sdk[all]"` |
306
343
 
307
344
  Some adapters are dependency-light at import time. Google ADK, LlamaIndex, Bedrock, MCP, and Microsoft helpers can wrap local boundaries without forcing one exact runtime stack; install the framework packages your application actually uses.
@@ -315,8 +352,8 @@ Set these environment variables in your local shell, container, CI/CD environmen
315
352
  ### Required Variables
316
353
 
317
354
  ```bash
318
- # Regional gateway base URL.
319
- export AGENTICDOME_API_BASE="https://au.agenticdome.io"
355
+ # Tenant runtime sidecar URL. Do not use the control-plane website URL here.
356
+ export AGENTICDOME_API_BASE="https://demo-sidecar.agenticdome.io"
320
357
 
321
358
  # Secure access token generated in the AgenticDome console.
322
359
  export AGENTICDOME_API_KEY="your_api_key_abc123..."
@@ -409,7 +446,7 @@ Set these values in the same place you configure your Python application runtime
409
446
  Minimum production configuration:
410
447
 
411
448
  ```bash
412
- export AGENTICDOME_API_BASE="https://au.agenticdome.io"
449
+ export AGENTICDOME_API_BASE="https://demo-sidecar.agenticdome.io"
413
450
  export AGENTICDOME_API_KEY="your_api_key"
414
451
  export AGENTICDOME_TENANT_ID="your_tenant_id"
415
452
  export AGENTICDOME_FAIL_CLOSED="true"
@@ -569,7 +606,7 @@ secure_refund = firewall.wrap_delegated_tool_handler(
569
606
 
570
607
  | Environment Variable | Type | Default | Description |
571
608
  | :--- | :--- | :--- | :--- |
572
- | `AGENTICDOME_API_BASE` | string | required | AgenticDome regional API and console endpoint, for example `https://au.agenticdome.io`. |
609
+ | `AGENTICDOME_API_BASE` | string | required | Tenant runtime sidecar origin, for example `https://demo-sidecar.agenticdome.io`. This is separate from the control-plane console URL. |
573
610
  | `AGENTICDOME_API_KEY` | string | required | API key generated in the AgenticDome console. |
574
611
  | `AGENTICDOME_TENANT_ID` | string | required | Tenant or organization isolation namespace. |
575
612
  | `AGENTICDOME_PLATFORM` | string | framework-specific | Runtime platform label included in policy context. |
@@ -777,7 +814,7 @@ Use the core client when you own the runtime loop or have a custom gateway. This
777
814
  from agenticdome_sdk.client import AgentGuardClient
778
815
 
779
816
  client = AgentGuardClient(
780
- api_base="https://au.agenticdome.io",
817
+ api_base="https://demo-sidecar.agenticdome.io",
781
818
  api_key="your-api-key",
782
819
  tenant_id="your-tenant-id",
783
820
  timeout=20,
@@ -1132,7 +1169,7 @@ pip install "agenticdome-python-sdk[pydanticai]"
1132
1169
  [ PYDANTICAI AGENT RUNTIME PERIMETER ] [ AGENTICDOME CONTROL PLANE ]
1133
1170
 
1134
1171
  +-------------------------------------------------+ +-----------------------------+
1135
- | Agent.run() Execution Loop | | https://au.agenticdome.io |
1172
+ | Agent.run() Execution Loop | | https://demo-sidecar.agenticdome.io |
1136
1173
  +-------------------------------------------------+ +-----------------------------+
1137
1174
  | | ^ ^
1138
1175
  | 1. before_runner_init | 4. after | Verdict / DLP |
@@ -1261,7 +1298,7 @@ PydanticAI lifecycle hook APIs have evolved. Current PydanticAI documents `pydan
1261
1298
  - If compatible legacy lifecycle decorators are available, `attach_to_agent()` attaches prompt ingress and egress DLP hooks.
1262
1299
  - If native `Hooks` capabilities are available, `create_hooks()` returns a capability object you can pass into `Agent(..., capabilities=[...])`.
1263
1300
  - If lifecycle decorators are not available, `@firewall.secure_tool(...)` still protects tool execution.
1264
- - In production mode, configure API base, API key, tenant ID, and stable session IDs.
1301
+ - In production mode, configure the tenant runtime sidecar, API key, tenant ID, and stable session IDs.
1265
1302
  - `AGENTICDOME_BLOCK_ON_SENSITIVE_OUTPUT=true` means AgenticDome may ask Mesh to block sensitive output; the SDK only blocks when the policy response verdict is `BLOCKED`.
1266
1303
 
1267
1304
  ---
@@ -1297,7 +1334,7 @@ pip install "agenticdome-python-sdk[langgraph]"
1297
1334
  [ LANGGRAPH STATEGRAPH RUNTIME ] [ AGENTICDOME CONTROL PLANE ]
1298
1335
 
1299
1336
  +-----------------------------------------------+ +-----------------------------+
1300
- | StateGraph / CompiledStateGraph | | https://au.agenticdome.io |
1337
+ | StateGraph / CompiledStateGraph | | https://demo-sidecar.agenticdome.io |
1301
1338
  +-----------------------------------------------+ +-----------------------------+
1302
1339
  | | ^ ^
1303
1340
  | 1. user message | 2. tool calls | 4. verdict / token | validate
@@ -1512,7 +1549,7 @@ Install the Microsoft Agent Framework packages used by your application separate
1512
1549
  [ MICROSOFT AGENT FRAMEWORK PYTHON RUNTIME ] [ AGENTICDOME CONTROL PLANE ]
1513
1550
 
1514
1551
  +------------------------------------------------+ +-----------------------------+
1515
- | Agent.run / Workflow.run / Function Tool | | https://au.agenticdome.io |
1552
+ | Agent.run / Workflow.run / Function Tool | | https://demo-sidecar.agenticdome.io |
1516
1553
  +------------------------------------------------+ +-----------------------------+
1517
1554
  | | ^ ^
1518
1555
  | 1. input text | 2. tool args | verdict / token | validate
@@ -1709,7 +1746,7 @@ The Foundry integration supports:
1709
1746
  - Direct tool-argument stripping, lightweight JSON-schema validation, and sanitized-argument execution when AgenticDome returns safer arguments
1710
1747
  - Enterprise identity context propagation for Entra IDs, roles/scopes, Foundry project IDs, and Purview or sensitivity labels
1711
1748
  - Production-mode stable session ID enforcement and output-sanitization requirements
1712
- - Output DLP through Mesh using the required AgenticDome API base URL, API key, and tenant ID
1749
+ - Output DLP through Mesh using the required tenant runtime sidecar URL, API key, and tenant ID
1713
1750
  - Structured-output preservation by parsing sanitized JSON back to dictionaries/lists where possible
1714
1751
  - Local rate limits, input/output/tool-argument size limits, retries, circuit breaker behavior, audit logging, and OpenTelemetry span events
1715
1752
  - Streaming response sanitization through `sanitize_streaming_response()`
@@ -1735,7 +1772,7 @@ If your application uses Microsoft Agent Framework hosted agents, install the Fo
1735
1772
  Foundry threat-contract calls use bearer authentication:
1736
1773
 
1737
1774
  ```bash
1738
- export AGENTICDOME_API_BASE="https://au.agenticdome.io"
1775
+ export AGENTICDOME_API_BASE="https://demo-sidecar.agenticdome.io"
1739
1776
  export AGENTICDOME_BEARER_TOKEN="your_foundry_threat_contract_bearer_token"
1740
1777
  ```
1741
1778
 
@@ -1894,7 +1931,7 @@ from agenticdome_sdk.microsoft_ai_foundry import (
1894
1931
  - Production deployments should pass a stable `session_id`, `run_id`, `trace_id`, `conversation_id`, or `thread_id`; generated fallback IDs are intended for local development only.
1895
1932
  - Pass Entra identity, roles/scopes, Foundry project IDs, and Purview/sensitivity labels on `ctx` or `policy_context` so server-side policy can make identity-aware decisions.
1896
1933
  - If a Foundry hosted tool executes entirely inside a remote provider runtime, this local Python SDK can protect the local request/response boundary but cannot inspect inside the remote execution environment.
1897
- - Microsoft AI Foundry requires the standard AgenticDome API base URL, API key, and tenant ID. Threat-contract prompt and tool analysis also require `AGENTICDOME_BEARER_TOKEN`.
1934
+ - Microsoft AI Foundry requires the tenant runtime sidecar URL, API key, and tenant ID. Threat-contract prompt and tool analysis also require `AGENTICDOME_BEARER_TOKEN`.
1898
1935
 
1899
1936
  Official references:
1900
1937
 
@@ -2991,7 +3028,7 @@ If you need to call AgenticDome APIs manually, use the core SDK client.
2991
3028
  from agenticdome_sdk.client import AgentGuardClient
2992
3029
 
2993
3030
  client = AgentGuardClient(
2994
- api_base="https://au.agenticdome.io",
3031
+ api_base="https://demo-sidecar.agenticdome.io",
2995
3032
  api_key="your-api-key",
2996
3033
  tenant_id="your-tenant-id",
2997
3034
  timeout=20,
@@ -3012,7 +3049,7 @@ client.report_incident(
3012
3049
  from agenticdome_sdk.client import AgentGuardClient
3013
3050
 
3014
3051
  client = AgentGuardClient(
3015
- api_base="https://au.agenticdome.io",
3052
+ api_base="https://demo-sidecar.agenticdome.io",
3016
3053
  api_key="your-api-key",
3017
3054
  tenant_id="your-tenant-id",
3018
3055
  timeout=20,
@@ -3040,7 +3077,7 @@ print(result)
3040
3077
  from agenticdome_sdk.client import AgentGuardClient
3041
3078
 
3042
3079
  client = AgentGuardClient(
3043
- api_base="https://au.agenticdome.io",
3080
+ api_base="https://demo-sidecar.agenticdome.io",
3044
3081
  api_key="your-api-key",
3045
3082
  tenant_id="your-tenant-id",
3046
3083
  timeout=20,
@@ -3076,7 +3113,7 @@ print(result)
3076
3113
  from agenticdome_sdk.client import AgentGuardClient
3077
3114
 
3078
3115
  client = AgentGuardClient(
3079
- api_base="https://au.agenticdome.io",
3116
+ api_base="https://demo-sidecar.agenticdome.io",
3080
3117
  api_key="your-api-key",
3081
3118
  tenant_id="your-tenant-id",
3082
3119
  timeout=20,
@@ -3113,7 +3150,7 @@ print(authorization)
3113
3150
  from agenticdome_sdk.client import AgentGuardClient
3114
3151
 
3115
3152
  client = AgentGuardClient(
3116
- api_base="https://au.agenticdome.io",
3153
+ api_base="https://demo-sidecar.agenticdome.io",
3117
3154
  api_key="your-api-key",
3118
3155
  tenant_id="your-tenant-id",
3119
3156
  timeout=20,
@@ -3144,7 +3181,7 @@ print(verification)
3144
3181
  from agenticdome_sdk.client import AgentGuardClient
3145
3182
 
3146
3183
  client = AgentGuardClient(
3147
- api_base="https://au.agenticdome.io",
3184
+ api_base="https://demo-sidecar.agenticdome.io",
3148
3185
  api_key="your-api-key",
3149
3186
  tenant_id="your-tenant-id",
3150
3187
  timeout=20,
@@ -3193,7 +3230,7 @@ In-memory token storage is suitable for local development and single-process wor
3193
3230
  ## Recommended Production Settings
3194
3231
 
3195
3232
  ```bash
3196
- export AGENTICDOME_API_BASE="https://au.agenticdome.io"
3233
+ export AGENTICDOME_API_BASE="https://demo-sidecar.agenticdome.io"
3197
3234
  export AGENTICDOME_API_KEY="your_api_key"
3198
3235
  export AGENTICDOME_TENANT_ID="your_tenant_id"
3199
3236
 
@@ -3418,7 +3455,7 @@ For strict security-policy validation, add:
3418
3455
  export AGENTICDOME_LIVE_EXPECT_STRICT=1
3419
3456
  ```
3420
3457
 
3421
- The live tenant test performs real `guardrail_validate()` and `mesh_validate()` calls through the core client. Framework-specific behavior remains covered by the offline adapter test matrix above, because those tests assert where each framework boundary calls the shared AgenticDome client and how it handles policy decisions.
3458
+ The live tenant suite performs real `guardrail_validate()` and `mesh_validate()` calls, verifies that one request can carry an originating human subject and upstream agent actor together, and queries the tenant's active threat-signature bundle through the public SDK method. With `AGENTICDOME_LIVE_EXPECT_STRICT=1`, it additionally requires sensitive output enforcement plus a signed bundle whose provenance is `agenticdome_private_collection`. Framework-specific behavior remains covered by the offline adapter test matrix above.
3422
3459
 
3423
3460
  ---
3424
3461
 
@@ -68,7 +68,7 @@ Your local Python runtime executes agents, tools, workflows, and framework-speci
68
68
  [ LOCAL ENTERPRISE RUNTIME PERIMETER ] [ AGENTICDOME CENTRAL PLANE ]
69
69
 
70
70
  +-------------------------------------------------+ +-----------------------------+
71
- | Python Agent Runtime | | https://au.agenticdome.io |
71
+ | Python Agent Runtime | | https://demo-sidecar.agenticdome.io |
72
72
  | CrewAI / PydanticAI / LangGraph / Microsoft AF / AI Foundry / Agno / OpenAI Agents / MCP Hosts / Bedrock / Google ADK / LlamaIndex | | Centralized Policy Engine |
73
73
  +-------------------------------------------------+ +-----------------------------+
74
74
  | | ^ ^
@@ -138,15 +138,48 @@ Authorizes tool calls before execution using:
138
138
 
139
139
  AgenticDome can transparently authorize multi-agent delegation workflows and issue decision tokens that bind:
140
140
 
141
+ - Originating human subject, when present
142
+ - Ordered and nested agent actor chain
141
143
  - Source manager agent
142
144
  - Target specialist agent
143
145
  - Tool name
144
146
  - Tool arguments
145
147
  - Session ID
148
+ - Trace and lineage root/parent IDs
149
+ - Intent digest, policy binding, authorized scopes, and trust epochs
146
150
  - Tenant context
147
151
  - Policy decision
148
152
 
149
- This helps prevent unauthorized lateral privilege escalation between agents.
153
+ Execution verification consumes the server-side call budget and checks revocation state. Optional proof-bound decisions use a DPoP-style signed JWT tied to the decision token hash; sending the public-key thumbprint alone is not treated as proof.
154
+
155
+ Install the proof helper extra and create a runtime-held key:
156
+
157
+ ```bash
158
+ pip install "agenticdome-python-sdk[pop]"
159
+ ```
160
+
161
+ ```python
162
+ from agenticdome_sdk import create_dpop_proof, generate_rsa_proof_key
163
+
164
+ proof_key = generate_rsa_proof_key()
165
+ # Pass proof_key["thumbprint"] as proof_thumbprint when authorizing.
166
+ proof = create_dpop_proof(
167
+ proof_key["private_key_pem"],
168
+ access_token=decision_token,
169
+ method="POST",
170
+ uri="/a2a",
171
+ )
172
+ client.a2a_verify_decision_token_rpc(
173
+ decision_token,
174
+ tool_name=tool_name,
175
+ tool_args=tool_args,
176
+ agent_id=worker_id,
177
+ source_agent_id=manager_id,
178
+ proof_token=proof,
179
+ )
180
+ ```
181
+
182
+ This helps prevent unauthorized lateral privilege escalation and stolen-token replay between agents.
150
183
 
151
184
  ### Inline Output Data Loss Prevention, DLP
152
185
 
@@ -215,6 +248,7 @@ Install the extra for the framework you use:
215
248
  | AWS Bedrock / Bedrock Agents | `pip install "agenticdome-python-sdk[bedrock]"` |
216
249
  | MCP host / gateway | `pip install "agenticdome-python-sdk[mcp]"` |
217
250
  | Redis token storage | `pip install "agenticdome-python-sdk[redis]"` |
251
+ | Proof-of-possession helpers | `pip install "agenticdome-python-sdk[pop]"` |
218
252
  | All optional integrations | `pip install "agenticdome-python-sdk[all]"` |
219
253
 
220
254
  Some adapters are dependency-light at import time. Google ADK, LlamaIndex, Bedrock, MCP, and Microsoft helpers can wrap local boundaries without forcing one exact runtime stack; install the framework packages your application actually uses.
@@ -228,8 +262,8 @@ Set these environment variables in your local shell, container, CI/CD environmen
228
262
  ### Required Variables
229
263
 
230
264
  ```bash
231
- # Regional gateway base URL.
232
- export AGENTICDOME_API_BASE="https://au.agenticdome.io"
265
+ # Tenant runtime sidecar URL. Do not use the control-plane website URL here.
266
+ export AGENTICDOME_API_BASE="https://demo-sidecar.agenticdome.io"
233
267
 
234
268
  # Secure access token generated in the AgenticDome console.
235
269
  export AGENTICDOME_API_KEY="your_api_key_abc123..."
@@ -322,7 +356,7 @@ Set these values in the same place you configure your Python application runtime
322
356
  Minimum production configuration:
323
357
 
324
358
  ```bash
325
- export AGENTICDOME_API_BASE="https://au.agenticdome.io"
359
+ export AGENTICDOME_API_BASE="https://demo-sidecar.agenticdome.io"
326
360
  export AGENTICDOME_API_KEY="your_api_key"
327
361
  export AGENTICDOME_TENANT_ID="your_tenant_id"
328
362
  export AGENTICDOME_FAIL_CLOSED="true"
@@ -482,7 +516,7 @@ secure_refund = firewall.wrap_delegated_tool_handler(
482
516
 
483
517
  | Environment Variable | Type | Default | Description |
484
518
  | :--- | :--- | :--- | :--- |
485
- | `AGENTICDOME_API_BASE` | string | required | AgenticDome regional API and console endpoint, for example `https://au.agenticdome.io`. |
519
+ | `AGENTICDOME_API_BASE` | string | required | Tenant runtime sidecar origin, for example `https://demo-sidecar.agenticdome.io`. This is separate from the control-plane console URL. |
486
520
  | `AGENTICDOME_API_KEY` | string | required | API key generated in the AgenticDome console. |
487
521
  | `AGENTICDOME_TENANT_ID` | string | required | Tenant or organization isolation namespace. |
488
522
  | `AGENTICDOME_PLATFORM` | string | framework-specific | Runtime platform label included in policy context. |
@@ -690,7 +724,7 @@ Use the core client when you own the runtime loop or have a custom gateway. This
690
724
  from agenticdome_sdk.client import AgentGuardClient
691
725
 
692
726
  client = AgentGuardClient(
693
- api_base="https://au.agenticdome.io",
727
+ api_base="https://demo-sidecar.agenticdome.io",
694
728
  api_key="your-api-key",
695
729
  tenant_id="your-tenant-id",
696
730
  timeout=20,
@@ -1045,7 +1079,7 @@ pip install "agenticdome-python-sdk[pydanticai]"
1045
1079
  [ PYDANTICAI AGENT RUNTIME PERIMETER ] [ AGENTICDOME CONTROL PLANE ]
1046
1080
 
1047
1081
  +-------------------------------------------------+ +-----------------------------+
1048
- | Agent.run() Execution Loop | | https://au.agenticdome.io |
1082
+ | Agent.run() Execution Loop | | https://demo-sidecar.agenticdome.io |
1049
1083
  +-------------------------------------------------+ +-----------------------------+
1050
1084
  | | ^ ^
1051
1085
  | 1. before_runner_init | 4. after | Verdict / DLP |
@@ -1174,7 +1208,7 @@ PydanticAI lifecycle hook APIs have evolved. Current PydanticAI documents `pydan
1174
1208
  - If compatible legacy lifecycle decorators are available, `attach_to_agent()` attaches prompt ingress and egress DLP hooks.
1175
1209
  - If native `Hooks` capabilities are available, `create_hooks()` returns a capability object you can pass into `Agent(..., capabilities=[...])`.
1176
1210
  - If lifecycle decorators are not available, `@firewall.secure_tool(...)` still protects tool execution.
1177
- - In production mode, configure API base, API key, tenant ID, and stable session IDs.
1211
+ - In production mode, configure the tenant runtime sidecar, API key, tenant ID, and stable session IDs.
1178
1212
  - `AGENTICDOME_BLOCK_ON_SENSITIVE_OUTPUT=true` means AgenticDome may ask Mesh to block sensitive output; the SDK only blocks when the policy response verdict is `BLOCKED`.
1179
1213
 
1180
1214
  ---
@@ -1210,7 +1244,7 @@ pip install "agenticdome-python-sdk[langgraph]"
1210
1244
  [ LANGGRAPH STATEGRAPH RUNTIME ] [ AGENTICDOME CONTROL PLANE ]
1211
1245
 
1212
1246
  +-----------------------------------------------+ +-----------------------------+
1213
- | StateGraph / CompiledStateGraph | | https://au.agenticdome.io |
1247
+ | StateGraph / CompiledStateGraph | | https://demo-sidecar.agenticdome.io |
1214
1248
  +-----------------------------------------------+ +-----------------------------+
1215
1249
  | | ^ ^
1216
1250
  | 1. user message | 2. tool calls | 4. verdict / token | validate
@@ -1425,7 +1459,7 @@ Install the Microsoft Agent Framework packages used by your application separate
1425
1459
  [ MICROSOFT AGENT FRAMEWORK PYTHON RUNTIME ] [ AGENTICDOME CONTROL PLANE ]
1426
1460
 
1427
1461
  +------------------------------------------------+ +-----------------------------+
1428
- | Agent.run / Workflow.run / Function Tool | | https://au.agenticdome.io |
1462
+ | Agent.run / Workflow.run / Function Tool | | https://demo-sidecar.agenticdome.io |
1429
1463
  +------------------------------------------------+ +-----------------------------+
1430
1464
  | | ^ ^
1431
1465
  | 1. input text | 2. tool args | verdict / token | validate
@@ -1622,7 +1656,7 @@ The Foundry integration supports:
1622
1656
  - Direct tool-argument stripping, lightweight JSON-schema validation, and sanitized-argument execution when AgenticDome returns safer arguments
1623
1657
  - Enterprise identity context propagation for Entra IDs, roles/scopes, Foundry project IDs, and Purview or sensitivity labels
1624
1658
  - Production-mode stable session ID enforcement and output-sanitization requirements
1625
- - Output DLP through Mesh using the required AgenticDome API base URL, API key, and tenant ID
1659
+ - Output DLP through Mesh using the required tenant runtime sidecar URL, API key, and tenant ID
1626
1660
  - Structured-output preservation by parsing sanitized JSON back to dictionaries/lists where possible
1627
1661
  - Local rate limits, input/output/tool-argument size limits, retries, circuit breaker behavior, audit logging, and OpenTelemetry span events
1628
1662
  - Streaming response sanitization through `sanitize_streaming_response()`
@@ -1648,7 +1682,7 @@ If your application uses Microsoft Agent Framework hosted agents, install the Fo
1648
1682
  Foundry threat-contract calls use bearer authentication:
1649
1683
 
1650
1684
  ```bash
1651
- export AGENTICDOME_API_BASE="https://au.agenticdome.io"
1685
+ export AGENTICDOME_API_BASE="https://demo-sidecar.agenticdome.io"
1652
1686
  export AGENTICDOME_BEARER_TOKEN="your_foundry_threat_contract_bearer_token"
1653
1687
  ```
1654
1688
 
@@ -1807,7 +1841,7 @@ from agenticdome_sdk.microsoft_ai_foundry import (
1807
1841
  - Production deployments should pass a stable `session_id`, `run_id`, `trace_id`, `conversation_id`, or `thread_id`; generated fallback IDs are intended for local development only.
1808
1842
  - Pass Entra identity, roles/scopes, Foundry project IDs, and Purview/sensitivity labels on `ctx` or `policy_context` so server-side policy can make identity-aware decisions.
1809
1843
  - If a Foundry hosted tool executes entirely inside a remote provider runtime, this local Python SDK can protect the local request/response boundary but cannot inspect inside the remote execution environment.
1810
- - Microsoft AI Foundry requires the standard AgenticDome API base URL, API key, and tenant ID. Threat-contract prompt and tool analysis also require `AGENTICDOME_BEARER_TOKEN`.
1844
+ - Microsoft AI Foundry requires the tenant runtime sidecar URL, API key, and tenant ID. Threat-contract prompt and tool analysis also require `AGENTICDOME_BEARER_TOKEN`.
1811
1845
 
1812
1846
  Official references:
1813
1847
 
@@ -2904,7 +2938,7 @@ If you need to call AgenticDome APIs manually, use the core SDK client.
2904
2938
  from agenticdome_sdk.client import AgentGuardClient
2905
2939
 
2906
2940
  client = AgentGuardClient(
2907
- api_base="https://au.agenticdome.io",
2941
+ api_base="https://demo-sidecar.agenticdome.io",
2908
2942
  api_key="your-api-key",
2909
2943
  tenant_id="your-tenant-id",
2910
2944
  timeout=20,
@@ -2925,7 +2959,7 @@ client.report_incident(
2925
2959
  from agenticdome_sdk.client import AgentGuardClient
2926
2960
 
2927
2961
  client = AgentGuardClient(
2928
- api_base="https://au.agenticdome.io",
2962
+ api_base="https://demo-sidecar.agenticdome.io",
2929
2963
  api_key="your-api-key",
2930
2964
  tenant_id="your-tenant-id",
2931
2965
  timeout=20,
@@ -2953,7 +2987,7 @@ print(result)
2953
2987
  from agenticdome_sdk.client import AgentGuardClient
2954
2988
 
2955
2989
  client = AgentGuardClient(
2956
- api_base="https://au.agenticdome.io",
2990
+ api_base="https://demo-sidecar.agenticdome.io",
2957
2991
  api_key="your-api-key",
2958
2992
  tenant_id="your-tenant-id",
2959
2993
  timeout=20,
@@ -2989,7 +3023,7 @@ print(result)
2989
3023
  from agenticdome_sdk.client import AgentGuardClient
2990
3024
 
2991
3025
  client = AgentGuardClient(
2992
- api_base="https://au.agenticdome.io",
3026
+ api_base="https://demo-sidecar.agenticdome.io",
2993
3027
  api_key="your-api-key",
2994
3028
  tenant_id="your-tenant-id",
2995
3029
  timeout=20,
@@ -3026,7 +3060,7 @@ print(authorization)
3026
3060
  from agenticdome_sdk.client import AgentGuardClient
3027
3061
 
3028
3062
  client = AgentGuardClient(
3029
- api_base="https://au.agenticdome.io",
3063
+ api_base="https://demo-sidecar.agenticdome.io",
3030
3064
  api_key="your-api-key",
3031
3065
  tenant_id="your-tenant-id",
3032
3066
  timeout=20,
@@ -3057,7 +3091,7 @@ print(verification)
3057
3091
  from agenticdome_sdk.client import AgentGuardClient
3058
3092
 
3059
3093
  client = AgentGuardClient(
3060
- api_base="https://au.agenticdome.io",
3094
+ api_base="https://demo-sidecar.agenticdome.io",
3061
3095
  api_key="your-api-key",
3062
3096
  tenant_id="your-tenant-id",
3063
3097
  timeout=20,
@@ -3106,7 +3140,7 @@ In-memory token storage is suitable for local development and single-process wor
3106
3140
  ## Recommended Production Settings
3107
3141
 
3108
3142
  ```bash
3109
- export AGENTICDOME_API_BASE="https://au.agenticdome.io"
3143
+ export AGENTICDOME_API_BASE="https://demo-sidecar.agenticdome.io"
3110
3144
  export AGENTICDOME_API_KEY="your_api_key"
3111
3145
  export AGENTICDOME_TENANT_ID="your_tenant_id"
3112
3146
 
@@ -3331,7 +3365,7 @@ For strict security-policy validation, add:
3331
3365
  export AGENTICDOME_LIVE_EXPECT_STRICT=1
3332
3366
  ```
3333
3367
 
3334
- The live tenant test performs real `guardrail_validate()` and `mesh_validate()` calls through the core client. Framework-specific behavior remains covered by the offline adapter test matrix above, because those tests assert where each framework boundary calls the shared AgenticDome client and how it handles policy decisions.
3368
+ The live tenant suite performs real `guardrail_validate()` and `mesh_validate()` calls, verifies that one request can carry an originating human subject and upstream agent actor together, and queries the tenant's active threat-signature bundle through the public SDK method. With `AGENTICDOME_LIVE_EXPECT_STRICT=1`, it additionally requires sensitive output enforcement plus a signed bundle whose provenance is `agenticdome_private_collection`. Framework-specific behavior remains covered by the offline adapter test matrix above.
3335
3369
 
3336
3370
  ---
3337
3371