What’s actually slowing this PC down?
Pick the symptom - the matching free tool is one click away.
Reliable LangGraph agents need different responses to different failures: retry transient service errors, time-bound asynchronous work that can hang, route exhausted failures deliberately, and persist thread state with a durable checkpointer. These are separate controls—not one “retry everything” switch. The Python timeout and node error-handler APIs described here require langgraph>=1.2; check your installed version and dependency lock before using them.
Start by deciding what should happen when a node fails
Build reliability around the operation each node performs. A temporary network or service failure may clear if retried. A bad input, type mismatch, or programming bug usually will not. Retrying both alike wastes time and can repeat side effects.
Make nodes small enough to isolate work that has a distinct failure strategy. For example, separating an external API call from unrelated model or transformation work lets you retry and inspect the call independently. LangGraph resumes from the start of the node that failed, so a smaller node can reduce repeated work when a later step fails. More boundaries also mean more checkpoints; choose them according to recovery needs, observability, and the cost of repeating work. See the LangGraph node design guidance.
Configure retries for transient failures
Attach a retry policy to the node that makes the transiently failing call. This Python example uses the documented API:
#1 Best Overall
- High-Performance AI Processor:The MS-02 Ultra features an Intel Core Ultra 9 285HX (24C/24T, up to 5.5 GHz, 13 TOPS NPU), delivering fast and efficient performance for AI inference, algorithm development, and media workloads. A PCIe x16 expansion slot supports desktop-class GPU upgrades for advanced model training and accelerated computing tasks. It's ideal for creators, engineers, and teams handling intensive parallel workloads.
- 4 × M.2 PCIe 4.0 + 4 × DDR5 SODIMM slots:Four DDR5 SODIMM slots support up to 256 GB of memory, while ECC helps maintain data integrity in mission-critical environments. Four PCIe 4.0 M.2 slots support up to 24 TB of storage, supporting RAID 0/1/5/10, combining high-speed performance with data protection. It allows for the creation of independent scratch disks, media libraries, and project drives, providing high-throughput for production workflows.
- PCIe & USB 4.0 v2: Up to three PCIe slots can be equipped, including a dual-slot x16 GPU. The main slot supports PCIe 5.0, meeting the needs of high-bandwidth creative and computing workloads. USB 4.0 v2 (80Gbps) supports high-bandwidth external storage and displays.
- Ultra-fast Networking: Wi-Fi 7 further enhances wireless performance with next-generation speeds and low-latency stability. Intelligent bandwidth switching optimizes throughput in different network environments, ensuring optimal performance for enterprise or local networks. Dual 25GbE ports (providing up to approximately 3.125 GB/s bandwidth, about 25 times faster than traditional 1GbE), enabling seamless large-scale file transfers and parallel computing. 10GbE and 2.5GbE ports, with support for Intel vPro technology, ensure enterprise-grade remote management and deployment flexibility.
- Server-grade thermal architecture: Utilizing a dedicated CPU/GPU airflow design, equipped with a 6-pipe dual-fan cooler, it maintains stable performance even under sustained loads, delivering up to 140W Turbo power while maintaining a 100W TDP, and operating with noise levels as low as 36 dB. An integrated 350W power supply ensures stable and reliable output for demanding computing tasks and fully loaded extended configurations.
from langgraph.types import RetryPolicy
builder.add_node(
"call_api",
call_api,
retry_policy=RetryPolicy(max_attempts=3),
)
max_attempts counts the first try, so this setting allows three attempts total. The documented defaults are an initial interval of 0.5 seconds, a backoff multiplier of 2.0, a maximum interval of 128 seconds, and jitter. These are framework defaults, not a recommended production policy for every service. Verify the behavior for your installed release in the Python fault-tolerance guide.
The default exception filter is not a blanket retry rule. The guide lists exclusions including ValueError, TypeError, RuntimeError, and OSError. It also says that for common HTTP libraries such as requests and httpx, retries are limited to 5xx responses. If your upstream service uses different status codes or exception types to signal transient failures, define retry_on as an exception class or callable that matches your service’s semantics.
- Retry errors that could plausibly recover, such as a temporary upstream outage.
- Do not retry deterministic validation or programming failures without a specific reason.
- Before repeating a call, consider whether it has side effects and whether the operation is safe to repeat. A retry policy does not make an external operation idempotent.
For attempt-sensitive behavior, the runtime exposes runtime.execution_info.node_attempt, a 1-indexed attempt number. A node can use it to choose a fallback after an initial attempt, but fallback logic alone does not make a repeated external call safe.
Rank #2
Set timeouts for asynchronous nodes that can hang
In Python, node timeouts require langgraph>=1.2 and currently apply only to async nodes. A number or timedelta specifies a wall-clock run limit; TimeoutPolicy can set separate run and idle limits. The values below are illustrative, not universal recommendations:
from langgraph.types import RetryPolicy, TimeoutPolicy
builder.add_node(
"call_model",
call_model,
timeout=TimeoutPolicy(run_timeout=120, idle_timeout=30),
retry_policy=RetryPolicy(max_attempts=3),
)
A run_timeout caps the total wall-clock time for one attempt and does not reset when the node makes progress. An idle_timeout limits time without observable progress. Under the default refresh_on="auto", progress refreshes the idle timer; for long-running work without natural progress signals, emit explicit heartbeats as shown in the timeout documentation.
When a timeout is reached, LangGraph raises NodeTimeoutError, which is retryable by default. Writes made by the failed attempt are cleared before a retry. That protects graph state from partial writes, but it is not a transactional rollback of external effects: a request may already have reached a service before the timeout. Set timeouts and retries together only after weighing the cost and side effects of repeating the operation.
Rank #3
- Professional AI & Creator Workstation: AMD Radeon AI PRO R9700 GPU with 32GB GDDR6 is engineered for AI development, professional content creation, and compute-intensive workloads.
- Massive 32GB Memory Capacity: 32GB of GDDR6 memory on a 256-bit bus provides ample bandwidth for large AI models, 8K video editing, and complex 3D rendering.
- Advanced RDNA 4 with AI Accelerators: 64 Compute Units with 3rd Gen Ray Tracing and dedicated 2nd Gen AI Accelerators for groundbreaking AI performance and visual computing.
- Professional Blower Cooling: Efficient single blower design exhausts heat directly out of the chassis, ideal for multi-GPU workstation and server configurations.
- Enterprise-Grade Thermal Solution: Vapor chamber heatsink with industrial Honeywell PTM7950 thermal interface material ensures reliable cooling under sustained professional loads.
Synchronous nodes with timeout settings are rejected at compile time. If a blocking operation needs a timeout, consider placing it in an async node and running the blocking I/O with asyncio.to_thread, where appropriate.
Define what happens after retries are exhausted
For Python langgraph>=1.2, a node’s error_handler can receive failure context after retries are exhausted, update graph state, or return a Command that routes execution to a recovery node. Use that path for a defined action—such as recording a graceful failure or starting a compensation step—rather than treating it as another undifferentiated retry.
Recommended Free Tools
Keep the two decisions separate: the retry condition answers whether the same operation might succeed if tried again; the error handler answers what the graph should do when it cannot continue normally. The Python API and behavior are covered in the fault-tolerance guide.
Rank #4
- FAST RUNS IN THE FAMILY — The 16-inch MacBook Pro with the M5 Pro or M5 Max chip brings next-generation speed and powerful on-device AI to personal, professional, and creative tasks. With all-day battery life, double the starting storage,* and a breathtaking Liquid Retina XDR display, it’s pro in every way.*
- BUCKLE UP — Along with a next-generation CPU, faster unified memory, and up to 2x faster SSD storage,* M5 Pro and M5 Max feature a more powerful GPU with a Neural Accelerator built into each core, delivering faster AI performance and on-device training capabilities. So you can blaze through demanding workloads at mind-bending speeds.
- BUILT FOR AI — Apple silicon, and every major component that powers it, is designed to run demanding on-device AI workloads like LLM inference and training. And Apple Intelligence helps you write, express yourself, and get things done effortlessly with groundbreaking privacy protections at every step.*
- ALL-DAY BATTERY LIFE — MacBook Pro delivers the same exceptional performance whether it’s running on battery or plugged in.*
- MACOS RUNS APPS FAST — All your go-to apps run lightning fast in macOS, including built-in apps like FaceTime and Messages. Plus, built-in virus protection and free software updates help keep your Mac running smoothly and securely.
An interrupt() is a human-in-the-loop pause, not a failure sent through the retry or error-handler path. For unexpected exceptions the application cannot handle, let them surface so they remain diagnosable; see the LangGraph design guidance on error handling.
Persist thread state with a checkpointer
A checkpointer saves graph-state snapshots for a particular thread. Compile the graph with one, then provide a stable thread_id when invoking it so later invocations can continue that thread. Checkpoints support conversation continuity, human review pauses, time travel, and recovery after failures. For example:
graph = builder.compile(checkpointer=checkpointer)
result = graph.invoke(
inputs,
config={"configurable": {"thread_id": "customer-123"}},
)
A store solves a different problem: it holds application-defined data across threads, such as shared facts or preferences. Use a checkpointer for thread-scoped graph state and a store when the application needs cross-thread data; an application may use both. The Python persistence guide explains their scope and setup.
Quick wins for a faster PC:
Clear out junk files and repair common Windows errorsFree Scan →Scan for outdated or missing drivers - takes under a minuteDriver Scan →Repair Windows errors before they cause bigger problemsFix Now →Best Value
- 【High-Performance APU】The MS-S1 MAX features an AMD Ryzen AI Max+ 395 APU, integrating a Zen 5 architecture CPU (up to 5.1GHz, 16C/32T, 64M L3 Cache), an RDNA 3.5 GPU, and an NPU (50 TOPS). The total system output is 126 TOPS. It provides powerful parallel computing capabilities for demanding AI workflows. It is ideal for running local LLMs, multimodal models, and computationally intensive tasks
- 【128GB UMA Memory】Equipped with up to 128GB of LPDDR5x-8000MT/s unified memory, it enables the CPU and GPU to access a shared, high-bandwidth memory pool with extremely low latency. Ideal for large-scale AI inference, 3D workloads, and complex timelines in video editing. It eliminates traditional VRAM bottlenecks, ensuring smoother data transfer during high-intensity computations. The UMA design maximizes performance stability under high loads
- 【Flexible Expansion】The MS-S1 MAX features USB4 V2 (up to 80Gbps), dual 10GbE LAN, HDMI 2.1 (up to 8K60), a full-length PCIe x16 expansion slot, and dual M.2 slots supporting up to 16TB RAID 0/1. Wi-Fi 7 provides stronger signal coverage and a more stable wireless experience. The slide-out design facilitates upgrades and maintenance. It easily adapts to personal, studio, or rack-mount enterprise environments
- 【High-Efficiency Cooling System】Utilizing an aerospace-grade aluminum alloy chassis, copper base plate, six heat pipes, dual turbine fans, and advanced PCM thermal conductive material, it maintains stable cooling performance even under continuous load. This system supports 130W continuous power and 160W peak power operation, with a built-in 320W power supply. It boasts multiple global certifications including CCC, FCC, UL, CE, and UKCA, ensuring stable and reliable operation in various environments
- 【Cluster Design】Two MS-S1 MAX units can be configured as a dual-unit cluster to run a large 235B Q4 model locally, achieving an output speed of 10.87 tok/s. Supporting 2U rack deployment, multiple MS-S1 MAX units can be cascaded into a distributed cluster to create a high-efficiency AI computing center. A cluster of four MS-S1 MAX units successfully ran a DeepSeek-R1 671B Q4 large model. A reserved cluster power-on interface allows for unified start-up and shutdown
Choose storage that matches the environment
InMemorySaverorMemorySaverkeeps checkpoints in process memory; those checkpoints disappear when the process restarts.- The guide identifies
SqliteSaveras local file storage for development andPostgresSaveras a persistent option.
For production, use persistent checkpoint storage rather than relying on process memory. Checkpoint accumulation can increase latency and storage costs, so set an appropriate retention or pruning approach.
Separate Agent Server behavior from graph retry policies
For LangSmith Agent Server deployments, PostgreSQL is the default checkpoint backend and remains required even when MongoDB is configured for checkpoint data. The server’s data-plane documentation also describes a separate retry mechanism for certain transient PostgreSQL errors, limited to three attempts per run. That platform-level behavior is distinct from a node’s RetryPolicy; see the Agent Server data-plane documentation.
Make failures observable and recovery practical
Separate nodes when doing so makes it clear which step failed and allows that step to have its own timeout or retry rule. Keep useful raw state and execution metadata available for debugging and recovery, and format prompts when they are needed rather than obscuring the intermediate state. The LangGraph design guidance discusses intermediate visibility as a reason to distinguish classification and external-service steps.
Quick Recap
- Give each node a clear purpose and a failure strategy matched to its operation.
- Make retry filters reflect the actual transient errors of the dependency.
- Use timeouts only on supported async nodes, and treat timeout retries as potentially repeated external work.
- Route exhausted failures to a deliberate recovery or graceful-failure path.
- Use a persistent checkpointer when thread state must survive process restarts, and manage checkpoint growth.
Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.
The Tool Desk
Outbyte Driver Updater FREEFix the driver behind crashes, sound loss and screen glitchesFind Drivers →Outbyte PC Repair FREERepair Windows errors before they cause bigger problemsFix Now →

