diff --git a/crates/buzz-agent/README.md b/crates/buzz-agent/README.md
index a2504db451..944f7720e0 100644
--- a/crates/buzz-agent/README.md
+++ b/crates/buzz-agent/README.md
@@ -138,6 +138,7 @@ Everything is environment variables. No flags, no config files. (We are a subpro
| `OPENAI_COMPAT_MODEL` | — | Required when provider=openai. |
| `OPENAI_COMPAT_BASE_URL` | `https://api.openai.com/v1` | Point at vLLM, llama.cpp, OpenRouter, Ollama, etc. |
| `OPENAI_COMPAT_API` | `auto` | `auto` \| `chat` \| `responses`. `auto` picks Responses for `*.openai.com`, Chat Completions everywhere else. |
+| `BUZZ_AGENT_SERVICE_TIER` | — | Optional OpenAI processing tier: `auto`, `default`, `flex`, or `priority`. |
| `DATABRICKS_HOST` | — | Required when provider=databricks or provider=databricks_v2. |
| `DATABRICKS_MODEL` | — | Required when provider=databricks or provider=databricks_v2. |
| `DATABRICKS_TOKEN` | — | Optional static bearer escape hatch. If unset, Databricks uses browser OAuth + refresh cache. |
diff --git a/crates/buzz-agent/src/config.rs b/crates/buzz-agent/src/config.rs
index f06849c7d1..c036b2d139 100644
--- a/crates/buzz-agent/src/config.rs
+++ b/crates/buzz-agent/src/config.rs
@@ -683,6 +683,27 @@ pub enum OpenAiApi {
Auto,
}
+/// OpenAI request processing tier. `None` leaves the provider default intact.
+#[derive(Debug, Clone, Copy, PartialEq, Eq)]
+pub enum OpenAiServiceTier {
+ Auto,
+ Default,
+ Flex,
+ Priority,
+}
+
+impl OpenAiServiceTier {
+ /// Return the wire-format value expected by OpenAI APIs.
+ pub fn as_str(self) -> &'static str {
+ match self {
+ Self::Auto => "auto",
+ Self::Default => "default",
+ Self::Flex => "flex",
+ Self::Priority => "priority",
+ }
+ }
+}
+
#[derive(Debug, Clone)]
pub struct Config {
pub provider: Provider,
@@ -730,6 +751,8 @@ pub struct Config {
/// Thinking/reasoning effort level. `None` = use provider default (no
/// thinking config sent). Set via `BUZZ_AGENT_THINKING_EFFORT`.
pub thinking_effort: Option,
+ /// OpenAI processing tier. Set via `BUZZ_AGENT_SERVICE_TIER`.
+ pub service_tier: Option,
}
impl Config {
@@ -824,6 +847,10 @@ impl Config {
hook_servers: parse_hook_servers_env("MCP_HOOK_SERVERS"),
hints_enabled: parse_env("BUZZ_AGENT_NO_HINTS", 0u8)? == 0,
thinking_effort: parse_thinking_effort(env("BUZZ_AGENT_THINKING_EFFORT").as_deref())?,
+ service_tier: parse_service_tier_for_provider(
+ provider,
+ env("BUZZ_AGENT_SERVICE_TIER").as_deref(),
+ )?,
};
cfg.validate()?;
Ok(cfg)
@@ -864,6 +891,7 @@ impl Config {
hook_servers: HookServers::None,
hints_enabled: false,
thinking_effort: None,
+ service_tier: None,
}
}
@@ -951,6 +979,33 @@ impl Config {
}
}
+/// Parse the optional OpenAI service tier. Empty values preserve provider defaults.
+pub fn parse_service_tier(raw: Option<&str>) -> Result
+ {isOpenAi && (
+
+
+
+
+ Controls OpenAI request processing priority. Leave blank to use
+ the project default.
+
+
+ )}
+
{/* Max Rounds */}