v1.11.0

casey/justv1.11.0Aug 3, 2026by nicko-ai

AI Summary

Adds realtime voice calls, per-user OAuth for MCP servers, and system reminders, while changing the default model to `gpt-5.6-luna`.

Key Highlights

  • Realtime voice agents with OpenAI and xAI support.
  • OAuth for MCP servers with per-user token buckets.
  • System reminders to inject transient guidance without history persistence.
  • Default model changed to `gpt-5.6-luna`.
  • Fixed token-isolation bug in OAuth flow.

Breaking Changes

  • Default model changed from SDK default to `gpt-5.6-luna`.
  • Per-user OAuth storage change: tokens moved from shared `default` bucket to per-user buckets.

New Features

  • Realtime voice agents
  • OAuth for MCP servers
  • System reminders
  • Test files (`test_*.py`) are skipped in tools folder

Full Release Notes

This release adds realtime voice calls, per-user OAuth for MCP servers, and first-class system reminders. It also changes the default model, corrects usage-cost accounting, and fixes a token-isolation bug found by driving the OAuth flow end to end.

### Voice agents

Run an existing agency as a realtime voice service. Use `run_realtime(agency=...)` for a dedicated server, add `/{agency}/realtime` to an existing app with `run_fastapi(enable_realtime=True)`, or call `Agency.to_realtime()` to build your own. Ships with OpenAI and xAI support, a packaged browser client, and a Twilio phone bridge ([#735](https://github.com/VRSEN/agency-swarm/pull/735)).

**Limit worth knowing:** a call keeps one voice from start to finish. The realtime API refuses to change voices once the model has spoken, so the voice is chosen when the call starts and stays fixed even across handoffs. Set `voice=` on your entry agent, or pass it to `run_realtime()`.

### OAuth for MCP servers

Connect OAuth-protected MCP servers with `MCPServerOAuth`. Sign-in is deferred until the agent calls `authenticate_mcp_server`, and tokens are stored in per-user buckets. FastAPI streams `oauth_redirect` and `oauth_status` events so a web client can drive the browser flow ([#734](https://github.com/VRSEN/agency-swarm/pull/734)).

Two follow-up fixes: explicitly configured scopes are no longer silently replaced by the ones a resource server advertises, and a storage failure now surfaces its real cause instead of a generic cancellation ([#758](https://github.com/VRSEN/agency-swarm/pull/758)).

**Upgrade note:** if you used per-user OAuth before this release, tokens were written to a shared `default` bucket rather than per-user buckets, because the user identity did not survive into the tool driver. That is fixed ([#763](https://github.com/VRSEN/agency-swarm/pull/763)). Affected users authorize once more, after which each user's tokens are stored separately.

### System reminders

`Agent(system_reminders=...)` injects transient guidance before model calls without writing it to thread history. Pass a plain string for the common case, a callable for dynamic text, or use `AfterEveryUserMessage` and `EveryNToolCalls`. Tool-count reminders cover both local and hosted tools ([#732](https://github.com/VRSEN/agency-swarm/pull/732), [#746](https://github.com/VRSEN/agency-swarm/pull/746)).

Creating the first agent with reminders installs a process-wide boundary around SDK `Runner` calls and `RunState` serialization; that is what keeps reminders out of persisted history on direct `Runner` runs. Processes that never create a reminder-enabled agent leave the SDK untouched.

### Default model

The framework default is now `gpt-5.6-luna`, with reasoning effort pinned to `none`. Passing `model=None` explicitly resolves to that default rather than falling through to the SDK's. `openai-agents` moves from 0.14.8 to 0.18.1 ([#741](https://github.com/VRSEN/agency-swarm/pull/741)).

To keep a different model, pass it explicitly: `Agent(..., model="your-model")`.

### Cost accounting

Tiered prices are applied per request rather than to a summed total, so several small calls are no longer priced as one large one. Cache-write tokens are charged at the cache-creation rate when the provider reports them, and an ambiguous tiered aggregate raises rather than returning a guess ([#759](https://github.com/VRSEN/agency-swarm/pull/759)).

Bundled prices for `gpt-5.6-luna` and `gpt-5.6-terra` were corrected after OpenAI's July 30, 2026 cut, and builds no longer overwrite those corrections with stale upstream data ([#760](https://github.com/VRSEN/agency-swarm/pull/760), [#761](https://github.com/VRSEN/agency-swarm/pull/761)).

### Tools

Files named `test_*.py`, `*_test.py`, and `conftest.py` in a `tools_folder` are skipped instead of being imported as tools, so pytest files can live beside the tools they cover ([#730](https://github.com/VRSEN/agency-swarm/pull/730)).

### Documentation

The OAuth and voice guides now open with a working example instead of a configuration matrix, and the agent overview no longer describes the old default-model behavior ([#757](https://github.com/VRSEN/agency-swarm/pull/757), [#764](https://github.com/VRSEN/agency-swarm/pull/764)).

### Maintenance

MCP OAuth and manager modules were split into focused files with no public import changes ([#756](https://github.com/VRSEN/agency-swarm/pull/756)). Dependency updates: coverage, FastAPI, MCP, datamodel-code-generator, griffe, langchain-core, websockets, and Ruff.

**Full change range:** [`v1.10.5...v1.11.0`](https://github.com/VRSEN/agency-swarm/compare/v1.10.5...v1.11.0)