Agno's Knowledge.sync_pages takes a site's llms.txt URL, discovers the pages, fetches their Markdown, embeds them, and publishes each page's text, catalog entry and vectors in one transaction. Page storage lives in agno.knowledge.page, and Knowledge needs a page_store to use it.
Keeping an agent in step with your docs usually means a crawler, a chunker and a vector table that drift apart. A refresh dies halfway through, and now the agent serves new text against old vectors. Page storage treats each page as one unit that either publishes whole or stays as it was.
from agno.db.postgres import PostgresDb
from agno.fs import FileSystem
from agno.knowledge import Knowledge
from agno.knowledge.embedder.openai import OpenAIEmbedder
from agno.vectordb.pgvector import PgVector
db = PostgresDb(db_url="postgresql+psycopg://ai:ai@localhost:5532/ai")
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"),
),
)
knowledge.setup()
report = knowledge.sync_pages(url="https://docs.agno.com/llms.txt")
print(report.status, report.updated, report.deleted, report.failed)The report from sync_pages lists every failed and removed page, and Agno reuses unchanged pages without re-embedding them.

What can an agent do with published pages?
An agent can search the published pages, read the full page behind a result at the same revision, list pages under a path, and grep for literal text. Every page call has an async counterpart and bounded output.
result = knowledge.search_pages("How do agents use tools?")
hit = result.results[0]
page = knowledge.read_page(hit.path, revision=hit.revision)Install page storage with pip install "agno[pages]", and learn more about published pages in the documentation. For a production example, see how we built the Agno Docs Agent.
Frequently asked questions
Give Knowledge a page_store and call knowledge.sync_pages(url=...) with the site's llms.txt URL. Agno discovers the pages, fetches their Markdown, embeds them and publishes each one. Install it with pip install "agno[pages]".
Agno publishes each page's text, catalog entry and vectors together in one transaction. A page that fails keeps its previous published version, and the sync report lists every failed and removed page.
No. sync_pages reuses unchanged pages without re-embedding them.
Call knowledge.search_pages(), then pass the hit's path and revision to knowledge.read_page(). The agent reads the whole page at the same revision the search matched. See published pages in the documentation.
