## Summary When a page fails during `Knowledge.sync_pages` / `async_sync_pages`, nothing says which page it was. `SyncReport` carries only counts and error codes, and the log line is `Page sync failed (RuntimeError)`. On a deployed docs corpus, one of 3,913 pages failed, and the only way to find it would have been querying the catalog tables directly. - **`SyncReport.failed_paths`:** the site paths (e.g. `"/guides/setup.md"`) of pages that failed to publish or delete in the run. It's capped at the first 20, like `errors`; `failed` stays the full count. It defaults to `()`, so existing callers and stored reports are unaffected. - **Logs name the page and the cause:** `Page sync failed for /guides/setup.md (SyncFailed: sync_failed <- ConnectError: [Errno 104] Connection reset by peer)`, plus a new `Page delete failed for …` warning on the prune path. Previously the fetcher's underlying error was dropped and the log said only `SyncFailed`. The cause chain is one line, bounded to 300 characters, logs only. How this was found: on a Render deployment, every full sync of docs.agno.com failed 1–2 random pages. Fetching each page in isolation, from Render or locally, never failed. Only wrapping the fetcher during a real sync revealed `ConnectError: [Errno 104] Connection reset by peer` on a different page each run. With this PR, the first failed run's log would have said that. This lets applications tell users which pages to check, and set their own tolerance. One example: treat a run where a handful of thousands of pages failed as a success that needs a retry. Agno's own `status="partial"` semantics, and pruning only after a clean run, are unchanged. ## Type of change - [ ] Bug fix - [ ] 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) - [ ] 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 - Tests: `tests/integration/knowledge/test_page_storage.py` now asserts `failed_paths` for three cases: a publication failure after the vector write (plus its logged path and cause), a failed first sync and its clean retry (which reports none), and a failed prune deletion. A unit test formats the exact `SyncFailed <- ConnectError` chain from production. Against PostgreSQL 18 + pgvector, together with `test_page_contract.py` and `test_per_page_content_rows.py`: 234 passed. - `ruff format --check` is clean on the changed files; `format.sh` was not applied because it reformats unrelated files on current `main`. `./scripts/validate.sh`: ruff passes, and mypy has the same 54 pre-existing errors as `main`, none in these files. - Cookbook: `27_public_pages/README.md` describes reading a partial report. TEST_LOG has an entry. - Independent of agno-agi/agno#10726 (discovery and MDX fixes); the two touch different files. 🤖 Generated with [Claude Code](https://claude.com/claude-code) --------- Co-authored-by: Claude Opus 5.5 (1M context) <[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.