Ship LangGraph agents in Angular โ without building the plumbing
Signal-native streaming, thread persistence, interrupts, and deterministic testing. The complete agent primitive layer for Angular 20+.
The JS SDK gives you a Client. You build everything else.
- โ Raw Client + for-await SSE loop โ no Angular integration
- โ Manual BehaviorSubject โ Signal wiring for each state slice
- โ Thread persistence, interrupt handling built from scratch
- โ No OnPush-compatible signal API โ custom change detection workarounds
- โ Testing against live LangGraph API โ slow, flaky, non-deterministic
agent() gives you production-ready streaming on day one.
- โ Signals-native API โ no zone patching needed
- โ Automatic subscription lifecycle management
- โ OnPush compatible from day one
- โ Built-in thread persistence and restore
- โ interrupt() signal for human approval flows
- โ MockAgentTransport for offline, deterministic tests
Features
Every LangGraph capability, production-ready
agent() API
Signal-native streaming with automatic state management. One function to connect your Angular app to LangGraph.
Thread Persistence
Conversations survive page refreshes. Built-in threadId signal with localStorage restore and thread list UI.
Interrupt Handling
Human-in-the-loop approval flows. interrupt() signal maps directly to approve, edit, or cancel actions.
Tool Call Support
Structured tool execution state. Progressive disclosure โ live steps, completion, collapsible history.
Time Travel
Navigate agent state history. Replay, inspect, and debug any point in a conversation timeline.
DeepAgent Support
Multi-agent orchestration with full streaming support. Subgraphs, delegation, parallel execution.
Developer Experience
Production streaming in a few lines
import { agent } from '@ngaf/langgraph';
const chat = agent({
assistantId: 'my-agent',
apiUrl: 'https://my-langgraph.cloud',
});
// Reactive signals โ OnPush compatible
chat.messages(); // Signal<Message[]>
chat.isLoading(); // Signal<boolean>
chat.interrupt(); // Signal<AgentInterrupt | undefined>import { agent, provideAgent, MockAgentTransport, FetchStreamTransport } from '@ngaf/langgraph';
provideAgent({
apiUrl: environment.langgraphUrl,
transport: isTest
? new MockAgentTransport(fixtures)
: new FetchStreamTransport(),
});
const chat = agent({
assistantId: 'my-agent',
threadId: savedThreadId,
onThreadId: (id) => localStorage.setItem('threadId', id),
});Head to Head
@langchain/langgraph-sdk vs @ngaf/langgraph
Agent Guide
The Enterprise Guide to Agent Streaming in Angular
Six chapters covering the last-mile gap, the agent() API, thread persistence, interrupts, time-travel, and deterministic testing with MockAgentTransport.
Part of the Cacheplane Angular Agent Framework.
โ Download PDFOptional โ Get notified of updates
The Cacheplane Stack
This library is part of a cohesive three-layer architecture.
Ready when you are
Ready to ship your LangGraph agent?
The Angular Agent Framework closes the last-mile gap. Start with a conversation.
App deployment license ยท $20,000 ยท 3-month co-pilot engagement