Skip to main content

Quarry

A config-driven knowledge-ingestion harness — a CLI that owns the deterministic half of turning a source (a YouTube video, a web page, …) into a linked article in a markdown knowledge wiki.

Quarry resolves a source adapter, fetches, writes immutable raw material, hands a machine-readable compile-spec to an LLM (or human) for the one irreducibly-generative step — writing the article — then verifies provenance, lints, and commits. It never calls a model, so it is runnable and testable without API keys.

You extract raw material from the world and refine it into something structured. That is the pipeline, and the name.

Why

The deterministic mechanics of disciplined knowledge ingestion — fetch, immutable raw, a verifiable manifest, provenance checking, structural lint, semantic link discovery — are worth doing the same way every time. Quarry packages exactly that machinery and nothing else: it is not an LLM wrapper, not a note-taking app, and not opinionated about your wiki's shape. Every convention is configuration.

Install

pip install quarry-kb[all]          # all shipped adapters
pip install quarry-kb               # core only (PyYAML); add adapters as extras

Adapters (each an extra): youtube (transcript + Whisper fallback), web, github (gitingest), pdf (PyMuPDF4LLM + OCR), instagram, plus whisper for local audio transcription. Adapters extract raw content deterministically — no LLM. The core needs no API key; a few adapters take optional credentials (e.g. Instagram cookies for private posts) — see each adapter's module docstring for setup.

No Reddit adapter (removed in 0.4.0). Reddit became a losing battle for a deterministic, no-auth fetcher: it fingerprint-blocks pure-Python clients via TLS/JA3 (so it needed curl_cffi impersonation just to get a 200), throttles by IP reputation with no Retry-After (so back-off is guesswork), and its Nov-2025 Responsible Builder Policy gates all API apps — including read-only OAuth — behind manual approval. The net result was a fragile, perpetually-degrading path that violated Quarry's "runnable without keys, deterministically" principle. Rather than ship something that mostly doesn't work, it's gone. To ingest a Reddit thread, save the page (or its .json) and feed it through the web/pdf adapter, or add your own adapter via the entry-point hook. (curl_cffi lives on — the instagram extra uses it for yt-dlp's impersonation.)

Installed as quarry-kb on PyPI (the bare name was taken); the command and import are both quarry.

Requires Python 3.11+.

60-second quickstart

cd your-wiki-repo
quarry init                  # scaffold a documented quarry.toml + gitignore .quarry/
# edit quarry.toml to match your wiki's conventions

quarry ingest <url>          # fetch -> raw/ + compile-manifest, then STOP
# ...now write the wiki article using the printed compile-spec...
quarry finish <slug>         # verify provenance -> lint -> commit (no push unless --push)

Other commands: quarry lint, quarry adapters, quarry related <article>, quarry densify [--apply], quarry doctor.

The two-call seam is deliberate: ingest and finish are separate processes, and the generative step (writing the article) happens between them — done by you or your agent, never by Quarry.

Configuration reference

Quarry is configured by a quarry.toml discovered by walking up from the current directory (a [tool.quarry] table in pyproject.toml is a fallback). quarry init writes a fully-commented default. Tables:

Table Key Purpose
[store] wiki, raw, manifest_dir directories (relative to the store root)
raw_layout raw path template; tokens: {year} {month} {date} {slug} {kebab_title} {ext} {topic} {source_id}
root explicit store root (defaults to the dir containing quarry.toml)
[frontmatter] required, sources_field, related_field article frontmatter schema
[ingest] default_ext, slug, on_duplicate slug template; on_duplicate = refuse | warn | allow
related_candidates print N link candidates (existing articles) in the compile-spec
assets_layout where adapter media (frames, slides) is stored under raw/
[adapters] enabled allowlist of adapters to run
[discovery] backend, mode, collection, dedup_threshold, densify_topk semantic-link backend (qmd or none)
search, refresh qmd mode (query | search (BM25, instant) | vsearch); qmd update before ingest lookups
[lint] broken_links, require_sources_on_disk, orphan_check, index_file, fail_on which checks run and which fail the build
[finish] run_lint, auto_push, commit_template finish behaviour
stage scoped (default: only this ingest's raw, assets, article, index and files linking to it) | all
auto_index add the article to index_file under the heading that holds its folder's entries
[youtube] comments, top_comments capture pinned + top comments into the raw
[instagram] media, keep_video, frame_interval, max_frames, ocr save carousel slides / reel frames next to the raw and OCR them (tesseract)

See examples/quarry.toml for the annotated default.

Authoring an adapter

A new source type is one small adapter discoverable via the quarry.adapters entry-point group — no fork. See CONTRIBUTING.md for the contract, the hermetic-test requirement, and a worked pdf example.

Status

Pre-1.0, but feature-complete for v1 and fully tested. See SPEC.md for the design and ISA.md for the ideal-state criteria and build provenance.

License

MIT — see LICENSE.

Metadata

Release files for quarry-kb 0.6.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for quarry-kb 0.6.0
File Size Uploaded Provenance Actions
quarry_kb-0.6.0.tar.gz 89.9 kB With provenance Details for quarry_kb-0.6.0.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for quarry-kb 0.6.0
File Interpreter ABI Platform Actions
quarry_kb-0.6.0-py3-none-any.whl Python 3 none any Details for quarry_kb-0.6.0-py3-none-any.whl

Total release size: 140.0 kB

Release files / quarry_kb-0.6.0.tar.gz

Download URL quarry_kb-0.6.0.tar.gz
Size 89.9 kB
Tags Source
SHA-256 checksum
How to use checksums
9ad49ee51f56c7cb13ebffb2e5e46122c0c54ac648de3c3a6ea8ad6a4ea990f2
BLAKE2b-256 checksum
How to use checksums
ebee3e05f58ea314994963b307e9820164716a24ec0270d93bb1e8ac69534904
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 14, 2026.

Transparency log

Release files / quarry_kb-0.6.0-py3-none-any.whl

Download URL quarry_kb-0.6.0-py3-none-any.whl
Size 50.0 kB
Tags Python 3
SHA-256 checksum
How to use checksums
63553b942a2a6bc403f6f804379ba37dd9751ccb7a91af91d5197008b56f244f
BLAKE2b-256 checksum
How to use checksums
6443f5bfb4f4238edcff827a58eb3a9d0bda7f30e62189e2dc4182b979cc49af
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 14, 2026.

Transparency log

Security for quarry-kb 0.6.0

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

Full provenance

All 2 files in this release have been uploaded with provenance metadata.

Select from 2 files

Attestation for quarry_kb-0.6.0.tar.gz

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 14, 2026.

Transparency log

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page