KaustubhandClaude Opus 5.5 516f599723 feat: name failed pages and their causes in page sync reports (#10729)
## 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]>
2026-10-02 14:29:41 +05:30
2026-08-24 18:19:42 +05:30
2024-02-12 21:05:49 +00:00
2026-08-24 18:19:42 +05:30
2025-09-09 15:39:09 +02:00
2025-01-30 20:50:59 +05:30
2026-07-14 22:55:34 +01:00

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.

demo-os

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:

  1. Recommended: Add Agno docs as an MCP server. Add docs.agno.com/mcp to your favourite coding agent.
  2. 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

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.

↑ Back to top

S
Description
Build, run, and manage agent platforms.
Readme Apache-2.0
706 MiB
Languages
Python 99.7%
HTML 0.1%
Shell 0.1%