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=0The 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.




