MeshFlow
  • Cloud PlatformDeployIntegrationsInit CLIWhy MeshFlow
  • DocsLearn
  • CustomersCertificationBlogChangelogCommunity
  • Pricing
Sign inGet started
Pricing
Sign inGet started
MeshFlow

The production-safe standard for agentic AI.
Apache 2.0 — free forever.

Product
  • Pricing
  • Cloud
  • Compare
  • Init CLI
  • Changelog
Docs
  • Quickstart
  • Core concepts
  • Compliance guide
  • Token optimization
  • API reference
Resources
  • Blog
  • Customers
  • Community
  • PyPI
  • GitHub
Company
  • Discord
  • Twitter
  • Security
  • License
MeshFlow © 2026 · Yaya Systems · Apache 2.0
All systems operational
MeshFlowdocs
Search docs...⌘K
v1.13.0 GitHub Discord
Getting startedQuickstartInstallationCore conceptsHarness architectureSkills vs ToolsSandbox mode
GuidesBuilding agentsMulti-agent workflowsModel RoutersCost AnalyticsCompliance guideToken optimization
Claude & AIAdvisor patternThinking budgetsDynamic workflowsContext compactionTool streaming
Governancemeshflow-forensicZero-Trust PoliciesSOC 2 assertionEU AI ActProduction Readiness
IntegrationsOpenAI Agents SDKLangGraphCrewAIMCP ToolsTypeScript SDKOTel / OTLPAutoGen 0.4+
API ReferenceWorkflowAgentCostCapAdvisorAgentCostRegressionGate
Docs/Integrations/LangGraph

LangGraph

Connect any LangGraph workflow to MeshFlow in two steps: install the adapter and wrap your compiled graph. Every node execution emits an ATR-compatible span — no graph rewrite required.

Zero rewrite
The adapter hooks into LangGraph's native callback system. Your graph definition, nodes, and edges stay exactly as-is.

Install

bash
pip install "meshflow[langgraph]"

Callback handler

Pass MeshFlowCallbackHandler to your graph's config. It automatically emits spans for every node start, end, and error.

python
from meshflow.adapters.langgraph import MeshFlowCallbackHandler
from meshflow.cloud import MeshFlowCloud

cloud = MeshFlowCloud(api_key="mf-...")
handler = MeshFlowCallbackHandler(cloud=cloud, run_id="run-abc123")

# Pass to your compiled graph — existing graph unchanged
inputs = {"messages": [HumanMessage(content="your task")]}
cfg = {"callbacks": [handler]}
result = app.invoke(inputs, config=cfg)

ATR fields

The handler auto-populates modelVersion, inputHash, outputHash, and causalParentId on every span using LangGraph's run metadata.

python
# Override ATR fields per-node if needed
handler.set_node_meta("call_model", prompt_version="v12", policy_version="hipaa-v3")

Context packs

Emit a context snapshot before each LLM call to capture which sources, memory reads, and prompt versions the node received.

python
from meshflow.adapters.langgraph import emit_context_pack

def call_model(state):
emit_context_pack(cloud=cloud, state=state, agent_name="call_model")
return {"messages": [llm.invoke(state["messages"])]}
Previous
OpenAI Agents SDK
Next
CrewAI
On this pageInstallCallback handlerATR fieldsContext packs