Skip to content
Ian Cunningham monogramIan CunninghamAI systems builder

Blog

Practical notes on AI systems that need to hold up

Writing on LangGraph, workflow design, reliability, and the delivery details that make AI systems easier to understand, operate, and trust.

Articles

Browse the blog

Exploring Microsoft's AI Agent Adoption Framework

Exploring Microsoft's AI Agent Adoption Framework

A practical look at Microsoft's AI agent adoption framework, and why successful agent adoption starts with business value, governance, data readiness, and operational maturity.

Temporal and Pydantic AI: A Durable Human-in-the-Loop Research Demo

Temporal and Pydantic AI: A Durable Human-in-the-Loop Research Demo

A practical walkthrough for running AI agent work inside durable Temporal workflows with Pydantic AI, FastAPI, and Next.js.

Learning the Pydantic AI Agent: A Practical Roadmap

Learning the Pydantic AI Agent: A Practical Roadmap

A simple roadmap for learning the core concepts behind Pydantic AI's Agent class without getting lost in the implementation details.

The 5% of Enterprise AI Projects That Succeed Aren't Winning by Accident

The 5% of Enterprise AI Projects That Succeed Aren't Winning by Accident

MIT found that just 5% of enterprise AI pilots are generating meaningful returns. For many project professionals, the reasons why may sound surprisingly familiar.

Pydantic Graph and CopilotKit: A Minimal Full-Stack Workflow Demo

Pydantic Graph and CopilotKit: A Minimal Full-Stack Workflow Demo

A practical walkthrough for connecting a Pydantic Graph workflow to a CopilotKit frontend with FastAPI and AG-UI.

Pydantic AI and CopilotKit: A Minimal Full-Stack Agent Demo

Pydantic AI and CopilotKit: A Minimal Full-Stack Agent Demo

A practical walkthrough for connecting a Pydantic AI agent to a CopilotKit frontend with FastAPI and AG-UI.

PostgreSQL: The Swiss Army Knife for Agentic Databases

PostgreSQL: The Swiss Army Knife for Agentic Databases

Modern AI systems increasingly tempt developers toward specialized databases for every problem. In practice, PostgreSQL can often handle far more than people realize.

In the AI Regulatory Landscape, Agentic Graphs Can Make a Lot of Sense

In the AI Regulatory Landscape, Agentic Graphs Can Make a Lot of Sense

When legal requirements, human approvals, sensitive data, operational guarantees, and governance concerns enter the picture, deterministic workflows start looking a lot more like responsible system design.

What It Takes to Build Production-Ready LangGraph Systems

What It Takes to Build Production-Ready LangGraph Systems

A production-oriented checklist for LangGraph systems: deterministic tests, evaluations, parallel workflows, control flow, and observability.

Command vs Send in LangGraph: Choosing the Right Primitive

Command vs Send in LangGraph: Choosing the Right Primitive

When to use Command for control flow and Send for data parallelism in LangGraph, with practical testing examples for each.

Understanding LangGraph Workflows with LangSmith Traces and pytest

Understanding LangGraph Workflows with LangSmith Traces and pytest

How LangSmith tracing complements pytest by showing the execution path behind LangGraph routing, retries, aggregation, and failures.

Testing Parallel LangGraph Workflows Without Losing Control

Testing Parallel LangGraph Workflows Without Losing Control

How to test LangGraph fan-out, Send-based parallel work, aggregation, and branch failure behavior without relying on output guessing.

Testing Isn’t Enough: Evaluating LangGraph Workflows That Actually Work

Testing Isn’t Enough: Evaluating LangGraph Workflows That Actually Work

A practical evaluation pattern for LangGraph using pytest, small datasets, deterministic scorers, and LangSmith-backed experiment tracking.

How to Structure LangGraph Tests That Actually Scale

How to Structure LangGraph Tests That Actually Scale

How to structure LangGraph tests into unit, graph, and failure layers so the suite stays useful as the workflow grows.

Stop Testing AI Outputs. Start Testing State

Stop Testing AI Outputs. Start Testing State

A better way to test LangGraph workflows by treating the graph as state transitions instead of judging final answer text.

Progress Indication with LangGraph and CopilotKit

Progress Indication with LangGraph and CopilotKit

A practical pattern for rendering progress cards in CopilotKit chat while LangGraph runs long-running agent workflows.

When LangGraph Fails, Your UX Shouldn’t: Designing Graceful Error Handling

When LangGraph Fails, Your UX Shouldn’t: Designing Graceful Error Handling

A practical pattern for routing LangGraph failures to a user-facing error handler without breaking the user experience.

Want to see these ideas in a working interface?