weft-rag
Weft — a RAG engine built as a microkernel. This is the default install: the packs that index a
directory and answer a question about it, and the weft command.
The distribution is weft-rag; the command is weft — the name weft belongs to an unrelated
project on PyPI, so what you install and what you run are spelled differently:
uvx --from weft-rag weft --help
What is in it, and what is not
Twenty-one packs ship here and each keeps its own identity: weft plugins list prints one row per
pack, and weft.toml configures one at a time — [packs.store], not [packs.weft-rag].
One distribution publishes beside this one, and it is separate for a single reason:
weft-kernel |
the registry, discovery, the pipeline model and the payload types. Depends on pydantic and opentelemetry-api and nothing else, and installs and imports alone — which is what proves the kernel names no capability |
Six packs that used to be their own distributions now ship inside this wheel instead, each behind an extra that keeps its outside library declinable — G19, 2026-09-09:
| extra | pack | needs |
|---|---|---|
[openai] |
an Embedder and an LLMProvider against the OpenAI API |
openai, pillow, and a credential |
[pdf] |
two PDF extraction backends | pypdf, pdfplumber |
[qdrant] |
a Qdrant store backend, beside the pgvector one shipped here | qdrant-client |
[otel] |
sets the OpenTelemetry TracerProvider the registration seam already emits spans into | opentelemetry-sdk |
[docling] |
a learned-layout PDF extraction backend | docling-slim |
| — | agent, the first-party agentic front end. Imports nothing outside this wheel, so it needs no extra |
none |
weft-rag[all] installs every one of those libraries at once. graph — the Postgres-backed
graph-traversal pack added at ledger task 11.5 — was never a separate distribution either and
needs no extra.
None of these seven packs is needed to index a directory and query it. A pack neither we nor you wrote installs beside this wheel on exactly the same terms and is discovered the same way, with no edit to anything here — that is the extension model, not a courtesy.
See docs/09-release.md §1 for why this is one wheel rather than many — fourteen packs at G10
(2026-08-22), six more folded in by G19 (2026-09-09).
What installing this trusts
A pack runs with your full privileges, and installing one is trusting it. Weft discovers packs
through Python entry points and calls their register() in this process, so a pack can do anything
the interpreter can do. That is stated rather than mitigated, because the mitigations are not
available: signature verification, sandboxing, per-pack privilege separation, and any defence
against a pack that is hostile once running are all out of reach without a process boundary,
which Weft does not have.
What Weft does give you is visibility and refusal, not containment:
weft plugins doctornames every distribution that is installed, at what version, and what each one discloses about the network, filesystem and subprocess access it uses. A disclosure is what the pack says about itself; nothing checks it.[packs] allowinweft.tomlis an exhaustive pin. Anything not listed is never imported — refusal before any of its code runs, which is the one control that does work without a process boundary.
A control that looked like enforcement but was not would be worse than an acknowledged gap, because
people build policy on it. docs/02-extension-model.md §2 is the argument in full.
Metadata
Release files for weft-rag 2.6.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| weft_rag-2.6.0.tar.gz | 929.1 kB | Without provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| weft_rag-2.6.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 2.1 MB
Release files / weft_rag-2.6.0.tar.gz
| Download URL | weft_rag-2.6.0.tar.gz |
|---|---|
| Size | 929.1 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
ea8fb85be4619279ba86c27e8d0bad2c560a8a2afd6d6b0212a2d1f527c54a38
|
|
BLAKE2b-256 checksum How to use checksums |
61d1aa36c118f7578ddb1d6c897b569f888d275f1a0aea4a0f685aef4afd3f7a
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.12.13 {"installer":{"name":"uv","version":"0.12.13","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / weft_rag-2.6.0-py3-none-any.whl
| Download URL | weft_rag-2.6.0-py3-none-any.whl |
|---|---|
| Size | 1.1 MB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
cb9e64dee6ccd568f1c454957bb33ae4fc02c25cbfb43fddfa8ee03c0c5dedf9
|
|
BLAKE2b-256 checksum How to use checksums |
b922b6e9434d563b4a8d05e3a9ac8cfb23616eee0dbfcb3969e2c9508cf21620
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.12.13 {"installer":{"name":"uv","version":"0.12.13","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Security for weft-rag 2.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.
No provenance found
None of the files in this release were uploaded with provenance metadata.
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.