We run AI workflow automation in production every week, and we publish what we learn here. AI Workflow Lab is a hands-on journal for engineers wiring up n8n, LangGraph, and Model Context Protocol agents into systems that actually ship — with the timeout retries, observability, and cost ceilings that separate a demo from a Tuesday-morning automation handling 40,000 invoices.
Production n8n AI Agents
n8n stopped being just a Zapier alternative the moment it shipped native AI Agent and Tool nodes. Our team builds workflows where a single agent node reasons over a webhook payload, calls three sub-workflows as tools, and writes structured JSON back to Postgres — all without a Python service in the loop. The traps are real: token budgets blow up when you forget to summarise long memory, queue mode behaves differently from main mode under load, and the official queue mode docs are required reading before you push past a few hundred executions an hour.
We cover the boring infrastructure most tutorials skip: pinning a self-hosted instance to a specific n8n version, backing up the SQLite or Postgres state, wiring OpenTelemetry traces out of custom nodes, and the exact pattern we use for human-in-the-loop approval gates that survive a worker restart.
LangGraph for Real Apps
LangChain's chain-of-runnables abstraction was never going to scale to multi-step agents with branching, retries, and shared state. LangGraph is what we reach for now — explicit nodes, explicit edges, and a checkpointer you can actually inspect. We write up the patterns we use in shipped products: routing supervisors, parallel tool fan-out with a reducer, durable execution against Postgres checkpoints, and how to keep a graph runnable from both a FastAPI endpoint and a background Celery worker without rewriting it twice.
Where the docs go quiet, we go loud. Streaming partial state to a Next.js client over Server-Sent Events, replaying a checkpoint after a model swap from Claude 4.7 to GPT-5, and the evaluation harness we plug into OpenAI Evals so a graph change can't silently regress accuracy on the regression suite.
MCP for Internal Tools
The Model Context Protocol is the piece most teams underestimate. Once your Claude desktop, Cursor, and internal agent runtime all speak MCP, you stop writing one-off tool wrappers and start treating company systems — Jira, Snowflake, the internal billing API — as servers that any compliant client can discover. We document how to stand up an MCP server in TypeScript or Python, scope it with OAuth, and keep the tool schemas tight enough that an agent doesn't hallucinate a parameter that costs you money.
We also publish the unglamorous side: writing a Dockerfile that runs an MCP server behind a reverse proxy, rate-limiting noisy clients, and the audit trail we keep so security can answer "which agent touched this row?" six months later.
The articles below are the working notes — failure modes, copy-pasteable configs, benchmark numbers from our own staging cluster. Browse the latest below, or jump straight to the tag that matches whatever's on fire this week.