FRAMEWORK_INTEGRATIONS
HELM Framework Integration Guide
How frameworks embed HELM governance using the Portable Effect Model.
Framework Index
| Framework | Language | Integration Pattern | Adapter Status |
|---|---|---|---|
| OpenAI Agents SDK | Python | Middleware | Reference |
| OpenAI Agents SDK | JS/TS | Middleware | Reference |
| Google ADK | Python | Tool wrapper | Reference |
| LangGraph | Python | Node wrapper | Reference |
| LangChain | Python | Callback handler | Reference |
| Mastra | TypeScript | Middleware | Reference |
| CrewAI | Python | Tool wrapper | Reference |
| AI SDK (generic) | TypeScript | Middleware | Reference |
| Microsoft Agent Framework | .NET | Middleware | Planned |
| AutoGen | Python | Tool wrapper | Planned |
| DSPy | Python | Module wrapper | Planned |
| Semantic Kernel | C# | Filter | Planned |
Integration Patterns
Pattern 1: OpenAI Agents SDK (Python)
from openai import agents
from helm_sdk import HelmGovernance
# Create governed agent
governance = HelmGovernance(
endpoint="http://localhost:4001",
preset="engineering",
jurisdiction="eu-gdpr",
)
agent = agents.Agent(
name="code-assistant",
model="gpt-4o",
tools=[...],
middleware=[governance.middleware()],
)
# Every tool call automatically goes through HELM
result = agent.run("Deploy the new version")
# → HELM intercepts → PDP evaluates → ALLOW/DENY/ESCALATE
Pattern 2: OpenAI Agents SDK (JS/TS)
import { Agent } from 'openai/agents';
import { HelmGovernance } from '@mindburn/helm';
const governance = new HelmGovernance({
endpoint: 'http://localhost:4001',
preset: 'engineering',
});
const agent = new Agent({
name: 'code-assistant',
model: 'gpt-4o',
tools: [...],
middleware: [governance.middleware()],
});
Pattern 3: Google ADK
from google.adk import Agent
from helm_sdk import HelmGovernance
governance = HelmGovernance(
endpoint="http://localhost:4001",
auth_mode="google_oauth",
)
agent = Agent(
model="gemini-2.0-flash",
tools=[governance.wrap(tool) for tool in my_tools],
)
Pattern 4: LangGraph
from langgraph.graph import StateGraph
from helm_sdk import HelmGovernance
governance = HelmGovernance(endpoint="http://localhost:4001")
def governed_tool_node(state):
tool_call = state["tool_calls"][-1]
result = governance.submit_effect(
tool_call["name"],
tool_call["args"],
)
if result.verdict == "DENY":
return {"denied": True, "reason": result.reason}
# Execute tool and complete
output = execute_tool(tool_call)
governance.complete(result.intent_id, success=True)
return {"output": output}
graph = StateGraph(...)
graph.add_node("tools", governed_tool_node)
Pattern 5: Mastra (TypeScript)
import { Agent } from "mastra";
import { HelmGovernance } from "@mindburn/helm";
const governance = new HelmGovernance({
endpoint: "http://localhost:4001",
preset: "engineering",
});
const agent = new Agent({
name: "mastra-agent",
model: openai("gpt-4o"),
tools: governance.wrapAll(myTools),
});
Pattern 6: CrewAI
from crewai import Agent, Task, Crew
from helm_sdk import HelmGovernance
governance = HelmGovernance(endpoint="http://localhost:4001")
agent = Agent(
role="analyst",
goal="Analyze data",
tools=[governance.wrap(tool) for tool in tools],
)
Pattern 7: AI SDK (generic)
import { generateText } from "ai";
import { HelmGovernance } from "@mindburn/helm";
const governance = new HelmGovernance({ endpoint: "http://localhost:4001" });
const result = await generateText({
model: openai("gpt-4o"),
tools: governance.wrapAll(myTools),
prompt: "Analyze the sales data",
});
Framework Adapter Structure
Each framework adapter follows this structure:
sdk/{language}/src/adapters/{framework}/
├── adapter.{ext} # Core adapter implementation
├── middleware.{ext} # Middleware/interceptor (if pattern A/B)
├── wrapper.{ext} # Tool wrapper (if pattern C)
└── README.md # Framework-specific guide
Testing Framework Integrations
# Run framework integration tests
helm test frameworks --framework openai-agents
helm test frameworks --framework langgraph
helm test frameworks --all