Building a production agent is not one big decision. It is twelve small ones, and most teams make them one panicked browser tab at a time — a framework chosen from a launch tweet, a model chosen from a leaderboard, an observability tool chosen after the first outage. This is the map we wish we'd had: the twelve decisions in order, our default for each, and the single condition that should make you deviate.
Read the table first, then the reasoning. Every row links the full head-to-head so you can check our work rather than trust our verdict. The through-line across all twelve: in July 2026 the frontier is good enough that your bottleneck is almost never the model's intelligence. It's cost, context, and trust. Pick accordingly.
The one principle#
Optimize for cost and trust, not benchmark IQ. Agents in production rarely fail because the model wasn't smart enough. They fail because the context window was mismanaged, a tool errored silently, spend wasn't capped, or nobody could reconstruct what happened. So the defaults below all lean the same way: start with the cheapest, most legible thing that clears your quality bar, and buy back control — a bigger model, a real framework, self-hosted compute — only where a specific number forces it. (For what those choices actually cost per month, see the companion one-person-company agent bill.)
Model & framework: ship first, optimize later#
1. Default model. Use a frontier default where reasoning quality decides the outcome, and drop to a cheaper "workhorse" tier the moment token cost, not quality, is your bottleneck — but only after you measure cost per completed task, not price per token. If your volume genuinely dwarfs your quality needs, the rent-vs-own math on open weights is worth running. Most teams over-buy IQ and under-buy throughput.
2. Framework. Inherit a loop to ship, own the graph when control matters. If your agent is one tool called in a loop, a while-loop and a good prompt win. When you need branching and human-in-the-loop, adopt a runtime — the Claude Agent SDK vs LangGraph decision is exactly "inherit a working loop" vs "own the state graph," and in TypeScript the AI SDK 7 vs LangGraph split is the same shape.
3. Orchestration. Keep control flow deterministic and let the LLM decide only at the leaves. An LLM planner that reschedules the whole task tree is impressive in a demo and undebuggable in production. Reach for deterministic over LLM orchestration until the task is genuinely open-ended, and know when to reach for skills vs MCP vs subagents.
Runtime & context: the two silent killers#
4. Context strategy. Long-running agents die from context, not compute. Use compaction for long runs and context editing to protect the prompt cache; reach for subagents when isolating a subtask beats editing the shared window.
5. Runtime. Start with a managed sandbox — you get a running agent in an afternoon and pay only for what you use. Self-host when a number forces it: the bill crosses break-even, cold starts break the UX, or compliance wants the compute in your VPC. Our Cloud Run vs E2B vs Modal vs Fly teardown is the map for that choice.
Memory & retrieval: don't over-build#
6. Memory. Start with plain retrieval; add a memory layer only when recency and cross-session recall actually matter. The agent memory vs RAG line is real, and when your retrieval needs to check itself, Self-RAG vs Corrective RAG is the pattern to reach for before you buy a vector database you don't need yet.
Observability & evals: instrument before you scale#
7. Observability. Wire OTel-native LLM tracing on day one — retrofitting it after an outage is how you lose a weekend. If you already run an APM, the Langfuse vs Phoenix vs Honeycomb comparison covers the LLM-native-vs-lineage trade.
8. Structured output. Prefer constrained decoding to retry-and-pray. Instructor vs Outlines vs BAML covers when you want raw constrained decoding versus Pydantic ergonomics on a hosted model.
9. Evals. Put a cheap eval in CI before you invest in trace-evals — a regression gate on ten cases catches more than a dashboard nobody opens. Promptfoo vs Phoenix is the CI-gate-vs-trace-eval split.
Money & plumbing: the parts founders skip#
10. Payments. Two different problems: metering machine spend (per-call) and delegating human spend (mandates). The AP2 vs x402 vs ACP comparison sorts them out; flip to card rails when you need disputes and refunds.
11. Web data. Split search from extraction — a discovery API to find pages, an extraction API to turn them into clean tokens. Tavily vs Exa vs Firecrawl is the whole decision on one page.
12. Transactional email. Pick for developer experience while volume is low; move to a cost/deliverability provider when sends dominate the bill. Resend vs Postmark vs Amazon SES has the break-even.
The meta-decision#
The last decision is when to stop deciding. Nine of these twelve rows are stable for a quarter or more; only models and payments are moving fast enough in mid-2026 to reward re-litigating. Pin your versions, write down why you chose each component, and revisit only the two rows the market is actually reshaping. A working stack you understand beats an optimal stack you assembled from anxiety — and if you're still choosing your coding environment, the solo-founder coding subscription question is the thirteenth decision we'll cover next.



