CustomLabs
Topics

Shipping to Production

The gap between a working notebook and a system that runs reliably and cheaply at scale is usually a bigger lift than the original prototype. This is our work on closing that gap.

Start with The AI Release Path if you own shipping AI to production. It's for engineers who need a reliable way to ship a change and reverse it fast.

In the Handbook

Guides#

The Agentic Delivery Playbook

The operating model for delivery with a fleet of coding agents. It has six control surfaces and 22 practices, plus the metrics that catch review debt early.

26 min read Read →

The Agent Tool Interface

Agents fail at the tool interface more often than at the model. The design rules for building an interface that holds up in production.

25 min read Read →

The AI Release Path

How to ship a change to an AI system, ramp it safely, and reverse it fast if it turns out to be wrong.

34 min read Read →

The Agent Adoption Playbook

The pilot worked. Here is how the rest of your engineers start using it, and the numbers that separate real adoption from seat activation.

33 min read Read →

MCP in Production

MCPMCP is an open standard for connecting LLM applications to tools and data sources. standardizes the wire format. Identity, the catalog and the trust boundary are still yours to build, plus a ten-question gate for a new server.

42 min read Read →

Architectures#

Comparisons#

Insights#

Your RAG Demo Lied to You

Retrieval that looks flawless on ten clean PDFs falls apart on a real corpus. We explain why, and what a retrieval eval requires.

7 min read Read →

Case studies#

Patterns#

Intent router to specialists

A fast, cheap classifier routes each request to one narrow specialist agent. Each specialist holds only the tools and instructions its job needs. The router picks the specialist. The specialist does the task.

Read →

Bounded agent loop

A bounded agent loop runs under an explicit step budget and token ceiling. A wall-clock limit also applies. A termination contract forces every run to end in a small set of named states, such as success or escalation. When the budget runs out first, the harness ends the run itself.

Read →

Typed tool contract

A strict JSON schema defines every tool argument. A call that fails validation gets a structured, actionable error. The schema uses enums for known value sets and validated patterns for IDs. It marks fields required where needed and offers no free-text catch-all. The system never coerces a failed call or passes it to execution.

Read →

Human checkpoint before irreversible actions

Each tool gets the narrowest permission its task needs. A human confirms any action that cannot be undone before it runs. Examples are a refund or an external message. A plausible-looking model decision is never enough on its own. The two controls work together. Least privilege limits the blast radius of anything that slips through. The checkpoint stops the worst actions from running at all.

Read →

Failure modes#

Stale index serves deleted content

Your retrieval index was built once at ingest and never told the source changed. When a document is edited or deleted, nothing re-embeds the new version or tombstones the old chunk. The stale vector keeps scoring well and keeps getting served with confidence, giving the reader no signal that it is out of date.

Read →

Unbounded agent loop

The agent has no step budget, no token budget, and no way to recognize it is stuck. A failing tool call stays in its context and keeps looking like a reasonable next try. The agent keeps trying variations of the same failed approach. Something external, such as a timeout or a human, finally stops it.

Read →

Tool argument hallucination

Loose tool schemas (free-form string IDs, everything optional) give the model room to fill a gap with something plausible-looking instead of something real. With no server-side validation catching the mismatch before execution, a confidently invented ID reaches a system that expects a real one.

Read →

Silent tool failure

The tool returned HTTP 200 with an error message in the body, or an empty result set. The agent treated the absence of data as evidence and missed the failure. Nothing in the response forced a distinction between "nothing matched" and "something broke."

Read →

Context overflow drops the task

As the conversation grows, a naive truncation strategy drops the oldest messages to stay under the context window. The oldest messages usually hold the system prompt and the original task state. The agent keeps running with no memory of what it was supposed to do.

Read →

Injection via retrieved content

Yes. Retrieved content arrives on the same channel as instructions. A document, ticket, or webpage crafted or compromised to contain commands can make the model execute them with its real tool permissions. The system has no built-in way to tell 'instruction from us' apart from 'text we retrieved.'

Read →

Tools#

Source: https://customlabs.io/topics/shipping-to-production/

↑↓ navigate ↵ select esc close