CLAUDE LABJP
MODEL — Claude Fable 5.1 and Claude Mythos 5.1 arrived on September 1. They are the same model; only the level of safeguards differs between themPRICING — Cache reads dropped 75%, from $1.00 to $0.25 per million tokens. Anthropic measures that as roughly 25% lower cost on typical workloads and up to 45% on agentic onesCAVEAT — Only cache reads got cheaper. Base input stays at $10 and output at $50, so the savings land on setups that re-read the same long context, not on one-off promptsAPI — The model ID is claude-fable-5-1, generally available through the Claude API as well as AWS, Google Cloud, and Microsoft AzureEFFORT — At low and medium effort it matches or beats Fable 5; at higher effort it pulls further ahead. The choice is the same result for less, or more reach for the same spendCLI — Claude Code v2.1.263 shipped on September 6 with a single CLI change: fewer crashes and steadier commands. No new features in this oneMODEL — Claude Fable 5.1 and Claude Mythos 5.1 arrived on September 1. They are the same model; only the level of safeguards differs between themPRICING — Cache reads dropped 75%, from $1.00 to $0.25 per million tokens. Anthropic measures that as roughly 25% lower cost on typical workloads and up to 45% on agentic onesCAVEAT — Only cache reads got cheaper. Base input stays at $10 and output at $50, so the savings land on setups that re-read the same long context, not on one-off promptsAPI — The model ID is claude-fable-5-1, generally available through the Claude API as well as AWS, Google Cloud, and Microsoft AzureEFFORT — At low and medium effort it matches or beats Fable 5; at higher effort it pulls further ahead. The choice is the same result for less, or more reach for the same spendCLI — Claude Code v2.1.263 shipped on September 6 with a single CLI change: fewer crashes and steadier commands. No new features in this one
Articles/API & SDK
API & SDK/2026-07-24Advanced

Running Four Sites From One Managed Agent Definition

A design for collapsing four near-identical Managed Agents into one base definition, using agent version pinning and session-local overrides — with a validated factory and the traps I hit along the way.

Managed Agents3Agent SDK5MCP53Operations18Multi-tenant

Premium Article

As an indie developer, I run four blog sites with agents that behave almost identically.

The only differences are part of the system prompt, which MCP connectors they reach, and which skills they load. And yet, for a while, I kept a completely separate agent definition for each site.

Every time I fixed something shared, I had to sync four places by hand. Fix one and forget another, and a single night's batch would run on a stale prompt. Watching near-identical definitions drift apart, little by little, quietly wears you down.

Reading the Managed Agents model properly is what finally let me collapse this. One base agent definition, kept whole. Site-specific color then lives in two separate layers: which agent version a session points at, and a session-local override applied after the session exists.

Here is how I shaped that into something that doesn't go wrong at 3 a.m., along with the validation code I actually use.

Why one base definition instead of four

I had three real options.

ApproachSyncing shared partsVisibility of differencesPermission-accident risk
A separate definition per siteManual, drifts easilyGood (independent)Low, but definitions keep multiplying
One definition with branching inside the promptNot neededPoor (prompt bloat)Medium (fuzzy boundaries)
One definition, differentiated by version and sessionNot neededGood (differences are explicit)Can be kept low by design

What decided it for me was that the differences end up in one readable place in code.

"For this site, these MCP servers and these tools" sits right where the session starts, in plain sight. That's far easier to reason about than burying conditionals deep in a prompt.

There is one thing that trips you up first, though.

The counterintuitive part: you cannot put model or system on a session

The first version of my code tried to hand the session its own model, its own system prompt, and its own tools, all at creation time.

Those arguments don't exist.

The agent field on sessions.create() accepts exactly two things: an agent ID string, or a pointer object of the form { type: "agent", id, version }. model, system, tools, mcp_servers, and skills are all top-level fields on agents.create() — on the agent object itself. A session only points at that definition.

What I realized, after reading the session parameter table for the third time, was that the idea of coloring each session wasn't wrong. The layer where color can be applied simply sat lower than I had assumed.

Here's how the two layers divide up:

What you want to varyHow you actually do itWhen it applies
model / system / skillsAgent versions — each update appends a new immutable versionDecided by which version the session points at
tools / mcp_servers / vault_idsA session-local override via sessions.update()While the session is idle
The container setupenvironment_id, given at session creationSession creation only

A session-local override creates no new agent version and doesn't propagate back to the agent object. It applies inside that one session and disappears with it. That property is exactly why the bookkeeping section below exists.

Thank you for reading this far.

Continue Reading

What follows includes implementation code, benchmarks, and practical content we hope you'll find useful. This site runs without ads — server and development costs are supported entirely by members like you. If it's been helpful, we'd be truly grateful for your support.

WHAT YOU'LL LEARN
A validated startup factory that separates what belongs on the agent from what belongs on the session
Why session-local arrays replace rather than merge, and the trap that silently dropped my tools
How to decide swap granularity so one base agent can drive four sites
Secure payment via Stripe · Cancel anytime

Unlock This Article

Get full access to the rest of this article. Buy once, read anytime. This site is ad-free — your support goes directly toward keeping it running.

or
Unlock all articles with Membership →
Share

Thank You for Reading

Claude Lab is ad-free, supported entirely by members like you. We publish practical guides daily with implementation code, benchmarks, and production-ready patterns. If you've found it useful, we'd love to have you on board.

  • Copy-paste ready implementation code
  • New advanced guides published daily
  • $5/mo or $15 for lifetime access
View Membership →

Related Articles

API & SDK2026-07-31
The 400-Character Preview That Was Still Holding On to a Megabyte
Truncating tool output in your own MCP server does not free the original. Node's sliced strings keep the parent alive. Here is the measured 13-character boundary, which flattening tricks actually work, and a heap-snapshot audit script that counts the retained parents for you.
API & SDK2026-06-30
When a Tool Result Is Too Big and Melts Your Context Window: Designing Cursor-Based Pagination
When a list tool returns hundreds of rows at once, an agent's context can collapse in a single call. Here is a cursor-based pagination design that keeps tool output small and protects your token budget, with working code.
API & SDK2026-06-21
Connecting Managed Agents to Services You Don't Want to Expose: MCP Tunnel Design
How to connect Claude Managed Agents to an internal MCP server that is never exposed to the public internet. We cover the MCP tunnel, self-hosted sandboxes, authorization boundaries, and graceful degradation when things break.
📚RECOMMENDED BOOKS
Build a Large Language Model (From Scratch)
Sebastian Raschka
LLM Dev
Prompt Engineering for LLMs
Berryman & Ziegler
Prompting
AI Engineering
Chip Huyen
AI Eng
* Contains affiliate links