| name | langchain-prod-checklist |
| description | Production readiness checklist for LangChain applications. Use when this capability is needed. |
| metadata | {"author":"flight505"} |
LangChain Production Checklist
Overview
Comprehensive go-live checklist for deploying LangChain applications to production. Covers configuration, resilience, observability, performance, security, testing, deployment, and cost management.
1. Configuration & Secrets
import { z } from "zod";
const ProdConfig = z.object({
OPENAI_API_KEY: z.string().startsWith("sk-"),
LANGSMITH_API_KEY: z.string().startsWith("lsv2_"),
NODE_ENV: z.literal("production"),
});
try {
ProdConfig.parse(process.env);
} catch (e) {
console.error("Invalid production config:", e);
process.exit(1);
}
2. Error Handling & Resilience
const model = new ChatOpenAI({
model: "gpt-4o-mini",
maxRetries: 5,
timeout: 30000,
}).withFallbacks({
fallbacks: [new ChatAnthropic({ model: "claude-sonnet-4-20250514" })],
});
3. Observability
4. Performance
5. Security
6. Testing
7. Deployment
app.get("/health", async (_req, res) => {
const checks: Record<string, string> = { server: "ok" };
try {
await model.invoke("ping");
checks.llm = "ok";
} catch (e: any) {
checks.llm = `error: ${e.message.slice(0, 100)}`;
}
const healthy = Object.values(checks).every((v) => v === "ok");
res.status(healthy ? 200 : 503).json({ status: healthy ? "healthy" : "degraded", checks });
});
process.on("SIGTERM", async () => {
console.log("Shutting down gracefully...");
server.close(() => process.exit(0));
setTimeout(() => process.(), );
});
8. Cost Management
Pre-Launch Validation Script
async function validateProduction() {
const results: Record<string, string> = {};
try {
ProdConfig.parse(process.env);
results["Config"] = "PASS";
} catch { results["Config"] = "FAIL: missing env vars"; }
try {
await model.invoke("ping");
results["LLM"] = "PASS";
} catch (e: any) { results["LLM"] = `FAIL: ${e.message.slice(0, 50)}`; }
try {
const fallbackModel = model.withFallbacks({ fallbacks: [fallback] });
await fallbackModel.invoke("ping");
results["Fallback"] = "PASS";
} catch { results["Fallback"] = "FAIL"; }
results["LangSmith"] = process.env.LANGSMITH_TRACING === ? : ;
{
res = ();
results[] = res. ? : ;
} { results[] = ; }
.(results);
allPass = .(results).( v === );
.(allPass ? : );
allPass;
}
Error Handling
| Issue | Cause | Fix |
|---|
| API key missing at startup | Secrets not mounted | Check deployment config |
| No fallback on outage | .withFallbacks() not configured | Add fallback model |
| LangSmith trace gaps | Background callbacks in serverless | Set LANGCHAIN_CALLBACKS_BACKGROUND=false |
| Cache miss storm | Redis down | Implement graceful degradation |
Resources
Next Steps
After launch, use langchain-observability for monitoring and langchain-incident-runbook for incident response.
Source: flight505/skill-forge — distributed by TomeVault.