Generation controls

Tune temperature, max output tokens, and the extended-thinking budget, and understand how Cordy fits your history into the model's context window.

Cordy keeps generation controls simple and provider-neutral. They live under Settings → Generation (subtitle: "Leave blank to use the provider default."), apply to your next message, and persist across restarts. Every control is global in this version — it applies to all conversations, not per-chat.

Quick reference

ControlTypeUnset meansApplies toAvailability
TemperatureDecimal numberProvider defaultNext sendAlways
Max output tokensWhole numberProvider defaultNext sendAlways
Thinking budgetWhole number (tokens)Extended thinking off / provider defaultNext sendOnly on thinking-capable models

A single Reset to defaults button clears all three back to "provider default." Any field left blank sends no value for that parameter, so the provider's own default applies.

Temperature

Controls how deterministic or creative the model is. Lower values keep answers focused and repeatable; higher values make them more varied and exploratory. Enter a decimal (most providers accept roughly 0.02.0; the exact valid range is enforced by the provider). Leave it blank to use the provider's default.

Max output tokens

Caps how long a single reply can be, as a whole number of tokens. Useful for keeping answers short or staying within a budget. Leave it blank to let the provider decide. Note this is the output cap; the model's overall context window (input + output) is handled separately under context handling.

Thinking budget

For models that support extended thinking, the thinking budget sets how many tokens the model may spend reasoning before it answers.

  • The field appears only when the selected model is thinking-capable. On other models it's replaced by the notice "The selected model does not support extended thinking," and Cordy will not apply a stale budget left over from a previously selected model.
  • A larger budget can improve hard reasoning tasks at the cost of more tokens and latency. Leave it blank to disable extended thinking.
  • On Anthropic (native), this maps directly to Anthropic's extended-thinking budget; on reasoning models via OpenRouter it maps to the equivalent reasoning parameter.

How controls are applied

  • Controls are read fresh at every send, so changing a value takes effect on your next message without restarting anything.
  • The thinking budget is capability-gated at send time as well as in the UI: even if a stale value exists in preferences, it is dropped for a model that doesn't support thinking.
  • Controls are stored as ordinary on-device preferences, not inside conversations, and are not sent for any field you leave blank.

Context handling

Every model has a context window — the maximum total tokens for input and output. Cordy automatically fits your conversation into it so you rarely have to think about it:

  • Newest-first trimming. History is kept from the most recent message backward; the oldest turns are dropped first when a conversation grows past the window.
  • Safety margin. About 15% of the window is held back so a full input plus the streaming reply doesn't overflow mid-answer.
  • Reserved output room. Space for the reply itself is subtracted up front, because the context window counts input and output together.
  • Image budgeting. Images count toward the input budget with a conservative per-image estimate, so multi-image turns don't silently overflow.
  • Token estimation. Token counts use a fast on-device estimator (not a provider round-trip), which is also what powers the estimates on the usage page when a provider omits usage.

When a conversation is too long

If the assembled context still exceeds what the model accepts, the provider rejects the request and Cordy shows "This conversation is too long. Start a new chat or shorten the history." This isn't retryable as-is — start a new conversation or remove older context. See the FAQ for the full error table.