PageIndex boundary
Type: agentic-system-analyses/types/agentic-system-boundary.md
Boundary and evidence
The target is the PageIndex repository's shipped document knowledge system, not only its tree-building API and not the separately operated PageIndex Cloud service. Its intended use is to index long documents once, retain their tree and page content, and let a model retrieve evidence for later answers. This qualifies as a memory/knowledge/context-engineering system: model-dependent indexing and answer-time retrieval serve retained document knowledge. The repository also ships its own chat orchestration and framework adapters; it is not bounded here as a returning index computation. SRC-1: README.md, pageindex/__init__.py, pageindex/client.py, pageindex/local_api.py, pageindex/local_chat.py.
The boundary kind is whole-system for the shipped repository artifact. It includes local PDF ingestion, Flash layout extraction and model-based refinement, classic PDF indexing, Markdown tree generation, local persistence and repair of its manifest cache, document listing/deletion, tree/page access, agent tools and prompts, chat drivers, citations, cloud client/bridge behavior, integration adapters, shipped notebook callers and evaluation material. The CLI and notebooks are included callers, not excluded hosts merely because they invoke package APIs. SRC-1: run_pageindex.py, pageindex/local_store.py, pageindex/agent_tools.py, pageindex/integrations/openai_agents.py, cookbook/pageindex-vision-rag.ipynb.
Initial inspection traced the local state loop through PageIndexClient selecting LocalAPI, submission building a structure and checking page bounds, DocStore saving trees/pages/metadata, and later tree/page reload and document discovery. Deletion and manifest reconstruction are shipped maintenance paths. These responsibilities stay within the target. SRC-1: pageindex/client.py, pageindex/local_api.py, pageindex/local_store.py.
_write_json_atomic(doc_dir / "tree.json", tree) _write_json_atomic(doc_dir / "pages.json", pages) _write_json_atomic(doc_dir / "doc.json", meta)---
pageindex/local_store.py
The retained state has shipped consumers. The package's chat prologue combines managed instructions, document targeting and supplied history, then runs a configured agent. Its non-streaming chat-completions driver invokes the external Agents SDK runner; that SDK dependency does not remove the shipped driver from this boundary. Framework adapters also expose the same tool responsibilities to caller-owned agents. SRC-1: pageindex/local_chat.py, pageindex/integrations/openai_agents.py, pageindex/integrations/anthropic_sdk.py, pageindex/integrations/claude_agent_sdk.py.
result = _run_sync(_run_closing(agent, Runner.run(agent, input=items, **run_kwargs)))---
pageindex/local_chat.py
Prompts are part of the mechanism, not commentary outside it. Local guidance controls discovery and structure-first reading, with optional citation instructions. Cloud-mode guidance and tool schemas may instead arrive from the remote MCP server; the frozen client establishes how they are obtained, not their current remote contents. SRC-1: pageindex/agent_tools.py.
READING WORKFLOW: - For documents over {STRUCTURE_FIRST_PAGE_THRESHOLD} pages: call get_document_structure() first to locate relevant sections, then get_page_content() with targeted page ranges. - For small documents ({STRUCTURE_FIRST_PAGE_THRESHOLD} pages or fewer): call get_page_content() directly. ---
pageindex/agent_tools.py
The notebook consumers include a local submit-and-chat example and cloud retrieval/citation/cost examples. The vision-RAG notebook additionally ships an explicit tree-search prompt, page-image selection and answer-generation call. It therefore belongs to the functional boundary rather than being treated as an unrelated enclosing application. Its cloud tree generation remains dependent on an unavailable server implementation. SRC-1: cookbook/pageindex-flash-demo.ipynb, cookbook/pageindex-citation.ipynb, cookbook/pageindex-indexing-cost-demo.ipynb, cookbook/pageindex-multimodal.ipynb, cookbook/pageindex-query-pricing-demo.ipynb, cookbook/pageindex-vision-rag.ipynb.
Repository coverage
All rows refer to SRC-1 at the frozen commit. “Included” is a functional scope decision, not a claim that every line has already been inspected. Initial inspection is distinguished below from available material still requiring detailed analysis. No material shipped state-loop path was inaccessible.
| Top-level tracked path | Scope and role | Initial inspection and limits |
|---|---|---|
pageindex/ |
Included: package entry points, indexing, retained state, admission, maintenance, retrieval, prompts and chat. | Inspected exports; client backend selection; complete local API/store; Flash public orchestration; classic/Markdown/optimizer/utility function inventory; local chat prologue and runner; tool/instruction construction; cloud upload; all three integration adapters. Material paths include pageindex/flash/ parser, layout, heading, outline, embedded-TOC and data machinery; pageindex/page_index_classic.py, pageindex/page_index_md.py, pageindex/tree_optimize.py, pageindex/utils.py, pageindex/local_api.py, pageindex/local_store.py, pageindex/client.py, pageindex/local_chat.py, pageindex/agent_tools.py, pageindex/cloud_api.py, pageindex/mcp_bridge.py, pageindex/integrations/, pageindex/imaging.py, pageindex/chat_stream.py, pageindex/types.py, pageindex/config.yaml, pageindex/naming.py, pageindex/errors.py and version/type markers. Deep parser internals and remaining endpoint/stream/citation branches are available, not access gaps; later claims need their own inspection. |
run_pageindex.py |
Included: PDF/Markdown CLI driver and JSON result writer. | Read completely, including Flash/classic/Markdown routing, model/config options, rejection check and persistence to results/. |
cookbook/ |
Included: all six shipped notebook workflows, their prompts and consumers. | Read every code/Markdown cell from all six notebooks; embedded outputs were not inspected as execution evidence. Vision-RAG explicitly consumes tree nodes and page images; newer demos use SDK chat/citations and cost instrumentation. Notebook downloads, package installs and live calls were not run. |
tests/ |
Included: contract evaluators, fixtures and regression tests, not an observed successful run. | Inventoried all tracked test paths; searched test names for tool/client/chat/Flash/tree/package coverage and inspected chat tool-round-trip and manifest-recovery tests. Includes tests/conftest.py, tests/data/, tests/fixtures/, local/chat/tool suites, classic/Markdown suites, extraction, image, naming and tree-format suites. Remaining bodies and fixture bytes are available but not yet inspected in detail. No tests executed. |
examples/ |
Included: document inputs and retained example structures. | Inventoried examples/documents/*.pdf and examples/results/*_structure.json; contents not yet inspected. They may support format or attributed example claims after inspection, not independent retrieval accuracy. |
README.md |
Included: system intent, usage, cloud/local distinction and reported benchmarks. | Read completely. External benchmark links are not frozen benchmark data. |
pyproject.toml |
Included: package surface and external dependency declarations. | Read completely, including package data and optional framework dependencies. |
requirements.txt |
Included: dependency support for repository usage. | Available and inventoried; contents not yet inspected. Do not infer exact installed versions from it. |
assets/ |
Included as supporting documentation/evaluation illustrations. | Inventoried benchmark charts and RAG diagrams; image pixels not inspected. These are not a frozen benchmark runner or independently verified measurements. |
.github/ |
Excluded: CI/security/dependency and package-publication configuration. | Tree inventory identifies workflows and Dependabot config. Exclusion prevents assessment of release automation and CI enforcement, not source-level state-loop behavior. |
.gitattributes |
Excluded: Git file handling metadata. | Inventoried only; no conclusion about checkout/export transformations. |
.gitignore |
Excluded: developer ignore policy. | Inventoried only; no claim that the source inventory describes all files generated by execution. |
LICENSE |
Excluded: legal terms. | Inventoried only; no licensing/compliance conclusion. |
Frozen evidence and external limits
The frozen revision is af92d9658a6a9c0ae31171b43198db28951af2f4, with applicability cutoff 2026-10-15. The evidence tier is code-grounded. HEAD was checked against the acquired revision; the checkout is read-only. No other repository, external documentation page, model service or live cloud response is admitted as evidence.
External dependencies include model providers and their SDKs, LiteLLM, the Agents SDK, optional Anthropic/Claude Agent SDKs, MCP, PDF parsers and HTTP services (SRC-1: pyproject.toml). Their implementations are not frozen here, preventing conclusions about provider internals and dependency-version-specific operational behavior. This does not exclude the package's own orchestration, adapters or error handling.
The repository supplies Cloud HTTP/MCP clients, not Cloud's server-side OCR, image understanding, corpus/file-system indexing, managed storage or managed chat implementation. Those implementations and live MCP prompts/schemas are unavailable evidence, not merely uninspected repository files. Their absence prevents code-grounded accounts of cloud state production, remote search policy and managed chat internals. Client-side request construction, discovery and consumption remain included. SRC-1: README.md, pageindex/cloud_api.py, pageindex/agent_tools.py, pageindex/integrations/claude_agent_sdk.py.
External benchmark repositories, websites and blog posts linked by the README were not acquired. This prevents independent assessment of their datasets, runners and headline accuracy/cost claims. The frozen README and Flash documentation support attributed reported operation only. No target execution, tests, provider calls or causal experiments were performed; static source and test assertions cannot establish measured production reliability or retrieval effectiveness. SRC-1: README.md, pageindex/flash/README.md, tests/test_local_chat.py, tests/test_client.py.
Source register
| Source ID | Kind | Identity/location | Revision or capture | Evidence layer | Inspected scope | Citation anchors | Access gaps and conclusion prevented |
|---|---|---|---|---|---|---|---|
| SRC-1 | git | https://github.com/VectifyAI/PageIndex |
af92d9658a6a9c0ae31171b43198db28951af2f4 | implementation; doctrine/design; reported operation | Access root: /home/zby/llm/commonplace/.commonplace/worktrees/pageindex-50056ef72767/related-systems/VectifyAI--PageIndex. Implementation: tree inventory, package exports/backend routing, local ingestion/store/reload/maintenance, Flash orchestration, indexing/optimizer/utility inventory, chat prologue/runner, agent instructions/tools, Cloud upload, integration adapters, six notebook code/Markdown sources and selected test contracts. Doctrine/design: complete README, Flash README and package metadata. Reported operation: benchmark descriptions in those README files; not independently observed. |
Implementation: local state API, store, chat, tools/prompts, CLI, vision notebook. Doctrine and reported operation: README, Flash README. | No inaccessible material shipped path found. Cloud server/dependency internals, live server prompts and external benchmark data are outside the frozen source; prevents server-internal and independently verified performance claims. No observed-run or causal-experiment layer established. Available but not initially inspected files are identified in the coverage table, not classified as access gaps. |