Docs / Integrations / Temporal
Temporal compatibility path
Use Temporal compatibility endpoint at activity boundaries. For new runtime families, use /adapters/http/* and the unified adapter contract.
Where to hook the intent check
Call Gvner before executing each side-effecting activity.
Include workflow/activity identifiers in
context.Persist returned
audit_id in workflow history for evidence correlation.Key endpoints
POST /temporal/intent — evaluate Temporal activity intentGET /runtime/adapters/contracts — contract checks (openclaw + temporal + http_webhook)GET /evidence/packet — export evidence for audits/incidentsGET /ops/incidents — incident correlation for denied/blocked executionPayload mapping
{
"tenant_id": "acme",
"agent_id": "temporal-activity-charge_customer",
"intent": "workflow.activity.charge_customer",
"requested_scopes": ["charge_card"],
"tool": "temporal_activity",
"context": {
"workflow_id": "billing-run-2026-02",
"workflow_type": "monthly_billing",
"activity_type": "charge_customer"
},
"requested_budget": 120.0,
"work_type": "execution"
}
Sample wrapper code
decision = post("/temporal/intent", payload, headers={"X-Tenant-Token": token})
if decision["decision"] != "ALLOWED":
# fail closed: abort activity path
return {"status": "blocked", "reason": decision["reason"], "audit_id": decision["audit_id"]}
# run activity side effect only after ALLOWED
result = execute_activity(activity_name, activity_input)
Fail-closed requirement
Required: unreachable governance endpoint, invalid response, or
DENIED must block activity execution.Relevant console pages
Evidence/export workflow
Every activity decision returns
audit_id for immutable linkage.Use Regulator Packet for external review submissions.