Contract-driven Markdown knowledge bases for PDF-aware agents
Project description
agent-wiki-workspace
agent-wiki-workspace builds persistent, searchable Markdown knowledge bases from local PDFs.
It uses agent-pdf-workspace for local extraction
and OCR, keeps the complete source workspace, and exposes strict JSON contracts to external agents.
The package itself contains no LLM, vision, embedding, or network client.
What it creates
An existing Markdown or Obsidian vault can be adopted in place, or a new empty directory can be initialized:
wiki/
├── Sources/ Concepts/ Entities/ Syntheses/
├── raw/<source-id>/ # complete agent-pdf-workspace output
└── .agent-wiki/
├── manifest.json
├── profile.{json,md}
├── jobs/{curation,query,visual}/
├── changesets/
└── cache/search.sqlite
Existing notes, .obsidian/, AGENTS.md, and symlinks are not rewritten or followed. Curated
claims retain PDF page and block or bounding-box evidence. Agent changes are staged first and are
applied only by an explicit host/user action.
Install
Python 3.11 through 3.14 is supported. A permanent tool environment is recommended because the generated OpenCode tool records its exact Python virtual-environment launcher:
uv tool install agent-wiki-workspace
wikiws --help
For repository development, use the pinned pyenv version and lockfile:
pyenv install -s 3.11.14
uv sync --frozen --group dev
Quick start
# A new wiki must be new or empty.
wikiws init /absolute/path/to/wiki --mode create --json
# Existing Markdown/Obsidian content is adopted without modifying existing files.
wikiws init /absolute/path/to/vault --mode adopt --json
# Extraction and OCR are local. The original PDF stays under raw/<source-id>/.
wikiws source add /absolute/path/to/wiki report.pdf --ocr auto --language deu+eng --json
# Explore locally.
wikiws search /absolute/path/to/wiki "specific phrase" --json
wikiws read /absolute/path/to/wiki --note "Sources/report.md" --json
# Agent-authored changes remain pending until explicitly approved.
wikiws curate prepare /absolute/path/to/wiki --source-id src-... --json
wikiws curate submit /absolute/path/to/wiki --input changeset.json --json
wikiws changes apply /absolute/path/to/wiki --changeset-id chg-... --json
wikiws lint /absolute/path/to/wiki --json
wikiws verify /absolute/path/to/wiki --json
Machine-readable mode writes JSON only to stdout and diagnostics to stderr. Exit codes are 0
(success), 2 (input/contract error), 3 (incomplete state), 4 (resource limit), and 5
(integrity/security failure).
OpenCode integration
Register one router, one curator per wiki, a shared vision agent, the packaged skill, and native tools with:
wikiws opencode sync
The router and shared vision agent are installed as primary agents; per-Wiki curators are registered as restricted subagents and communicate through persisted versioned contracts.
The command discovers the configuration through OPENCODE_CONFIG_DIR or opencode debug paths.
It never edits opencode.json and refuses collisions with files it does not own. Interactive sync
asks which vision-capable provider/model to use. The default is
openrouter/google/gemma-4-31b-it; automation can choose any valid OpenCode model identifier:
wikiws opencode sync --vision-model openrouter/google/gemma-4-31b-it --json
wikiws doctor --json
The generated TypeScript tool starts exactly
[absolute-venv-python, "-m", "agent_wiki_workspace", ...] without a shell or PATH lookup.
Running sync again updates that binding after moving or reinstalling the environment.
Visual jobs remain pending if the selected agent/model cannot inspect images. Text curation and
search continue with visual_coverage: pending; no description is fabricated. A capable external
agent reads only a registered crop, then persists a matching VisualResult. Whether an image may
be sent to a remote model is the calling system's privacy decision.
Python API
from agent_wiki_workspace import KnowledgeBase, KnowledgeRegistry
kb = KnowledgeBase.init("/absolute/path/to/wiki", mode="create")
source = kb.add_pdf("report.pdf", ocr="auto", languages=("deu", "eng"))
job = kb.prepare_curation(source.source_id)
hits = kb.search("specific phrase")
registry = KnowledgeRegistry.open()
registry.register(kb)
registry.install_opencode(vision_model="openrouter/google/gemma-4-31b-it")
All public agent contracts are Pydantic models using schema 1.0, reject unknown fields, and fail
closed on wrong wiki/job IDs, expired jobs, unsafe paths, stale updates, or unverifiable evidence.
A source changeset copies job.job_id and cites every claim with a block_id or page-bounded
bbox from the PDF layout sidecar. Block quotes are normalized and checked against block text.
Trust boundary
PDF text, OCR, Markdown, metadata, links, attachments, QR codes, and images are untrusted content. They are never executed or fetched. Package-generated agents deny web and shell tools and receive only role-specific wiki tools. PDF passwords are accepted through Python parameters or stdin and are never persisted.
See the release procedure and verification status for reproducible builds, critical coverage, neutral clean-environment evidence, and the explicitly networked OpenRouter/OpenCode multi-wiki release gate.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file agent_wiki_workspace-0.1.0.tar.gz.
File metadata
- Download URL: agent_wiki_workspace-0.1.0.tar.gz
- Upload date:
- Size: 162.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.9.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
63a07f053d277502fc8008fe5c8cddfd6189aa68b74f2ad7786858f6566a10ca
|
|
| MD5 |
945d173a0d91efee96faaf77271c1b0a
|
|
| BLAKE2b-256 |
bd85ab6ebbe573bf27430c53b1b02ac22a2723bdbd5857a155760fff1ac8a0a8
|
File details
Details for the file agent_wiki_workspace-0.1.0-py3-none-any.whl.
File metadata
- Download URL: agent_wiki_workspace-0.1.0-py3-none-any.whl
- Upload date:
- Size: 59.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.9.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
099e11f2b5949ad2ddf531efe72bda1c06aca845811551d6c2821b162b787f38
|
|
| MD5 |
3a23b7114af071b0c177432a2cfac740
|
|
| BLAKE2b-256 |
e13a8789515a8f0e634f69f31a429570f9477f0d4be2dc2afc1ccdf60251be2f
|