Live Bridges
LangGraph live bridge
A LangGraph node can call into a Veridex agent and vice-versa; the bridge translates state and threads runId for unified tracing.
import { veridexNode } from '@veridex/agents-adapters/langgraph';
const graph = new StateGraph(MyState)
.addNode('classify', classifyNode)
.addNode('treasury', veridexNode({
agent: treasuryAgent,
mapState: (s) => s.userQuery,
mergeResult: (s, r) => ({ ...s, treasuryResult: r.output }),
}))
.addEdge('classify', 'treasury');The treasury node runs under Veridex governance — policy, approvals, evidence bundles — while the rest of the graph keeps running in LangGraph.
OpenAI Assistants bridge
import { handoffToVeridex } from '@veridex/agents-adapters/openai';
// In your Assistants tool handler:
case 'process_payment':
return handoffToVeridex({ agent: treasuryAgent, input: args.userIntent });Returns control to the Assistants run with the Veridex result; suspends if Veridex needs approval.
Mastra step bridge
import { veridexStep } from '@veridex/agents-adapters/mastra';
const workflow = workflow()
.step(veridexStep({ agent: treasuryAgent, idAs: 'pay' }))
.step(notifyStep);Migration sequencing
The recommended order:
- Start with the highest-stakes path. That's the one you most need policy, approvals, and audit on.
- Bridge it. Most of your app keeps running where it lives.
- Move read-only paths next — they have the least migration risk and let you build operator familiarity.
- Remove the bridge once the workflow is fully on Veridex.
Identity & tracing across the bridge
Every bridged invocation carries the originating framework's runId as parentRunId in Veridex events. Trace inspectors render parent/child relationships so you can follow a transaction end-to-end across the seam.