Frameworks
Wire the ArmorIQ SDK into your agent framework. Adapters for Google ADK, LangChain, Strands, Langflow and CrewAI; raw-client pattern for the OpenAI and Anthropic SDKs and anything else.
ArmorIQ ships first-class adapters for several frameworks - the adapter wraps the tool-calling lifecycle and every tool call routes through the ArmorIQ loop. For anything without an adapter, use the raw-client pattern: call ArmorIQClient directly from inside your tool wrapper. Ten lines of glue code, works with anything.
Which frameworks have an adapter
| Framework | Adapter | Guide |
|---|---|---|
| Google ADK | ArmorIQADK (Python + TypeScript) | Google ADK guide |
| LangChain | ArmorIQLangChain (Python + TypeScript) | LangChain integration |
| Strands | ArmorIQStrands (Python + TypeScript) | Strands integration |
| Langflow | bundled component (Python) | Langflow integration |
| CrewAI | ArmorIQCrew (Python, token-only) | CrewAI integration |
Everything else uses the raw-client pattern, which works with any framework that lets you intercept a tool call before it runs. That includes the OpenAI and Anthropic SDKs directly, and any proprietary scaffold. Custom frameworks has worked examples for the OpenAI Assistants run loop, Anthropic tool_use blocks, CrewAI BaseTool and LangChain.
Integrations is the source of truth for adapter status, including the capability differences between the full adapters and CrewAI's narrower token-only path. Check there rather than this table if the two ever disagree.
Raw client means the SDK doesn't ship a framework-specific wrapper - you write a tiny adapter (about 10 lines) that calls client.invoke() from inside your existing tool. The approach is the same across every framework; examples for the common ones are on the Custom frameworks page.
How integration works at a high level
Every framework has somewhere to intercept tool calls before they hit the network:
- Google ADK -
after_model_callback/before_tool_callback/after_tool_callbackon theAgent. - Strands -
AfterModelCallEvent/BeforeToolCallEvent/AfterToolCallEventlifecycle hooks. - LangChain - a callback handler passed via
config={"callbacks": [...]}. - CrewAI - subclass
BaseTool, override_run(). - OpenAI Assistants - the
function_callstep in your run loop. - Anthropic -
tool_useblocks in the response stream.
In each case you insert the ArmorIQ three-step flow:
capture_plan → get_intent_token → invokeThe ADK, Strands and LangChain adapters wire those hooks for you. The raw-client pattern asks you to wire them yourself - more verbose, but works everywhere.
Which page should I read?
Google ADK
One-line integration: ArmorIQADK().install(root_agent). Multi-user support, async-native, recursive through sub-agents.
Custom frameworks
The universal raw-client pattern. Covers CrewAI, LangChain, OpenAI Assistants, Anthropic tool-use, and any proprietary scaffold.
Roadmap
Planned improvements to the shipped adapters:
- CrewAI - per-user scoping and per-call policy enforcement. The adapter today mints one token per
kickoff()and routes tool calls through the proxy, but does not evaluate policy per call. - CrewAI on TypeScript - the adapter is currently Python-only.
Current status always lives on Integrations.
Multi-org Workflow
Work with multiple ArmorIQ organizations from one account. List orgs, switch scope, pre-select an org at login, and understand the API key lifecycle.
Google ADK
Secure your Google ADK agent with ArmorIQ in three lines of glue code. Per-user scoping, per-tool policy enforcement, async-native, and delegation-aware.