Skip to content

LangGraph Adapter ​

@memfork/langgraph is a LangGraph checkpointer backed by MemForks.

Each graph thread maps to a MemForks branch. Checkpoints are committed through MemForks, so graph state can persist across runs, processes, and machines.

Install ​

bash
npm install @memfork/langgraph @memfork/core @langchain/langgraph

Provision credentials:

bash
memfork init --quick

Basic Usage ​

ts
import { StateGraph, MessagesAnnotation } from "@langchain/langgraph";
import { createMemForksCheckpointer } from "@memfork/langgraph";

const checkpointer = await createMemForksCheckpointer({
  treeId: process.env.MEMFORK_TREE_ID!,
  signer: process.env.MEMFORK_PRIVATE_KEY!,
  memwal: {
    accountId: process.env.MEMFORK_MEMWAL_ACCOUNT!,
    delegateKey: process.env.MEMFORK_MEMWAL_KEY!,
    serverUrl: process.env.MEMFORK_RELAYER_URL,
  },
});

const app = new StateGraph(MessagesAnnotation)
  .addNode("agent", myAgentNode)
  .addEdge("__start__", "agent")
  .compile({ checkpointer });

await app.invoke(
  { messages: [{ role: "user", content: "Hello" }] },
  { configurable: { thread_id: "abc123" } },
);

By default, thread_id: "abc123" maps to branch thread/abc123.

Custom Thread-To-Branch Mapping ​

ts
const checkpointer = await createMemForksCheckpointer({
  treeId,
  signer,
  memwal,
  threadToBranch: (threadId) => `agent/${threadId}`,
});

Use stable thread IDs when you want future runs to build on previous graph state.

How It Works ​

LangGraph eventMemForks behavior
put() checkpointCommits serialized checkpoint state to the thread branch.
getTuple()Recalls checkpoint state for the thread.
putWrites()Commits pending writes to branch memory.
proposeMerge()Opens a MemForks merge proposal between thread branches.

Multi-Agent Branches ​

This pattern lets parallel workers accumulate knowledge independently, then merge their findings into a supervisor branch.

Cross-Agent Merge ​

ts
const digest = await checkpointer.proposeMerge({
  fromThread: "research-a",
  intoThread: "supervisor",
  resolverId: process.env.MEMFORK_RESOLVER_ID!,
});

The resolver handles reconciliation and finalization.

When To Use LangGraph ​

Use the LangGraph adapter when your app has:

  • multi-step workflows
  • parallel worker agents
  • resumable graph state
  • long-running tasks
  • branch-per-thread memory
  • checkpoint recovery after process restarts
  • governed merges between agents

For simple chat apps, use the Vercel AI SDK adapter.

Reference Example ​

See LangGraph Research for a multi-agent research pipeline using worker branches and supervisor merges.

Built on MemWal, Walrus, and Sui.