Skip to main content

Overview

Slowdown makes a model respond more slowly than its provider does. GoModel measures how long the upstream call took and waits an extra fraction of that time before returning the response. The setting is a factor of extra time: Use it to test client timeouts, loading states, and retry logic, or to see how an app feels on a slower model without switching providers. Leave it unset in production, where it has no purpose. Slowdown is off by default.

Configure a slowdown

Set Slowdown on a concrete model or a redirect (alias). Active factors range from 0.1 to 10. 0 explicitly disables slowdown, including one inherited from the target model. An empty value leaves the setting unspecified.

Dashboard

Open Models, edit a model or virtual model, and fill Slowdown (extra inference time). Models with an active slowdown show it in their row.

config.yaml

Environment variable

Admin API

A value outside the active range returns 400. Slowdown needs a model: a provider-wide selector such as openai/* is rejected.

Precedence

  • An alias’s own slowdown wins over its target model’s slowdown.
  • An alias without a value inherits the slowdown of the target model it resolves to. Set the alias to 0 to opt out.
  • For a load-balanced virtual model, inheritance uses the target chosen for that request.
  • A model’s own slowdown can be set exactly (openai/gpt-4o) or model-wide (gpt-4o, on every provider); the exact value wins. A more specific entry that leaves slowdown empty, or whose user_paths exclude the caller, does not hide a broader one, so a provider-wide access rule never turns a model’s slowdown off.
  • In a chain, only the outer virtual model’s slowdown applies.
  • A slowdown set on a model with user_paths applies only to requests from those user paths.

What is slowed

Failed upstream calls return without a delay. Delays honor request cancellation: a client that disconnects stops waiting immediately. Passthrough requests, batches, and Realtime WebSocket sessions are not slowed.

Streaming and memory

For a streamed response, GoModel reads the upstream in the background and releases each chunk at its scaled arrival time. A chunk that arrived 2 seconds into the stream with factor 0.5 reaches the client at 3 seconds, so the provider’s relative chunk timing is preserved. Chunks waiting for release are held in memory. A large factor on a long or high-volume stream, or on a large audio response, can use substantial memory.
Last modified on November 3, 2026