Notes from the foundry
Engineering essays on generative AI, retrieval systems, and what it takes to ship intelligent software to production.

How to use Gemini's new Omni Flash model for video generation
A developer's guide to working with the new Gemini Omni Flash preview model and the Interactions API for conversational video editing.

Vercel AI SDK 7: What Actually Changed
The breaking changes, the new agent primitives, and what a v6 codebase needs before it will run on the Vercel AI SDK 7 release.

Build an Agent with Human Approval Using AI SDK 6
AI SDK 6 just shipped ToolLoopAgent and built-in human-in-the-loop approval. Here's how to build an agent that pauses for a human before it runs a risky tool.

Build a RAG Chatbot Over Your Docs with Claude and pgvector
A complete, working tutorial: ingest documents, embed them into Postgres with pgvector, and answer questions with Claude, citations included.

Connect Your App to MCP Servers with the AI SDK
AI SDK 6 made MCP support stable with @ai-sdk/mcp, including OAuth and resources. A hands-on guide to giving your LLM real tools through MCP.

Build an AI Agent with Tool Use Using the Claude API
Go past chat: build an agent that calls real functions in a loop to get things done, with the Claude tool-use API in TypeScript.

Build a Coding Agent with the Claude Agent SDK
The Claude Agent SDK is how Anthropic builds agents like Claude Code. Here's how to use it to build your own file-editing coding agent.

Streaming AI Chat UI with the Vercel AI SDK
A hands-on Next.js tutorial: stream tokens from an LLM to a polished chat UI using the Vercel AI SDK, the App Router, and a single route handler.

Build a Multi-File Refactor Agent with GPT-5.5
GPT-5.5 is OpenAI's strongest model yet for long agentic coding. Here's how to build an agent that does safe multi-file refactors across a real codebase.

Build a PDF Data Extraction Pipeline with an LLM
Turn messy PDFs into clean, validated JSON with Python and Claude: parsing, structured prompts, Pydantic validation, and confidence checks.

Spin Up Sandboxed Subagents with the Antigravity CLI
Google's Antigravity 2.0 CLI lets you delegate work to sandboxed subagents. A practical walkthrough of wiring it into a real dev workflow.

Build an MCP Server to Connect Claude to Your Database
A practical tutorial on the Model Context Protocol: build a TypeScript MCP server that lets Claude query your database safely, with tools and guardrails.

Self-Host a Coding LLM with vLLM
Open-weight coding models are good enough to self-host now. A practical guide to serving one with vLLM and calling it through an OpenAI-compatible API.

Build a Semantic Search Engine with Embeddings and Qdrant
A Python tutorial: embed your data, store it in Qdrant, and run semantic search that understands meaning, then add keyword hybrid search and reranking.

Shipping Generative AI Features Without Breaking Production
A field guide to taking LLM-powered features from a flashy demo to a system you can trust on a Friday afternoon.

Build an AI Voice Agent with Twilio and a Realtime Model
Wire a phone number to an AI: a Node tutorial connecting Twilio Media Streams to a realtime speech model so callers can talk to your agent.

Build an OAuth-Secured MCP Server
Secure a Model Context Protocol server with OAuth 2.1. A TypeScript walkthrough of bearer token validation, scopes, and protecting tools.

Build a Durable Multi-Step Workflow with Claude Opus 4.8
Opus 4.8 shipped with a dynamic workflow capability. Here's how to build a crash-safe, multi-step workflow that an LLM drives end to end.

Add an Eval Harness to Your LLM App
Stop shipping on vibes. A TypeScript tutorial for building a lightweight eval harness: datasets, scorers, an LLM-as-judge, and a CI gate.

Build a Code Completion Backend with Codestral
Codestral is Mistral's model built for code. Here's how to stand up a fill-in-the-middle code completion backend you can wire into an editor.