# Community Roundup: September 2026

> Agno's September recap: PublicSurface puts agents in front of anonymous users, page storage turns your docs into agent knowledge, rerankers work on every vector database, and AgentOS MCP servers scale across replicas.

- Published: 2026-10-05
- Author: Cosette Cressler
- Categories: Community, Product
- Canonical: https://www.agno.com/articles/community-roundup-september-2026
- Markdown: https://www.agno.com/articles/community-roundup-september-2026.md

Agno shipped seven patch releases in September, headlined by PublicSurface for public agents, page storage for docs-backed knowledge, and MCP servers that scale across replicas. More than 50 community contributors landed changes alongside us, and the community shipped some incredible projects of its own.

There's a lot to cover, so let's dive in.

## New releases & features

### PublicSurface serves agents to anonymous users

Say you want a product assistant on your marketing site. Visitors aren't logged in, and they shouldn't get anywhere near your admin API or your internal teams.

Pass `public=PublicSurface(...)` to `AgentOS` and list the components anonymous users may reach. Everything you leave off that list stays private. Public requests run against per-client and global quotas, per minute and per day, and AgentOS counts them in PostgreSQL so every replica enforces the same numbers. Request size, run time, output size, and concurrent runs all have ceilings you can set.

Later in the month, PublicSurface gained support for sharing an AgentOS with the Control Plane. Set `authorization=True` and one URL serves anonymous chat on the routes you picked, while verified JWTs reach the full REST API under their scopes.

Read the changelog entries on [PublicSurface](https://www.agno.com/articles/serve-agents-to-the-public-with-publicsurface) and [running it with the Control Plane](https://www.agno.com/articles/run-the-control-plane-and-a-public-agent-on-one-agentos), or learn more about [PublicSurface](https://docs.agno.com/agent-os/public-surface) in the docs.

### Page storage turns your docs into agent knowledge

Keeping an agent in step with your docs usually means a crawler, a chunker, and a vector table that drift apart. A refresh dies halfway through, and the agent serves new text against old vectors.

`Knowledge.sync_pages` takes a site's `llms.txt` URL, discovers the pages, fetches their Markdown, embeds them, and publishes each page's text, catalog entry, and vectors in one transaction. A page either publishes whole or keeps its previous version. Unchanged pages skip re-embedding, and the sync report lists every page that failed or was removed.

Once the pages are published, the `PageFileSystem` toolkit lets an agent work through them with `ls`, `tree`, `rg`, `grep`, `cat`, and `head`, the way an engineer works through a repo. Vector search finds the right page, and the agent then reads all of it. The toolkit is read-only: no shell, no writes, and bounded output.

Read the changelog entries on [page storage](https://www.agno.com/articles/publish-your-docs-as-agent-knowledge-with-page-storage) and [PageFileSystem](https://www.agno.com/articles/give-agents-a-read-only-filesystem-over-your-docs), or learn more about [published pages](https://docs.agno.com/knowledge/published-pages) in the docs.

### Rerankers now work on every vector database

`Knowledge.search()` now runs the reranker itself. Before, reranking had to be built into each vector database adapter, and only some adapters had it.

Pass a reranker to `Knowledge` and every search goes through it, on any vector database. Agno widens the fetch first, so the reranker has a bigger pool of candidates to reorder. Two new rerankers ship with it: [`MMRReranker`](https://www.agno.com/articles/get-diverse-search-results-with-the-mmr-reranker) swaps near-duplicate results for diverse ones, and [`RecencyReranker`](https://www.agno.com/articles/rank-newer-documents-higher-with-the-recency-reranker) ranks newer documents higher. `CohereReranker` and your own rerankers work too.

Setting `reranker` on a vector database still works but now logs a deprecation warning. Move it to `Knowledge(reranker=...)`.

Read the [full changelog entry](https://www.agno.com/articles/rerank-knowledge-search-on-any-vector-database), or learn more about [reranking](https://docs.agno.com/knowledge/concepts/search-and-retrieval/reranking) in the docs.

### Elasticsearch joins the vector databases

Teams that already run Elasticsearch for search and logs can now keep agent knowledge there too. The new `Elasticsearch` vector database supports vector, keyword, and hybrid search, metadata filters, rerankers, async, and per-user isolation through a `user_id` field. Hybrid search works on every Elasticsearch license, and you can switch it to reciprocal rank fusion on Platinum, Enterprise, and trial licenses.

Read the [full changelog entry](https://www.agno.com/articles/search-knowledge-in-elasticsearch-with-vector-keyword-and-hybrid-search), or learn more about the [Elasticsearch vector database](https://docs.agno.com/knowledge/vector-stores/elasticsearch/overview) in the docs.

### AgentOS MCP servers scale out

[`MCPConfig(stateless=True)`](https://www.agno.com/articles/serve-mcp-statelessly-so-any-replica-can-answer-any-request) serves `/mcp` without tracking sessions, so any replica can answer any request and a multi-instance deployment no longer needs session affinity. It's off by default, because stateless serving also drops server-initiated notifications and SSE resumability.

Two more additions make an AgentOS MCP server easier to discover and connect to. [`GET /mcp/server-card`](https://www.agno.com/articles/agentos-now-serves-an-mcp-server-card) lists the tools your server offers before a client connects. `MCPConfig` can also serve your tool server [at its own hostname](https://www.agno.com/articles/serve-your-mcp-server-at-its-own-hostname), like `mcp.example.com`, without the routing middleware you used to write.

On the client side, [`MCPTools(protocol_mode="auto")`](https://www.agno.com/articles/mcptools-can-now-negotiate-the-newest-mcp-protocol-era) negotiates the newest MCP protocol version both sides support, including the sessionless 2026-07-28 version. The default stays `"legacy"`, so existing servers are unaffected. A community contributor built this one (more below).

Learn more about the [AgentOS MCP server](https://docs.agno.com/features/mcp-server) and [MCP tools](https://docs.agno.com/tools/mcp/overview) in the docs.

### Azure OpenAI deployments get the Responses API

`AzureOpenAIResponses` gives your Azure deployment the tools, structured output, streaming, and background responses of `OpenAIResponses`. Agno's `AzureOpenAI` model only offered Chat Completions until now.

Read the [full changelog entry](https://www.agno.com/articles/use-the-responses-api-with-azure-openai-deployments), or see the [cookbook](https://github.com/agno-agi/agno/blob/main/cookbook/90_models/azure/openai/responses.py) for reference.

## New tools & integrations

Also shipped in September:

- **New model providers**: [llmman](https://www.agno.com/articles/llmman-is-now-a-supported-model-provider) and [Y-API](https://www.agno.com/articles/y-api-joins-agno-as-a-model-provider), an OpenAI-compatible gateway.
- **[GandrTools](https://www.agno.com/articles/gandrtools-adds-gandr-text-to-speech-to-your-agents)**: agents can turn text into speech through the Gandr TTS API.
- **[Bring your own Bedrock client](https://www.agno.com/articles/bring-your-own-async-client-to-bedrock)**: Bedrock accepts an async client you configure yourself.
- **[MCP tools return audio](https://www.agno.com/articles/mcp-tools-now-return-audio)**: when an MCP tool returns audio, `MCPTools` decodes it and adds it to `run.audio`.
- **[Public custom routes](https://www.agno.com/articles/mark-custom-routes-public-without-turning-off-auth)**: mark individual custom routes public while authorization stays on for everything else.
- **[AG-UI protocol 1.0](https://www.agno.com/articles/the-ag-ui-interface-supports-ag-ui-protocol-1-0)**: the AG-UI interface handles tool results sent as lists of content parts, so paused runs resume cleanly.
- **[Slack retries](https://www.agno.com/articles/slack-now-answers-messages-whose-first-delivery-was-lost)**: the Slack interface now answers a message whose first delivery never reached AgentOS. It used to drop the retry.
- **[Cancelled runs say where they stopped](https://www.agno.com/articles/cancelled-runs-now-say-where-they-stopped)**: `cancellation_stage` tells you whether a run never started, stopped mid-run, or was waiting on a human.
- **[Dependencies can read the run](https://www.agno.com/articles/dependency-callables-can-now-read-the-run-input-and-session)**: callables in an agent's `dependencies` can read the run input and the session.

## Breaking changes

A few September releases changed behavior. The ones most likely to affect you:

- Knowledge ingestion now reports embedding failures. Content that used to show `completed` may now show `failed` or `partial`, and embedders raise `EmbeddingError` where they used to return an empty vector.
- `Knowledge` constructor arguments are keyword-only, so `Knowledge("docs")` becomes `Knowledge(name="docs")`.
- `CodingTools` makes `run_shell` opt-in with `enable_run_shell=True`.
- With `authorization=True` and `PublicSurface(mcp=True)`, MCP accepts only `localhost` by default. Add your domain to `MCPConfig(allowed_hosts=[...])`.

Read the [release notes](https://github.com/agno-agi/agno/releases) before you upgrade.

## Community projects & showcases

A few of the things people built with Agno in September:

### Workspace Council: a governed multi-agent council for your workspace by Anshul Raj, Mohamed Tahir, and Mujtaba Mohimtulay

Built at the AI Tinkerers Dubai hackathon, Workspace Council puts six specialized Agno agents to work across the web, Slack, and the Ambiguous workspace app. They pull documents and email context, research with Exa, draft decision-ready artifacts, and run an adversarial critic loop on every draft. Every write waits for human approval, and a CopilotKit Mission Control view shows each handoff as it happens.

Read more on [LinkedIn](https://www.linkedin.com/posts/anshul-raj-372740202_agentseverywhere-aiagents-copilotkit-ugcPost-7504510433589071872-uHlP).

### Vega: voice trading inside OpenAlgo by Marketcalls (@marketcallsHQ)

OpenAlgo is an open-source trading platform for Indian markets that works with 35+ brokers. Its new assistant, Vega, lets you talk to the platform and place trades by voice. Agno runs the agents, and LiteLLM keeps it model-agnostic.

Check it out on [X](https://x.com/marketcallsHQ/status/2099579349460750708).

### An agent council for pressure-testing ideas by Tarun Jain

Pick a room for your niche in a pixelated world, pitch an idea, and six Agno agents with their own personas interview you, research with Exa, debate each other, and land on a collective opinion. Tarun built it to test agent-to-agent communication, comparing coordinator and routing orchestration with an A2A branch. The code will be open-sourced alongside a video walkthrough.

Read more on [LinkedIn](https://www.linkedin.com/feed/update/urn:li:activity:7507055553433677824).

## Contributor shoutouts

### Community MVPs

- **@basnijholt**: Fixes across the 3.x line. `SqliteDb` bulk upserts now apply the session owner check, empty Anthropic tool arguments survive replay, and nullable document titles in Claude citations no longer break ([#9937](https://github.com/agno-agi/agno/pull/9937), [#8970](https://github.com/agno-agi/agno/pull/8970), [#10147](https://github.com/agno-agi/agno/pull/10147), [#9941](https://github.com/agno-agi/agno/pull/9941)).
- **@ProgrammerPlus1998**: Migrated the MCP client and the AgentOS MCP server to `mcp` 2.x, which brought `protocol_mode` to `MCPTools` ([#9269](https://github.com/agno-agi/agno/pull/9269)).
- **@hugoaimlapi** (AI/ML API): Repaired the AIMLAPI model integration, then added `AIMLAPITools` for image, video, speech, and transcription behind one key ([#9898](https://github.com/agno-agi/agno/pull/9898), [#10276](https://github.com/agno-agi/agno/pull/10276)).
- **@luisnmartins**: Added `.zip` and `.eml` as AgentOS upload types, so archives and email files go straight into a run ([#9193](https://github.com/agno-agi/agno/pull/9193)).

### More great contributions

- **@ericcurtin** (Docker): Added llmman as a model provider ([#9863](https://github.com/agno-agi/agno/pull/9863)).
- **@rastagan-git**: Added the Azure OpenAI Responses model ([#9841](https://github.com/agno-agi/agno/pull/9841)).
- **@ddellspe-vl**: Let Bedrock take an async client you provide ([#9531](https://github.com/agno-agi/agno/pull/9531)).
- **@kinKingen**: Added `AuthorizationConfig.excluded_route_paths` for public custom routes ([#9295](https://github.com/agno-agi/agno/pull/9295)).
- **@jiweiyeah**: Added Y-API as an OpenAI-compatible model provider ([#10326](https://github.com/agno-agi/agno/pull/10326)).
- **@devansh173**: Made MCP tools return audio as audio artifacts ([#10036](https://github.com/agno-agi/agno/pull/10036)).
- **@yetuge**: Four PRs, including DeepSeek thinking-model detection in `OpenAILike` and UTF-8 reads and writes in `LocalFileSystemTools` ([#10342](https://github.com/agno-agi/agno/pull/10342), [#10538](https://github.com/agno-agi/agno/pull/10538)).
- **@BlueX888**: Three fixes, including real image MIME types for Gemini and keeping falsy tool results like `0` and `[]` ([#9887](https://github.com/agno-agi/agno/pull/9887), [#9948](https://github.com/agno-agi/agno/pull/9948)).
- **@devYRPauli**: Stopped `RecursiveChunking` from emitting duplicate trailing chunks and added grouped-shape support to the PowerPoint readers ([#9919](https://github.com/agno-agi/agno/pull/9919), [#10037](https://github.com/agno-agi/agno/pull/10037)).
- **@ericdelorefice**: Made a failed async run delete raise an error, so a dropped connection no longer looks like a missing run ([#10682](https://github.com/agno-agi/agno/pull/10682)).
- **@runshouse** (Magic Hour AI) and **@DanceNitra**: Added cookbooks for the Magic Hour hosted MCP server and inspeximus memory ([#10057](https://github.com/agno-agi/agno/pull/10057), [#10146](https://github.com/agno-agi/agno/pull/10146)).
- **Reader fixes**: @RaycarlLei, @Minouccc, @n1uz1, @harbinresearcher, @lakers-abing, @emme1t, @tdog54646, @daleselaji-dev, @Kyousuk1e, and @baba9811 fixed edge cases in the knowledge readers, from text streams in the Text, Markdown, and CSV readers to CR line endings and scalar JSON roots.
- **Docs and cookbook cleanup**: @Shxiao101, @Theater-ahyeon, @simpleqt, and @xizhuomengcontin fixed dead links, broken imports, and docstrings across the cookbook.

Every one of you made Agno better. Thanks for building with us.

## Get involved

Want to contribute to Agno?

- ⭐ [Star Agno on GitHub](https://github.com/agno-agi/agno)
- 💬 [Join our Discord](https://agno.link/discord)
- 📖 [Read the docs](https://docs.agno.com/)
- 🛠️ Check out [open issues](https://github.com/agno-agi/agno/issues)
- 🚀 Share what you're building. We want to feature your project next month.

**_— Team Agno_**
