Integrations

Langflow

Add governed tool calling to a Langflow flow with the ArmorIQ node, no code required.

Langflow Integration

Python-only. The Langflow extension ships inside armoriq-sdk (Python). There is no equivalent in @armoriq/sdk (TypeScript). Langflow itself is a Python application, so this integration has no TypeScript counterpart to build.

Langflow builds agents visually, by wiring nodes on a canvas instead of writing code. The ArmorIQ Langflow extension adds a drag-in node, ArmorIQ Tool Calling Agent, that behaves like Langflow's built-in tool-calling agent, but routes every tool call the agent makes through ArmorIQ's plan, token, policy, and audit pipeline first.

Install

Available from armoriq-sdk 0.6.2+.

pip install "armoriq-sdk[langchain]"
langflow run

There is no separate Langflow package or plugin to install. Langflow discovers the ArmorIQ node automatically through the langflow.extensions Python entry point that armoriq-sdk registers in its packaging metadata: installing the SDK into the same environment as Langflow is the whole setup. You do not set LANGFLOW_COMPONENTS_PATH, and you do not copy any component files by hand.

Find the node

Open Langflow and look in the component sidebar under the Armoriq category. The ArmorIQ Tool Calling Agent node (shield icon) is loaded the same way Langflow loads its own bundled component categories.

Configure the node

The node exposes these inputs on the canvas:

InputDescription
llmThe language model handle to drive tool selection (wire in any Langflow-compatible model component)
system_promptSystem prompt for the agent
armoriq_api_keyYour ArmorIQ API key (secret input)
armoriq_user_emailThe end-user email every enforcement decision is attributed to
armoriq_modeSession mode, defaults to "sdk"
armoriq_envArmorIQ environment, defaults to "production"
armoriq_agent_idOptional agent identifier
chat_historyStandard Langflow chat history input

Wire your model and MCP-backed tools into the node like you would for Langflow's own tool-calling agent, set the ArmorIQ API key, and every tool call the agent makes is governed by policy: allowed, held for approval, or blocked.

The node is fail-closed on configuration: if armoriq_api_key isn't set, the node raises rather than running the agent ungoverned.

Under the hood

The Langflow node is a thin wrapper. It builds a LangChain tool-calling agent and attaches an ArmorIQLangChain callback to it internally, the exact same integration used when you wire ArmorIQ into a hand-written LangChain agent. That callback:

  1. Builds a plan from the tool calls the model chooses and mints an intent token for exactly those tools.
  2. Enforces the user's policy before each tool runs: allow, hold (wait for approval), or block.

See the LangChain integration for the full callback lifecycle, live enforcement events, and parameter reference. It all applies here since the Langflow node is built on the same code path.

Reference

The extension lives in the Python SDK repo (armoriq-sdk-customer), under armoriq_sdk/langflow/: an extension.json manifest plus the ArmorIQToolCallingAgent component bundle. It is registered via a [project.entry-points."langflow.extensions"] entry in the package's pyproject.toml, not a pip install armoriq-sdk[langflow] extra.

On this page