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

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.

Build a Multi-Agent Workflow with LangGraph
A Python tutorial: model a researcher, writer, and reviewer as a LangGraph state machine, with shared state, conditional edges, and a review loop.

Build an AI Code Review Bot for Your Pull Requests
A TypeScript tutorial: a GitHub Action that sends your PR diff to Claude and posts a focused, useful review comment, without the noise.

RAG Is Not a Silver Bullet · It's a Retrieval Problem
Why most retrieval-augmented generation systems underperform, and the unglamorous fixes that actually move the needle.

How to Evaluate an AI Development Partner
A practical checklist for CTOs vetting an AI development agency, covering evals, IP, security, cost, and the questions that separate builders from demo shops.

Vendor Lock-In with LLMs: How to Keep Providers Swappable
Prices change, models get deprecated, and providers face export limits overnight. How to architect LLM features so you can switch providers without a rewrite.

Cutting LLM Cost 50% Without Wrecking Quality
A practical playbook for bringing down LLM spend: model routing, prompt caching, context discipline, and batching, with the quality tradeoffs spelled out.

What It Really Costs to Run an LLM Feature in Production
Token bills are only part of it. The true cost of an LLM feature: inference, retrieval infra, evals, monitoring, and the engineering time nobody budgets for.

Should We Self-Host an LLM? A Cost and Control Framework
Self-hosting an open-weight model can save money or quietly cost more. A CTO's framework for deciding based on volume, privacy, control, and the true total cost.

RAG vs Fine-Tuning vs Long Context: Which, and When
Three ways to get a model to use your data, often confused. When retrieval, fine-tuning, or a big context window is the right call, and when to combine them.

When AI Is the Wrong Tool (and Cheaper Options Win)
Not every problem needs an LLM. A candid look at where rules, search, or plain software beat AI, and how to tell before you spend the budget.