Sdk cliFrameworks

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

FrameworkAdapterGuide
Google ADKArmorIQADK (Python + TypeScript)Google ADK guide
LangChainArmorIQLangChain (Python + TypeScript)LangChain integration
StrandsArmorIQStrands (Python + TypeScript)Strands integration
Langflowbundled component (Python)Langflow integration
CrewAIArmorIQCrew (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_callback on the Agent.
  • Strands - AfterModelCallEvent / BeforeToolCallEvent / AfterToolCallEvent lifecycle hooks.
  • LangChain - a callback handler passed via config={"callbacks": [...]}.
  • CrewAI - subclass BaseTool, override _run().
  • OpenAI Assistants - the function_call step in your run loop.
  • Anthropic - tool_use blocks in the response stream.

In each case you insert the ArmorIQ three-step flow:

capture_plan → get_intent_token → invoke

The 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?

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.

On this page