Product

Intelligent model routing with Auto

Shannon now defaults to Auto: each request is matched to the right model before work starts — Qwen3-Next for straightforward requests, Sonnet 4.6 for the hard ones — and the moment you pick a model yourself, your choice wins.

Shannon now picks the model for you. Auto is the new default: it matches each request to the right model before any work starts, and the moment you choose a model yourself, your choice wins.

Shannon is the AI workspace I’m building, and it runs on several models on purpose. That’s the Mixture of Models principle: each task should go to whichever one does it best today. Auto makes that routine, request by request, without you playing dispatcher.

Every request gets the right-sized model

Auto sits at the top of the model picker, tagged Recommended, and it’s what you get if you never touch the menu. It routes between two models: straightforward requests go to Qwen3-Next, and work that needs the strongest reasoning goes to Sonnet 4.6. The decision is made once, before the first word of the answer, and it holds for the whole request; the model never changes mid-task.

[TODO: screenshot of the model picker showing Auto with the Recommended tag as the default]

Your pick always wins

The menu didn’t go away, because models genuinely differ: Kimi K2 Thinking will grind through a task that takes two or three hundred steps in a row. You can pick Gemini 3.5 Flash, Kimi K2 Thinking, Grok 4.3, or GLM-5 for any request, and Plus members can also pick Sonnet 5 or Opus 4.8. The moment you choose, Auto stands down and your pick is honored.

The one exception is a pick that can’t do the job at all: choose a model that can’t see the image you attached, and Shannon moves the request to one that can. That’s the same no-loyalty idea running in the other direction.

I held this line because of what happened when GPT-5 shipped its automatic model switcher: the backlash boiled down to “when routing whiffs, it feels broken.” An automatic picker without an escape hatch turns every miss into a fight with the product. With one, a miss is a menu click.

When Auto isn’t sure, you get the strong model

Auto doesn’t gamble. If a request is ambiguous, or the check that reads it doesn’t answer in time, the request goes straight to Sonnet 4.6. So when Auto is in doubt, the miss you can get is an easy question answered by the strongest model, never hard work handed to a lighter one.

A conversation keeps its model

Follow-ups stay on the model that has been doing the work. That model already has the conversation warm (prompt caching keeps your context loaded, so its answers start faster), and switching engines mid-thread would throw that away. The stickiness works in one direction only: if the work grows harder over the course of a conversation, routing can ratchet up to a more capable model. It never bounces you around.

Every reply names the model that answered

You never have to guess which model did the work. Every reply names the model that produced it, right on the message. If an answer isn’t landing, you know exactly what Auto picked and exactly what to switch to.

Under the hood

Routing runs once per request. Plain rules go first: does the request need to see images, and how much material is in play. Only genuinely ambiguous text goes to a second, smaller model that reads the request and suggests a tier under a hard time limit. That check runs while Shannon gathers the context for your request, so routing adds no wait you can feel. Any doubt or timeout falls back to Sonnet 4.6.

Auto picks between two models for now. I’m building a map of which model is best at which kind of work, and as it fills in, more of the menu becomes routable.

How we got here

Auto is the visible end of a longer effort to make Shannon run well on more than one model. Onboarding each one was the real work: running it against the evaluation suite until it performed, working out what it costs at real usage, and verifying it calls tools the way the agent expects. An engine that fumbles a file edit breaks the run no matter how smart it is.

Capability gaps got turned into tools. Web search was, for a while, something only Gemini offered; rather than route every search-shaped request to one model, I made web search a tool that any model can call. A gap in one engine became a capability for all of them, and routing never has to trade away a feature.

Try it at shannon.bot, no sign-in needed. Ask for something and watch the model name land on the reply.

Found a mistake, or want to argue about an invariant? eng@shannon.dev or send a PR on the blog repo.