Skip to content
Changelog

Page sync logs its progress and final counts

October 8, 20261 min read

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.

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")
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.

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, and learn more about published pages and the agent filesystem in the documentation.

Frequently asked questions

Turn on debug logging, for example with set_log_level_to_debug() from agno.utils.log, and call knowledge.sync_pages(url=...). The sync logs the lock wait, the discovered page count, its progress and a closing line with the counts.

After the first page, after every 25th page and after the last one. Each progress line reads processed/discovered with the running updated and failed counts.

Give the Knowledge a page_store=FileSystem(db=db, namespace="product-docs") and give the agent filesystem=FileSystem(db=db, namespace="product-docs"). The agent then reaches the synced pages through its filesystem and through knowledge search.

Shipped around the same time