# Page sync logs its progress and final counts

> Agno Knowledge.sync_pages() now writes debug log lines for the sync lock, discovery, progress and the final updated, deleted, failed and unknown counts. A new AgentOS cookbook serves synced docs through an agent filesystem.

- Published: 2026-10-08
- Author: Ayush Jha
- Categories: Changelog
- Canonical: https://www.agno.com/blog/page-sync-logs-its-progress-and-final-counts
- Markdown: https://www.agno.com/blog/page-sync-logs-its-progress-and-final-counts.md

With debug logging on, Agno's `knowledge.sync_pages()` logs a progress line after the first page, after every 25th page and after the last one, each reading processed over discovered pages with running `updated` and `failed` counts. A long sync shows where it is without a progress callback.

We synced the three pages of `https://llmstxt.org/llms.txt` into an embedded PostgreSQL with an OpenAI embedder.

```python
from agno.utils.log import set_log_level_to_debug

knowledge.setup()
set_log_level_to_debug()
report = knowledge.sync_pages(url="https://llmstxt.org/llms.txt")
```

```text
DEBUG   Starting page sync: namespace=llmstxt-docs; waiting for the sync lock
DEBUG   Discovering documentation pages: namespace=llmstxt-docs
DEBUG   Discovered 3 pages; downloading, embedding, and publishing
DEBUG   Page sync progress: 1/3 processed; updated=1, failed=0
DEBUG   Page sync progress: 3/3 processed; updated=3, failed=0
DEBUG   Page sync completed: namespace=llmstxt-docs; updated=3, deleted=0, failed=0, unknown=0
```

The same script on the previous release printed nothing between the call and the returned `SyncReport`.

A new AgentOS cookbook puts the synced pages to work. It syncs `https://docs.agno.com/llms.txt` into PostgreSQL-backed knowledge pages in the `product-docs` namespace, indexes them in PgVector, and gives the agent a `FileSystem` on that namespace, so the agent can search the docs and open them as files.

```python
knowledge = Knowledge(
    content_db=db,
    page_store=FileSystem(db=db, namespace="product-docs"),
    vector_db=PgVector(db=db, table_name="product_doc_vectors", embedder=OpenAIEmbedder(id="text-embedding-3-small")),
)

filesystem_agent = Agent(
    id="filesystem-agent",
    model=OpenAIResponses(id="gpt-5.6-luna"),
    db=db,
    filesystem=FileSystem(db=db, namespace="product-docs"),
    knowledge=knowledge,
    search_knowledge=True,
)
```

The server starts only after the sync completes. A partial sync prints its report and raises before AgentOS serves anything.

See the [cookbook](https://github.com/agno-agi/agno/blob/main/cookbook/05_agent_os/27_filesystem/knowledge_fs.py), and learn more about [published pages](https://docs.agno.com/knowledge/published-pages) and the [agent filesystem](https://docs.agno.com/filesystem/overview) in the documentation.
