This release is a pre-release and may not be stable for production use.
harborrag
harborrag is the public SDK facade and installation bundle for
HarborRAG, a modular, provider-agnostic RAG
framework for engineering knowledge. Importing it does not initialize provider clients or
perform network I/O.
- Documentation: https://cbtw-apac.github.io/HarborRAG/
- Source: https://github.com/cbtw-apac/HarborRAG
Install
pip install "harborrag[all]" # everything
pip install "harborrag[local]" # local end-to-end ingestion and retrieval
pip install "harborrag[cli,qdrant]" # or just what you need
A bare pip install harborrag installs the framework - contracts, engine, memory,
adapters, and runtime - but deliberately no third-party provider clients. There is no
vector store, no graph store, and no model client until you add an extra:
| Extra | Adds |
|---|---|
local |
Qdrant, FalkorDB, S3, model client, chunking, control plane, parsers, Docling PDF, tables |
chat |
the model client used by chat, embeddings, and reranking |
cli |
the harborrag command |
server |
the HTTP API plus the production and Temporal runtime |
mcp |
the MCP transport |
temporal |
the Temporal client for durable ingestion |
qdrant, falkordb, postgres, s3, redis |
one provider each |
all |
everything above; a superset of local |
Conversation memory (harborrag-memory) is already a required dependency, so it is
available in every install. The harborrag[memory] extra exists for explicitness and adds
nothing new.
See Installation for PDF/OCR backends, editable installs, and platform notes.
Ingest and retrieve
HarborRAG exposes four async service facades - ingestion, retrieval, graph, and
chat - behind one async context manager. Connectors are declared by name in your
connector catalog, so credentials stay as environment references:
import asyncio
from harborrag import AccessContext, HarborRAG, IngestionRequest, RetrievalRequest
async def main() -> None:
access = AccessContext(principal_id="user-1", tenant_id="tenant-1")
async with HarborRAG.from_config("config/harborrag.example.yaml") as harbor:
await harbor.ingestion.run(
IngestionRequest(access=access, connector_name="harborrag-workspace")
)
results = await harbor.retrieval.search(
RetrievalRequest(access=access, query="deployment requirements")
)
print(results)
asyncio.run(main())
config/harborrag.example.yaml ships in the repository checkout. Copy it next to your
application and point from_config at your own path.
Chat
Chat needs a model provider, so install harborrag[chat] (or any extra that includes it,
such as local, server, or all) and configure credentials first:
from harborrag import ChatPrompt, HarborChatMessage, HarborChatRequest, HarborRAG
async with HarborRAG.from_config("config/harborrag.example.yaml") as harbor:
response = await harbor.chat.complete(
HarborChatRequest(messages=(HarborChatMessage.user("Summarize the results"),)),
prompt=ChatPrompt.CONCISE,
)
Direct versus durable execution
Direct execution is the default: ingestion.run does the work inline.
The durable controls - submit, status, pause, resume, and cancel - need
execution_mode: temporal in your configuration and the harborrag[temporal] extra.
Calling them without both raises ExecutionCapabilityError:
task = await harbor.ingestion.submit(request)
status = await harbor.ingestion.status(task.task_id)
await harbor.ingestion.pause(task.task_id)
await harbor.ingestion.resume(task.task_id)
await harbor.ingestion.cancel(task.task_id)
Related packages
harborrag re-exports stable APIs from the workspace packages. Install one directly for a
narrower dependency tree:
| Package | Contains |
|---|---|
harborrag-core |
provider-neutral contracts and domain models |
harborrag-adapters |
connectors, parsers, model clients, repositories |
harborrag-engine |
ingestion and retrieval orchestration |
harborrag-memory |
scope-aware conversation memory |
harborrag-runtime |
production composition and Temporal orchestration |
harborrag-app |
CLI and HTTP API |
harborrag-mcp-server |
MCP tools and transport |
Development
Tests for this package live in packages/harborrag/tests/. Run them from the repository
root:
uv run pytest packages/harborrag/tests
Licensed under the Apache License 2.0.
Release files for harborrag 2.0.0a1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| harborrag-2.0.0a1.tar.gz | 11.1 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| harborrag-2.0.0a1-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 19.8 kB
Release files / harborrag-2.0.0a1.tar.gz
| Download URL | harborrag-2.0.0a1.tar.gz |
|---|---|
| Size | 11.1 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
00f1a92503739e34be69a3d057bc7fbcff9672af66f5bdef8d9f607bb2566f7d
|
|
BLAKE2b-256 checksum How to use checksums |
de6a9051cdf9c7d99d203487328c778b325b1b0392d9f0508a4a160d5c5fb80e
|
| 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 Sep 10, 2026.
Transparency logRelease files / harborrag-2.0.0a1-py3-none-any.whl
| Download URL | harborrag-2.0.0a1-py3-none-any.whl |
|---|---|
| Size | 8.7 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
e6fb4bd3b9ebbdbbc4354b990b4324519990750b0c199356c8c3e3451687ee3d
|
|
BLAKE2b-256 checksum How to use checksums |
64b91e36b76fd190d893c73c2fbe901c3299bb3cebec422bf07e98d93590b23e
|
| 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 Sep 10, 2026.
Transparency log