Documentation Index
Fetch the complete documentation index at: https://langwatch.ai/docs/llms.txt
Use this file to discover all available pages before exploring further.
LangWatch integrates with LangGraph to provide detailed observability into your state graphs, node executions, and workflow patterns.
Installation
npm i langwatch @langchain/openai @langchain/core @langchain/langgraph zod
Usage
The LangWatch API key is configured by default via the LANGWATCH_API_KEY environment variable.
Use LangWatchCallbackHandler with your LangGraph state graph to capture node executions and workflow patterns.
import { setupObservability } from "langwatch/observability/node";
import { LangWatchCallbackHandler } from "langwatch/observability/instrumentation/langchain";
import { ChatOpenAI } from "@langchain/openai";
import { HumanMessage, SystemMessage } from "@langchain/core/messages";
import { StateGraph, START, END } from "@langchain/langgraph";
import { MemorySaver } from "@langchain/langgraph";
import { z } from "zod";
setupObservability({ serviceName: "<project_name>" });
const GraphState = z.object({
question: z.string(),
final_answer: z.string().default(""),
});
type GraphStateType = z.infer<typeof GraphState>;
async function main(message: string): Promise<string> {
const llm = new ChatOpenAI({ model: "gpt-5" });
const generate = async (state: GraphStateType) => {
const result = await llm.invoke([
new SystemMessage("You are a helpful assistant."),
new HumanMessage(state.question),
]);
return { final_answer: result.content as string };
};
const app = new StateGraph(GraphState)
.addNode("generate", generate)
.addEdge(START, "generate")
.addEdge("generate", END)
.compile({ checkpointer: new MemorySaver() })
.withConfig({ callbacks: [new LangWatchCallbackHandler()] });
const out = await app.invoke(
{ question: message },
{ configurable: { thread_id: crypto.randomUUID() } },
);
return out.final_answer;
}
console.log(await main("Hey, tell me a joke"));
The LangWatchCallbackHandler captures LangGraph node executions and workflow patterns. Pass the callback handler to your compiled graph via withConfig().