Skip to content

LangGraph (Python)

Low-level orchestration for stateful, long-running LLM agents. LangGraph models your agent as a graph of nodes and edges with explicit state, durable checkpoints, and first-class human-in-the-loop.

Install

Terminal window
pip install langgraph langchain-anthropic

Version

v1.2.6 · June 2026 · Python 3.10 – 3.14

Best for

Cycles, conditional routing, multi-agent coordination, HITL workflows.

A chaptered tutorial that takes you from a first graph to a production-ready agent. Each chapter has its own page with Next → pagination.

Need one specific concept? Land directly on the chapter that owns it.

Every page below is introspected against the installed langgraph==1.2.5 / langgraph-checkpoint==4.1.1 / langgraph-checkpoint-sqlite==3.0.3 / langgraph-checkpoint-postgres==3.0.5 source. If a signature disagrees with an older blog post or docs page, the source wins.

  • v1.2.6 (June 2026) — Patch release; no new public API surface. Actual 1.2.6 changes include nested subgraph checkpoint namespace fixes and v3 stream abort handling. Class deep-dives Vol. 23 adds first-ever coverage of RunnableCallable+RunnableSeq (node function wrappers), _IdleProgressCallbackHandler (idle-timeout heartbeat mechanics), _GraphCallbackManager+_AsyncGraphCallbackManager (lifecycle event dispatch), DataclassLike+TypedDictLike* (schema protocols), AsyncQueue+SyncQueue+Semaphore (concurrency primitives), FunctionNonLocals+NonLocals (AST closure analysis), Edge+TriggerEdge (graph draw primitives), _RemoteGraphRunStream+_ChannelProjection (remote streaming internals), AgentState migration guide (deprecated in 1.2.6), and _SubgraphRunStreamMixin (subgraph pump delegation). Class deep-dives Vol. 22 covers v3 streaming internals (StreamTransformer, StreamChannel, StreamMux, GraphRunStream/SubgraphRunStream, EncryptedSerializer, EmbeddingsLambda). Class deep-dives Vol. 21 adds expanded coverage (3 runnable examples each) for BaseChannel (custom channel ABC), BinaryOperatorAggregate (Overwrite sentinel mechanics), UntrackedValue (guard semantics + checkpoint=MISSING), register_serde_event_listener+SerdeEvent (first dedicated coverage), SerializerProtocol+CipherProtocol+SerializerCompat, AsyncBatchedBaseStore (_check_loop deadlock prevention), UIMessage+RemoveUIMessage+ui_message_reducer (merge semantics), ManagedValue custom values, get_field_default+get_cached_annotated_keys (_fields internals), and PregelProtocol+StreamProtocol. Class deep-dives Vol. 20 adds source-verified documentation of existing execution engine internals (StreamToolCallHandler, DeltaChannel, PregelScratchpad, LazyAtomicCounter, and more) verified against this release.
  • v1.2.5 (June 2026) — Patch release; langgraph==1.2.5 with stability and dependency updates. No new public API surface. All core graph symbols verified with -W error::DeprecationWarning.
  • TimeoutPolicy dataclass (langgraph.types) — fine-grained per-node/per-task timeout control with run_timeout (hard cap), idle_timeout (progress-based cap), and refresh_on ("auto" or "heartbeat"). Replaces the single timeout=float kwarg with a richer API.
  • Runtime.heartbeat() — call from inside a long-running async node or task to reset an idle timeout. No-op outside an active idle-timed attempt.
  • RunControl + cooperative drainingruntime.control, runtime.drain_requested, runtime.drain_reason let external code signal a graph run to exit gracefully without cancelling it abruptly.
  • ExecutionInfo extended — new fields checkpoint_ns (subgraph namespace) and task_id (Pregel task ID) for richer per-node observability. patch(**overrides) helper for testing.
  • RemainingSteps managed value (langgraph.managed.is_last_step) — companion to IsLastStep; gives the integer count of steps remaining before the recursion limit.
  • task.clear_cache() / task.aclear_cache() — invalidate cached results for a specific @task without flushing the whole BaseCache.
  • ToolRuntime dataclass (new in v1.2.0, langgraph.prebuilt) — passed to tools at execution time; exposes state, context, config, stream_writer, tool_call_id, store, tools, and execution_info. Allows tools to inspect the current graph state and write to the stream mid-execution.
  • ToolCallTransformer stream transformer (new in v1.2.0, langgraph.prebuilt) — a StreamTransformer that projects raw tools-channel protocol events (tool-started, tool-output-delta, tool-finished, tool-error) into per-call ToolCallStream handles. Register via builder.compile(transformers=[ToolCallTransformer]); iterate run.tool_calls while streaming with stream_mode="tools" to receive one ToolCallStream per invocation. See the Streaming modes reference and Prebuilt nodes reference for full examples.
  • langgraph-checkpoint 4.1.0 — minor checkpoint interface improvements; backward-compatible with all existing MemorySaver, SqliteSaver, PostgresSaver usage.
  • langgraph-prebuilt 1.1.0 — ships ToolRuntime and ToolCallTransformer; all prior prebuilt symbols (create_react_agent, ToolNode, ValidationNode, InjectedState, InjectedStore) unchanged.
  • v1.2.1 (May 2026) — Patch release; stability and dependency updates. All core graph symbols (StateGraph, END, START, CompiledStateGraph, MemorySaver, create_react_agent, ToolNode, InMemoryStore, Command, Send, Interrupt, interrupt, entrypoint, task) verified with -W error::DeprecationWarning against installed langgraph==1.2.2 (.routine-envs/check-0522-langgraph); all PASS.
  • v1.2.0 (May 12) — All core graph symbols (StateGraph, END, START, CompiledStateGraph, MemorySaver, create_react_agent, ToolNode, InMemoryStore, Command, Send, Interrupt, interrupt, entrypoint, task) verified with -W error::DeprecationWarning against installed langgraph==1.2.0 (.routine-envs/check-0512-py).
  • Prior (v1.1.x): Type-safe streaming v2 API (version="v2" on astream()/ainvoke()); Pydantic/dataclass coercion; Python 3.10 – 3.14 support; time-travel fixes.
from langgraph.graph import StateGraph, START, END
from langgraph.checkpoint.memory import InMemorySaver
from typing_extensions import TypedDict
class State(TypedDict):
message: str
response: str
def process(state: State) -> dict:
return {"response": f"Processed: {state['message']}"}
builder = StateGraph(State)
builder.add_node("process", process)
builder.add_edge(START, "process")
builder.add_edge("process", END)
graph = builder.compile(checkpointer=InMemorySaver())
result = graph.invoke(
{"message": "Hello"},
config={"configurable": {"thread_id": "user-1"}},
)
print(result)

Ready for the full walk-through? Start Chapter 1 →


DateVersionChanges
2026-06-231.2.6Added Class deep-dives Vol. 23 — 10 source-verified deep dives into previously undocumented class groups: RunnableCallable+RunnableSeq first dedicated coverage (node function wrapper — func_accepts injection detection, sync/async dual dispatch, trace/recurse/explode_args flags, RunnableSeq lightweight pipeline chaining), _IdleProgressCallbackHandler first dedicated coverage (idle-timeout heartbeat mechanics — every on_llm_new_token/on_tool_start/on_chain_start etc. calls scope.touch(), run_inline=True ordering guarantee, weakref scope-lifetime decoupling), _GraphCallbackManager+_AsyncGraphCallbackManager first dedicated coverage (graph lifecycle event dispatch — configure() from config[“callbacks”], on_interrupt/on_resume fan-out to GraphCallbackHandler subclasses only, async twin with is_async=True), DataclassLike+TypedDictLikeV1+TypedDictLikeV2 first dedicated coverage (structural protocols for state schema discrimination — dataclass_fields vs required_keys/optional_keys ClassVar vs instance, how LangGraph detects schema type at runtime), AsyncQueue+SyncQueue+Semaphore first dedicated coverage (internal concurrency primitives — wait()-without-consuming non-destructive peek, SyncQueue built on deque+Semaphore, Pregel coordinator-worker signaling pattern), FunctionNonLocals+NonLocals first dedicated coverage (AST-based closure inspection — loads-stores outer-scope captures, visit_FunctionDef/AsyncFunctionDef/Lambda dispatch, practical @task factory capture analysis), Edge+TriggerEdge first dedicated coverage (graph topology NamedTuples from get_graph().edges — source/target/conditional/data fields, custom Mermaid rendering, topology diff for CI regression detection), _RemoteGraphRunStream+_ChannelProjection+_ProjectionRegistry first dedicated coverage (remote graph streaming adapter — context-manager lifecycle, _ChannelProjection sync/async lane DataDecoder, _ProjectionRegistry typed vs custom channel resolution), AgentState+AgentStatePydantic deprecation migration guide (deprecated in 1.2.6 — moved to langchain.agents, custom TypedDict migration with add_messages+RemainingSteps+response_format structured output, Pydantic model migration pattern), and _SubgraphRunStreamMixin first dedicated coverage (subgraph streaming pump-delegation internals — path/graph_name/trigger_call_id identity fields, status updated in-place by SubgraphTransformer, parent-pump delegation pattern, drilling into projections). Also added Vol. 22 LinkCard to the Jump-to-topic grid.
2026-06-201.2.6Added Class deep-dives Vol. 21 — 10 source-verified deep dives with 3 runnable examples each, expanding coverage of previously brief topics: BaseChannel full lifecycle contract (update/get/checkpoint/from_checkpoint/consume/is_available ABC + custom channel implementation pattern), BinaryOperatorAggregate internals (Annotated reducer mechanics, Overwrite dual-detection via isinstance+OVERWRITE dict sentinel, _operators_equal lambda safety, _strip_extras ABC→concrete normalisation), UntrackedValue deeper dive (guard=True concurrent-write protection, checkpoint()→MISSING never persists a blob, from_checkpoint always returns empty, in-memory scratchpad use cases), register_serde_event_listener+SerdeEvent first dedicated coverage (thread-safe listener list with _listeners_lock, per-listener failure isolation, _MAX_WARNED_TYPES=1000 circuit breaker, use for audit logging and allowlist building), SerializerProtocol+CipherProtocol+SerializerCompat first dedicated coverage (runtime_checkable protocol, dumps_typed tuple type discriminator, SerializerCompat wraps old-style serde with type(obj).name tag, maybe_add_typed_methods backwards compat, custom BYO cipher pattern), AsyncBatchedBaseStore deeper dive (_check_loop decorator raises asyncio.InvalidStateError from same loop, weakref drainer prevents store lifetime coupling, _ensure_task recreates cancelled background task), UIMessage+RemoveUIMessage+ui_message_reducer full reducer semantics (merge=True dict-merge vs replace, remove-ui ValueError on unknown IDs, state_key=None stream-only emission, metadata.merge flag), ManagedValue+IsLastStepManager+RemainingStepsManager deeper dive (get(scratchpad) staticmethod contract, PregelScratchpad.step/.stop arithmetic, custom managed value pattern, is_managed_value TypeGuard), get_field_default+get_cached_annotated_keys+get_enhanced_type_hints first dedicated coverage (Required/NotRequired precedence over total=False, WeakKeyDictionary MRO cache with reversed MRO traversal, Python 3.14 GetSetDescriptorType fallback, get_update_as_tuples model_fields_set filtering), and PregelProtocol+StreamProtocol first dedicated coverage (full abstract method inventory with v1/v2 stream overloads, StreamChunk=(namespace, mode, payload) tuple anatomy, StreamProtocol slots design and modes filtering).
2026-06-181.2.5Added Class deep-dives Vol. 19 — 10 source-verified deep dives into streaming internals, error taxonomy, HITL protocol & execution model: CheckpointsTransformer+TasksTransformer (v3 native stream projections — run.checkpoints and run.tasks attributes, scope filtering, combined audit pattern), StreamMessagesHandler+StreamMessagesHandlerV2 (stream_mode=“messages” callback internals — run_inline=True ordering guarantee, dedup by message ID, TAG_NOSTREAM suppression, parent_ns subgraph forwarding), _TimedAttemptScope+_AttemptContext+_AttemptEvent (timeout/retry lifecycle observer protocol — immutable per-attempt context NamedTuple, lifecycle events start/progress/finish, progress observation via refresh_on=“auto” vs “heartbeat”, guarded write/stream/call lock after timeout), ChannelRead imperative state access (do_read() static method, str vs list channel selection, fresh=True cache bypass, mapper transform), ErrorCode enum+extended exception hierarchy (all 5 ErrorCode values, EmptyInputError, TaskNotFound, GraphBubbleUp/ParentCommand internal signals, NodeInterrupt deprecated alias), ValidationNode schema validation (pydantic/BaseTool/callable schemas, custom format_error, re-prompting loop pattern, migration to ToolNode with handle_tool_errors), MessageGraph legacy API migration (deprecated MessageGraph, StateGraph+add_messages equivalent, MessagesState shorthand), BackgroundExecutor+AsyncBackgroundExecutor+Submit protocol (__cancel_on_exit__/__reraise_on_exit__/__next_tick__ flags, max_concurrency semaphore, GraphBubbleUp suppression timing-dependent: suppressed for tasks that complete before exit snapshot, re-raised for tasks still in-flight at that point), HumanInterrupt full protocol from langchain.agents.interrupt (ActionRequest/HumanInterruptConfig/HumanResponse/accept+ignore+response+edit types, import path migration), PregelNode+StateNodeSpec node representation internals (channels/triggers/writers/bound, error_handler_node wiring, subgraph auto-detection, StateNodeSpec defer flag).
2026-06-171.2.5Added Class deep-dives Vol. 18 — 10 source-verified deep dives with richer examples: DebugTransformer+stream_mode=“debug” (first full coverage — event types, payload inspection, combined mode tracing), StateSnapshot history navigation (next/tasks/interrupts fields, get_state_history iteration, parent_config chain walking, time-travel rewind), Command full API (update+goto combining, Send fan-out in goto, Command.PARENT cross-graph state writes), add_messages advanced patterns (ID-based dedup replace-in-place, RemoveMessage targeting, REMOVE_ALL_MESSAGES clear-and-replace, format=“langchain-openai” coercion), Topic channel accumulate modes (per-step clear vs. persistent log, multi-producer fanout with Send), NamedBarrierValue fan-in synchronization (parallel branch wait, Send-based fanout, reusable across loop iterations), entrypoint+task+previous stateful accumulation (running totals, conversation history, entrypoint.final to decouple return from save), push_message manual emission (streaming during execution, custom state_key, stream-only state_key=None), EphemeralValue trigger channels (guard=True single-producer signals, guard=False last-writer-wins, per-step config override), CachePolicy+InMemoryCache combined patterns (TTL caching on @task, custom key_func normalisation, per-user namespace isolation, task.clear_cache invalidation).
2026-06-161.2.5Added Class deep-dives Vol. 17 — 10 source-verified practical patterns: RetryPolicy sequence chaining (ordered multi-policy matching, callable retry_on), TimeoutPolicy+Runtime.heartbeat() (idle_timeout with explicit heartbeats, combined with RetryPolicy), Overwrite (bypass BinaryOperatorAggregate reducer, summarisation pattern, error constraints), interrupt() multi-value and selective resume by ID (multi-step approval, id-targeted resume mapping), add_sequence() (ETL pipeline, named nodes, vs manual wiring), update_state()/bulk_update_state()/StateUpdate (state injection, multi-step replay, time-travel rewind), get_stream_writer()/StreamWriter (progress events, multi stream_mode, async warning), stream_mode=“checkpoints”+CheckpointPayload/CheckpointTask (audit trails, checkpoint progression, task field inspection), stream_mode=“tasks”+TaskPayload/TaskResultPayload (task lifecycle logging, interrupt detection, combined modes), set_node_defaults() (global retry/timeout/error_handler, per-node override, precedence table). Also added missing index links for Class deep-dives Vol. 13 (ToolRuntime, channels, policies), Vol. 14 (BranchSpec, LastValue, ManagedValue, @task, DeltaChannel, InMemoryCache, @entrypoint, CompiledStateGraph internals), and Vol. 15 (Runtime/ExecutionInfo/RunControl, BaseStore, store batch ops, UIMessage, StreamTransformer, RemoteGraph, error hierarchy, IsLastStep/RemainingSteps, HumanResponse).
2026-06-151.2.5Added Class deep-dives Vol. 16 — 10 source-verified deep dives into the v3 streaming protocol (beta): GraphRunStream/AsyncGraphRunStream (caller-driven pumping, projections, context manager, abort, interleave, output/interrupted/interrupts properties), SubgraphRunStream/AsyncSubgraphRunStream (in-process subgraph navigation handles, path/status/error fields, recursive grandchild traversal), ValuesTransformer (full-state snapshots on run.values, scope filtering), UpdatesTransformer (per-node deltas on run.updates), CustomTransformer (get_stream_writer payloads on run.custom), MessagesTransformer/ChatModelStream (per-LLM-call handles with .text/.reasoning/.tool_calls/.output projections, token streaming), SubgraphTransformer (subgraph discovery via tasks events, direct-children-only scope, mini-mux child creation), LifecycleTransformer/LifecyclePayload (all-depth subgraph lifecycle events, error detection), and StreamChannel (single-consumer drainable queue, tee fan-out, named auto-forwarding). Updated version card to 1.2.5, “What’s new” section, Reference Aside, and Jump-to-topic grid.
2026-06-071.2.4Added Class deep-dives Vol. 12 — 10 source-verified deep dives into RemoteGraph/RemoteException (call deployed graphs as nodes, state management, distributed tracing), PostgresSaver/ShallowPostgresSaver (full vs constant-space persistence, pipeline mode, connection pooling, time-travel), AsyncPostgresSaver (async twin with asyncio.Lock and AsyncConnectionPool), PostgresStore/PoolConfig (TTL expiry, sweeper thread, InjectedStore in tools), AsyncPostgresStore (AsyncBatchedBaseStore coalescing, concurrent aput/aget), ANNIndexConfig/HNSWConfig/IVFFlatConfig/PostgresIndexConfig (pgvector index types, halfvec, distance metrics), GraphRunStream/SubgraphRunStream (v3 streaming projections, token streaming, abort(), interleave()), ToolCallWithContext/ToolInvocationError (tool dispatch internals, custom error handlers, categorised errors), LifecyclePayload/LifecycleTransformer (subgraph lifecycle monitoring, cause tracking, timing traces), and MessagesTransformer/CheckpointsTransformer/TasksTransformer (per-LLM-call streaming handles, checkpoint flush events, task execution tracing). Updated Jump-to-topic grid and Reference section with Vol. 10–12 links.
2026-06-041.2.4Added Class deep-dives Vol. 9 — 10 source-verified deep dives into ToolCallRequest.override() (immutable interceptor mutation), Send+timeout (per-task fan-out timeouts), create_react_agent hooks (pre_model_hook, post_model_hook, version=“v2”, response_format), RetryPolicy chaining (ordered list of policies), CachePolicy custom key_func (per-user namespace isolation), InMemoryStore raw embedding callables (no LangChain dependency), context_schema+Runtime.context (typed run-scoped context in StateGraph and @entrypoint), Command.PARENT (cross-subgraph routing with error escalation), TimeoutPolicy.coerce() (run_timeout vs idle_timeout), and @entrypoint multi-policy retry. Updated reference files to v1.2.4.
2026-06-031.2.4Added Class deep-dives Vol. 8 — 10 source-verified deep dives into ExecutionInfo/Runtime.heartbeat (advanced patterns: idempotency keys, node_attempt timing, patch() for testing), ServerInfo/BaseUser (platform auth and tenant isolation), ReplayState (time-travel subgraph checkpoint tracking), StreamMux (streaming event dispatcher, transformer factories, child muxes), Call (functional API invocation internals), ChannelWrite/ChannelWriteEntry (write subsystem, do_write() imperative writes, mapper transforms), PregelRunner/FuturesDict (concurrent task execution, error routing, early cancellation), WritesProtocol/PregelTaskWrites (write protocol, deterministic sorting via path), SyncPregelLoop/AsyncPregelLoop (execution state machine, status fields, cooperative drain), and DuplexStream (multi-sink fan-out streaming). Updated version card to 1.2.4, version references in Reference section and Aside block, langgraph-checkpoint to 4.1.1.
2026-05-311.2.2Added Class deep-dives Vol. 5 — 10 source-verified deep dives into RedisCache, EncryptedSerializer, JsonPlusSerializer (strict mode), UntrackedValue, AnyValue, EmbeddingsLambda/ensure_embeddings (with path expressions), BaseCheckpointSaver (custom backend), typed StreamParts (ValuesStreamPart, UpdatesStreamPart, MessagesStreamPart, CheckpointStreamPart, TasksStreamPart), task.clear_cache/aclear_cache, and the HumanInterrupt structured HITL protocol with migration guidance to langchain.agents.interrupt. Updated index Jump-to-topic grid and Reference links.
2026-05-301.2.2Added Class deep-dives Vol. 4 — 10 source-verified deep dives into set_node_defaults, add_sequence, input_schema/output_schema, context_schema/Runtime.context, get_stream_writer/StreamWriter, push_ui_message, entrypoint.final, REMOVE_ALL_MESSAGES, error_handler on add_node, and the full error taxonomy (GraphRecursionError, InvalidUpdateError, NodeTimeoutError, EmptyChannelError). Updated index Jump-to-topic grid and Reference links. Enhanced create_react_agent migration guidance in Vol. 1.
2026-05-291.2.2Added Class deep-dives Vol. 3 — 10 source-verified deep dives into interrupt/Interrupt, DeltaChannel, EphemeralValue, NamedBarrierValue, RemoveMessage/push_message, Pregel, NodeBuilder, GraphOutput, PregelTask, IndexConfig/TTLConfig. Updated index Jump-to-topic grid and Reference links.
2026-05-281.2.2Added Class deep-dives Vol. 2 — 10 source-verified deep dives into RetryPolicy, CachePolicy/InMemoryCache, TimeoutPolicy, add_messages/MessagesState, tools_condition, ToolCallTransformer/ToolCallStream, StateSnapshot, IsLastStep/RemainingSteps, ToolRuntime, and Runtime/RunControl (all verified against langgraph==1.2.2). Updated version card and index links.
2026-05-251.2.1Review fixes: corrected durability placement (invoke/stream, not compile); fixed context= top-level param pattern; updated ToolRuntime to add missing tools, execution_info, server_info fields (source-verified); fixed clear_history_node P1 bug (preserve current message before REMOVE_ALL_MESSAGES); added None guards for runtime.state, runtime.store, runtime.context; removed _DirectlyInjectedToolArg private class from docs; fixed version history (RemainingSteps added in 1.2, not 1.0).
2026-05-241.2.1Deep source dive: enhanced chapters 1, 4, 9 with add_sequence, context_schema/Runtime, ToolRuntime, REMOVE_ALL_MESSAGES, push_message, Overwrite, GraphOutput v2, TimeoutPolicy, Send(timeout=). Updated streaming modes ref (all 7 modes + StreamPart v2 typed union). Updated store ref (vector search, filter operators, TTL, batch). New ref page: Runtime, ToolRuntime & Managed Values. Updated recipes to v1.2.1 with 3 new examples. All content verified against langgraph==1.2.2 source.
2026-05-221.2.1Patch release; version card updated 1.2.0 → 1.2.1; v1.2.1 bullet added to “What’s new”. All core symbols (StateGraph, END, START, CompiledStateGraph, MemorySaver, create_react_agent, ToolNode, InMemoryStore, Command, Send, Interrupt, interrupt, entrypoint, task) verified with -W error::DeprecationWarning against installed langgraph==1.2.2 (.routine-envs/check-0522-langgraph); all PASS.
2026-05-121.2.0Minor release; version card and all version references updated 1.1.10 → 1.2.0; langgraph-checkpoint updated 4.0.3 → 4.1.0; langgraph-prebuilt updated to 1.1.0. “What’s new” section updated with ToolRuntime and ToolCallTransformer additions. All core symbols (StateGraph, END, START, CompiledStateGraph, MemorySaver, create_react_agent, ToolNode, InMemoryStore, Command, Send, Interrupt, interrupt, entrypoint, task) verified with -W error::DeprecationWarning against installed langgraph==1.2.0 (.routine-envs/check-0512-py).
2026-04-281.1.10Patch release; version card and reference pages updated 1.1.9 → 1.1.10; langgraph-checkpoint updated 4.0.2 → 4.0.3. All key symbols verified against installed 1.1.10 (.routine-envs/main-py-0428).
2026-04-221.1.9Added six source-verified reference pages: StateGraph, Checkpointers, Store, Functional API, Command / Send, Streaming modes. Corrected stale guidance: create_react_agent deprecated in v1.0; from_conn_string is a context manager; ShallowPostgresSaver deprecated.
2026-04-211.1.8Index redesigned into Zero → Hero chaptered tutorial + Jump-to-topic grid; duplicated sections removed.
2026-04-201.1.8Version pin updated to 1.1.8; frameworks.ts metadata aligned.
April 16, 20261.1.6Python 3.9 dropped; type-safe v2 streaming/invoke API; Pydantic/dataclass coercion; Python 3.14 support; time-travel fixes.
November 20251.0.3Node caching; deferred nodes; pre/post model hooks; cross-thread memory; Python 3.13 support.