## Summary External agents now support durable-queue run IDs, detached background execution, resumable indexed SSE and cancellation. Polling sees PENDING, RUNNING and the terminal run. Claude uses a per-run SDK client; Codex retains turn handles so the owning process can interrupt either SDK through direct calls or shared cancellation intent. Native agents and external agents share the background task/slot/SSE infrastructure. Queue preparation, error/shutdown persistence, retry fencing and scoped A2A polling/cancellation dispatch to external-agent helpers. A cancelled row is preserved if its durable ticket remains queued after a crash, including on adapters without atomic run primitives. ## Type of change - [x] Bug fix - [x] New feature - [ ] Breaking change - [x] Improvement - [ ] Model update - [ ] Other: --- ## Checklist - [x] Code complies with style guidelines - [x] Ran format/validation scripts (`./scripts/format.sh` and `./scripts/validate.sh`) - [x] Self-review completed - [x] Documentation updated (comments, docstrings) - [x] Examples and guides: Relevant cookbook examples have been included or updated (if applicable) - [x] Tested in clean environment - [x] Tests added/updated (if applicable) ### Duplicate and AI-Generated PR Check - [x] I have searched existing [open pull requests](https://github.com/agno-agi/agno/pulls) and confirmed that no other PR already addresses this issue - [ ] If a similar PR exists, I have explained below why this PR is a better approach - [x] Check if this PR was entirely AI-generated (by Copilot, Claude Code, Cursor, etc.) --- ## Additional Notes Depends on #10904 (transcripts and tool persistence), which depends on #10903. Merge in that order before this PR. This PR targets main and currently includes both dependencies. Review the phase 2 changes with the comparison `feat/harness-agents-phase1-astra..feat/harness-agents-phase2-astra`. Refresh the branch onto main after the dependencies land so the final diff contains only lifecycle changes. Validation: 736 unit/regression tests, including the native background tests unchanged; 5 enabled integration cases with no skips. Real Claude and Codex turns were cancelled after content arrived and stored CANCELLED. SQLite and AsyncSQLite exercise status fallbacks, retries, cancellation, SSE replay and user scoping. Guard mutation results are retained locally. Required formatting and validation passed. Codex's cookbook explicitly sets `approval_mode="deny_all"`. Multi-replica cancellation and replay need shared cancellation/event-stream backends. Redis multi-replica deployment was not exercised. Database-stored events after the event-stream TTL, team background factoring, step replay/HITL and workspace persistence are follow-ups. SQLAlchemy 2.0.52 matches the demo environment and passes typing; the unchanged base has six mypy errors with the freshly resolved 2.1.4. ### Review fixes Worker-owned terminal persistence failures now propagate so durable tickets retry instead of completing over RUNNING rows. PostgreSQL writes SDK session metadata and the fenced run in one transaction; stale attempts change neither, and session-write failures roll back the run update. Missing prepared worker rows fail closed. Async lookups on sync in-memory SQLite retain the same connection thread as persistence. Includes the phase 1 warning and CI dependency fixes. Fresh validation: 751 unit/regression tests; 12 external-agent PostgreSQL integration cases; 13 existing native PostgreSQL fencing/status tests (temporary copies pointed at the disposable database port); 13 lifecycle/storage mutations killed. Required format and validation pass. One pre-existing native AsyncMock warning remains. The SDK mirror-failure reproduction passed; live provider cancellation/resume was not rerun for these fixes. --------- Co-authored-by: ysolanky <[email protected]> Co-authored-by: kausmeows <[email protected]> Co-authored-by: Claude Fable 5.1 <[email protected]> Co-authored-by: Yash Pratap Solanky <[email protected]>
Build, run, and manage agent platforms.
Introduction
Agno is a framework and runtime for agent platforms. Build agents, run them as a service, manage your platform using a web UI.
- Build your agent platform using the Agno SDK.
- Run your agent platform using the AgentOS runtime.
- Manage everything using the AgentOS UI.
Agno allows you to own your agent stack. Maintain control of your data, memory, and security posture (JWT-based RBAC), and turn your agent platform into a learning loop with simulations and usage data.
Get started
Hand this prompt to your coding agent (Claude Code, Cursor, Codex):
Help me set up my agent platform.
Clone https://github.com/agno-agi/agentos-railway into a folder called
agent-platform, cd in, read the README, and follow the get started guide.
Your coding agent will set up your agent platform and run it locally using Docker, giving you a REST API for serving your agents, a Postgres database for storing your data and traces, an MCP server, and a control plane.
Deploying somewhere else? Use the same prompt but point it to a different repo. The starter templates are identical except for the deploy scripts: swap agentos-railway for agentos-docker, agentos-aws, agentos-gcp, agentos-azure, agentos-fly, agentos-render, agentos-modal, or agentos-helm.
Prefer to code by hand?
Features
- Production API. 50+ endpoints with SSE and websockets to build a product on top.
- Storage. Store sessions, memory, knowledge, and traces in your own database.
- 100+ integrations. Connect to GitHub, Slack, Postgres, and more using pre-built toolkits.
- Context Providers. Access live data from Slack, Drive, wikis, MCP, and custom sources.
- Human approval. Pause runs for user confirmation. Block tools that require admin approval.
- Observability. Monitor with OpenTelemetry tracing, run history, and audit logs.
- Security. Get JWT-based RBAC and multi-user, multi-tenant isolation out of the box.
- Interfaces. Expose your agents via Slack, Telegram, WhatsApp, Discord, AG-UI, A2A.
- Scheduling. Cron-based scheduling and background jobs with no external infrastructure.
- Deploy anywhere. Run on any cloud platform that runs containers. Docker, Railway, AWS, GCP.
Use Agno with your coding agent
Two options:
- Recommended: Add Agno docs as an MCP server. Add docs.agno.com/mcp to your favourite coding agent.
- Add Agno docs as an indexed source. In Cursor: Settings → Indexing & Docs → Add
https://docs.agno.com/llms-full.txt. Also works in VSCode, Windsurf, and similar tools.
Read the full guide here.
Community
- (https://x.com/AgnoAgi): follow for releases and demos
- Newsletter: monthly updates on what's shipping
Contributing
See the contributing guide.
License
Agno is distributed under the Apache-2.0 license.
Telemetry
Agno sends a telemetry event per agent run so we know which model providers to prioritize. Prompts, messages, and outputs are never sent. Disable by setting AGNO_TELEMETRY=false.