Community Roundup: April 2026
April 2026 may have been our biggest month yet.
Over the course of nine releases, we shipped fallback models for agents and teams, added SAS token authentication to Azure Blob storage, brought workspace search to SlackTools, expanded human-in-the-loop coverage with post-execution output review, introduced nested workflows as first-class workflow steps, added native support for the llms.txt standard, and rolled out a full Salesforce CRM toolkit.
New releases & features
Nine releases in April. Here are some of the things we shipped:
Fallback Models for Agents and Teams
Agents and teams now stay up through provider failures with automatic fallback models. Pass a fallback_models list to any Agent or Team, and Agno activates the next model in line whenever the primary fails from rate limits, outages, context window overflows, or other retryable errors. Each fallback runs its own independent retry cycle before Agno moves to the next, and the system supports both simple lists and error-specific routing so teams control exactly how failures cascade through the chain. Model strings work too, so pairing model="openai:gpt-4o" with fallback_models=["anthropic:claude-sonnet-4-20250514"] gets you covered in a single line.
See the Fallback Models docs for more.
Azure Blob Storage SAS Token Authentication
AzureBlobConfig now accepts Shared Access Signature (SAS) tokens alongside connection strings and service principal credentials. SAS tokens grant time-scoped, permission-limited access without exposing full account credentials, which makes them the right fit for automated pipelines, temporary access grants, and least-privilege storage configurations. Pass a SAS token directly to AzureBlobConfig alongside the account URL and you're done; existing connection-string and service-principal setups continue to work without migration.
See the Azure Blob Storage Content Source for Knowledge docs for more.
Workspace Search in SlackTools
SlackTools now ships with a workspace search tool that lets agents query messages, files, and content across every channel they can access in a single call. The new search_workspace tool hits Slack's search API directly and returns matching messages and files alongside the existing channel-reading, message-posting, and thread-management capabilities. The tool requires a Slack token with the search:read scope.
View the Slack Tools docs for more.
Post-Execution Output Review for Workflows
Workflows can now pause after a step finishes and wait for a human to inspect the output before it flows downstream. Configure HumanReview(requires_output_review=True) on a Step, Router, or Loop, and the run pauses with the full step output exposed via req.step_output. Reviewers approve as-is with confirm(), reject outright with reject(), reject with feedback to trigger a retry via reject(feedback="..."), or edit the output inline via edit("new output"). The requires_output_review flag accepts either a bool or a callable predicate that receives the StepOutput at runtime, so you can pause selectively for outputs over a length threshold or containing specific keywords. The on_reject setting controls rejection behavior across skip, cancel, retry, and else_branch paths, and max_retries (default 3) caps the retry loop before treating the step as a final rejection. The flat requires_output_review=True parameter on Step still works for backward compatibility.
See the Output Review docs for more.
Nested Workflows as Workflow Steps
A Workflow can now run directly as a step inside another workflow, which means complex orchestrations break cleanly into reusable, independently testable sub-pipelines. Pass a Workflow instance to a Step via Step(name="...", workflow=inner_workflow) or place the workflow directly in the steps list to auto-wrap it under its own name. Inner workflows support the full primitive set, so Condition, Loop, Router, Parallel, agents, and custom executors all compose naturally. Agno deep-copies session state into the inner workflow before execution and merges it back afterward, keeping state consistent across levels. Workflows nest multiple levels deep, and streaming events bubble up with a nested_depth field so consumers tell outer and inner events apart by depth, workflow_id, and workflow_name. The pattern unlocks reusable research, processing, and review sub-pipelines that you build once and compose into larger orchestrations.
See the Nested Workflow docs to learn more.
LLMsTxt Reader and Tools
LLMsTxtTools and LLMsTxtReader add native support for the llms.txt standard, a Markdown-based file that websites publish at /llms.txt to give LLMs a concise, structured index of their documentation, free of navigation, JavaScript, and the other noise that usually wastes context. Agents now fetch, read, and reason over llms.txt files directly, which makes it straightforward to ground agents in up-to-date third-party documentation without building a content pipeline. LLMsTxtReader ingests any llms.txt file into a knowledge base for retrieval and RAG, while LLMsTxtTools exposes the same indexes as a tool agents call dynamically. Both work with any site publishing the standard, including https://docs.agno.com/llms.txt, and require no preprocessing because the files arrive already structured for LLM consumption.
See cookbook for reference.
Salesforce CRM Tools
SalesforceTools brings native Salesforce CRM access to Agno agents, which makes it straightforward to build agents that query records, surface pipeline information, triage support cases, or answer account-state questions. The toolkit replaces the custom API wrappers and manual data exports teams previously needed to integrate Salesforce.
See the Salesforce docs to learn more.
Community projects & showcases
April brought a wave of projects that lean into Agno's depth. Here are some of the highlights:
Darwin.js: Self-evolving AI bazaar by Harish Kotra
A full game simulation where NPC merchants rewrite their own source code when players exploit them. Built with FastAPI, Agno, ChromaDB, and React Flow. Features a cyberpunk 'God View', exploit console, terminal-style agent logs, live code diffing, and memory-aware merchants. The adaptation loop is inspectable instead of opaque—a rare design win.
Check it out on LinkedIn or view the GitHub repo.
Deep Agents: Opinionated harness for long-running work by Alexandre Evangelista
An opinionated harness for building deep agents with the Agno feel: easy to call, modular inside, and ready for long-running work. It combines Team, Agent, Skills, SqliteDb, memory, learning, and workspace tools behind a small interface. The CLI also adds Agno-native context compression and multimodal attachments for models that support images, audio, video, or files.
Check it out here.
Coding Agent and Graph RAG with CodeIndex by Dmytro Zezyk
A repo analysis toolkit covering 6+ domains, including architecture, security, testability, and more. Built with Agno, so it includes features like Learning Machine and team spawning, allowing it to learn and adapt over time. Designed specifically to solve the “AI can’t see the whole repo at once” problem.
Check it out here.
Agno Dev Toolkit: MCP server that makes your IDE an Agno expert by Pablo Mereles
Built an MCP server that fixes common Agno coding mistakes at the IDE level. Solves the problem where AI assistants (Cursor, Claude Code) write Agno code confidently but incorrectly—missing max_num_calls, using raw dicts for state, blocking event loop with time.sleep. Connects directly to your IDE so you get correct Agno patterns without leaving your editor.
View the GitHub repo.
Building Dissi with Agno and MCP by K Om Senapati
Deep dive on building a Discord bot with Agno and Model Context Protocol. This deep dive is one of the most-engaged tutorials this month on Dev.to and shows how to wire up MCP servers with Agno agents for real-time Discord interactions.
Read it here.
Contributor shoutouts
Community MVPs
- @juliomsilva — Shipped the full DoclingTools toolkit (#6277) that gives agents on-demand document conversion across PDFs, DOCX, PPTX, XLSX, HTML, images, audio, and video, with exports to Markdown, plain text, HTML, JSON, YAML, DocTags, and VTT. Each output format is a separately togglable tool, advanced PDF handling exposes configurable OCR engines, language settings, table structure recognition, picture classification, and per-document timeouts. The PR landed with unit tests and a cookbook example, the kind of complete contribution that drops in production-ready and stays that way.
- @alejandro-workpath — Built and shipped the Azure AI Foundry Claude model provider (#6816), giving organizations on Azure a first-class path to Claude that uses the same configuration patterns Agno applies across other providers. The right unlock for teams that need Azure-hosted deployments to satisfy compliance, data residency, or enterprise procurement requirements.
- @raghavenderreddygrudhanti — Contributed the full Salesforce CRM toolkit (#7079), bringing native Salesforce access to Agno agents for record queries, pipeline visibility, support case triage, and account state lookups. Replaces the custom API wrappers and manual data exports teams previously needed to integrate Salesforce, in a single PR.
- @fehmisener — Caught and fixed the shared HTTP/2 client injection across all OpenAI-based models (#7328), the source of transient 400 errors under concurrent usage. Each provider now manages its own client, eliminating the conflicts that hit teams running concurrent agent workloads. The kind of fix you only catch when reading production stack traces.
First-time contributors
Welcome to everyone making their first contribution this month!
- @korntewin — else_steps not being copied for Condition step type (#7198)
- @wildchron — Missing MIME types for .msg, .xlsx, .xls in AgentOS file upload (#7329)
- @luisnmartins — Workflow StepInput.to_dict not serializing File objects (#7364)
- @kaiisfree — IndexError in get_pull_requests when fewer PRs than requested limit (#7353)
- @lethuan127 — Removed extra session_type query filter in AsyncMongoDb.get_session (#7392)
- @lawrence3699 — Error handling for get_top_hackernews_stories (#7343)
- @Shiv1909 — audio_total_tokens metric computation across providers (#7417), default sort order enum fix in remotedb routes (#7452)
- @raghavenderreddygrudhanti — Salesforce CRM tools (#7079), full toolkit
- @alejandro-workpath — Azure AI Foundry Claude provider (#6816)
- @RowanLane — AGUI input_content storing current input instead of message history (#5469)
- @YizukiAme — TeamSession.from_dict() no longer mutating input mapping (#7462)
- @ArielTM — Included extra_messages in memory pipeline gate check (#7470)
- @asifshaikh — Fixed README typo referencing non-existent agno_agent.py (#7663)
- @edlng — Fixed outdated Redis cookbook docs (#7615)
Your first PRs are the hardest to write. Thank you for shipping them.
On the roadmap
- Agno 3.0
- Run Tables Denormalization
- Updates to Learning
- Distributed-Safe Global State
- Studio: Full parity for Agno Primitives
- Update to Evals and Guardrails 🔃
Get involved
There's never been a better time to contribute.
- ⭐ Star Agno on GitHub
- 💬 Join our Discord
- 📖 Read the docs
- Check out open issues
- 🚀 Share what you're building. We want to feature YOUR project next month.
Keep building, keep shipping, keep pushing the boundaries of what agents can do.
— Team Agno


.png)