Back

Devan Oyelaran

Alcove AI

Five model families worth knowing

How to read this

These are the five families the router reaches for most often. Every one of them is fictional in the sense that matters here: the names are ours, the behaviour described is what our own routing layer measures, and none of it is a ranking. “Best” is not a property a model has. “Best at this job, at this budget, with this latency ceiling” is.

Read each entry as a shape rather than a score.

Cinder — the dependable generalist

Cinder is the family the router falls back to when a job does not declare an intent. It is competent at nearly everything and exceptional at nothing, which sounds like faint praise and is in fact the highest-value property a default can have.

Reach for it when: you are prototyping, the job mixes several kinds of output, or you do not yet know what the job is.

Avoid it when: you need a specific house style held across dozens of frames. Cinder drifts. Not badly, but noticeably by frame twenty.

Marlin XL — long context, patient

Marlin holds a very large working context and is unusually good at not losing the thread across it. Feed it a forty-page brief and it will still be referencing page three at the end.

The trade is speed. Marlin is the slowest family we route to by a wide margin, and it is priced accordingly. Using it for short jobs is the single most common way people overspend on this platform.

// Route long-context work explicitly; the default router will not
// pick Marlin for a short prompt even when the job would benefit.
await alcove.text.generate({
  prompt: brief, // ~40k tokens
  family: 'marlin',
  maxOutputTokens: 4_000,
});

Prism Diffuse — images, and only images

Prism is a specialist. Given a well-formed visual prompt it produces cleaner composition and more consistent lighting than anything else we route to. Given a prompt that is really a reasoning task wearing a visual costume, it produces something confident and wrong.

The tell is easy: if your prompt contains the word “explain”, Prism is the wrong family.

Tanager 2 — small, fast, cheap

Tanager exists for volume. Classification, extraction, short rewrites, the thousand small calls in a pipeline that nobody thinks about until the invoice arrives. It is roughly a tenth the cost of the generalist and, for those jobs, indistinguishable in quality.

The mistake people make is promoting it. Tanager handles a narrow task beautifully and falls over the moment the task widens. Keep it in the pipeline, keep it away from the user-facing surface.

Halcyon 200k — structure under pressure

Halcyon’s distinguishing property is that it holds a schema. Ask for JSON matching a shape and you will get JSON matching that shape, including on the awkward inputs where other families start improvising fields.

That reliability is worth paying for in exactly one situation: when the output feeds a parser rather than a person. For prose it is stiff, and readers notice.

Choosing between them

A rough decision order that has held up well for us:

  1. Does the output feed a parser? Halcyon.
  2. Is it a high-volume narrow task? Tanager.
  3. Is it purely visual? Prism.
  4. Does the context exceed roughly ten thousand tokens? Marlin.
  5. Otherwise, Cinder.

Run that order for a month, log the cases where it gave you the wrong answer, and you will have a routing policy that fits your work better than any general guide — including this one.