A local, single-machine retrieval engine over the web pages you read.
Project description
Refindery
A local, single-machine retrieval engine over the web pages you read.
Upstream capture systems (browser extensions, history readers) extract main-body text and POST it here. Refindery chunks, embeds, indexes, clusters, and extracts entities from that text, then serves hybrid retrieval over it via a local HTTP API and an MCP server.
📖 Full documentation: https://hbmartin.github.io/refindery/
Companion projects
- Refindery Chrome Extension — capture pages as you browse.
- Browser History Refindery — import and search your browser history.
This is a retrieval engine, not a Q&A system. It returns ranked, grounded passages with provenance. Synthesis is the caller's job — typically an LLM agent (e.g. Claude via MCP) that treats Refindery as a tool. No generation appears on the query path.
Jobs to be done
- Refind — "I read something about X, take me back to it."
- Synthesize — "What have I learned about Y?" (agent-mediated; Refindery supplies the passages)
- Resurface — "What have I been reading a lot about?" (clusters, similarity)
Quickstart
The fastest path on macOS (Homebrew, no Docker) writes a private .env with a
generated auth token and the daemon-free LanceDB profile:
VOYAGE_API_KEY=... ./scripts/setup-macos.sh --start
On later runs, start the server with the generated environment:
uv run --env-file .env refindery serve
Then ingest a page and search it:
curl -s -X POST http://127.0.0.1:8000/v1/pages \
-H "Authorization: Bearer $REFINDERY_AUTH_TOKEN" -H "Content-Type: application/json" \
-d '{"url": "https://example.com/article", "title": "An Article",
"body_extracted": "Plain text main body content...",
"fetched_at": "2026-07-08T10:00:00Z", "source": "extension"}'
curl -s -X POST http://127.0.0.1:8000/v1/search \
-H "Authorization: Bearer $REFINDERY_AUTH_TOKEN" -H "Content-Type: application/json" \
-d '{"query": "main body content"}'
Other install paths (Docker/Qdrant, manual, fully containerized) are in the Installation guide.
Documentation
The documentation site is the canonical reference:
- Getting started — install, quickstart, and validation.
- Guides — ingest, search, MCP, evaluation, clustering, entities, models, deletion.
- Configuration — the settings model, deployment profiles, auth, tuning, observability.
- Architecture — hexagonal ports/adapters, data flow, and the data model.
- Operations — reset, purge, job leases, and accepted risks.
- Reference — HTTP API, upstream ingest API, MCP tools, CLI, and the Python API.
Development
See CONTRIBUTING.md and the
Contributing docs.
TL;DR: uv sync --all-groups --extra ner, then
uv run ruff format . && uv run ruff check . && uv run pytest && uv run ty check && uv run pyrefly check.
Preview the docs locally with uv run zensical serve.
License
MIT — see LICENSE.txt.
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 refindery-0.2.0.tar.gz.
File metadata
- Download URL: refindery-0.2.0.tar.gz
- Upload date:
- Size: 131.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
0b8ad889559bc14ab61069fb1839a8625d11ae3f6b5eaa84f0ae40834e0162ef
|
|
| MD5 |
d812e342b9cd3cacca60500a74c40ec6
|
|
| BLAKE2b-256 |
549af9036ae203ca1b249d41df4eddbe5cb55eaca00302e007e6b79bfaa98ab2
|
Provenance
The following attestation bundles were made for refindery-0.2.0.tar.gz:
Publisher:
publish.yml on hbmartin/refindery
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
refindery-0.2.0.tar.gz -
Subject digest:
0b8ad889559bc14ab61069fb1839a8625d11ae3f6b5eaa84f0ae40834e0162ef - Sigstore transparency entry: 2138837435
- Sigstore integration time:
-
Permalink:
hbmartin/refindery@f358e10408bf350d2af6dc0409cf5e6b97473df8 -
Branch / Tag:
refs/tags/v0.2.0 - Owner: https://github.com/hbmartin
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@f358e10408bf350d2af6dc0409cf5e6b97473df8 -
Trigger Event:
release
-
Statement type:
File details
Details for the file refindery-0.2.0-py3-none-any.whl.
File metadata
- Download URL: refindery-0.2.0-py3-none-any.whl
- Upload date:
- Size: 183.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
db106dce393e9b244386d620a3d2ca2df9a3ae24c2ff2fbb329b29d94911fa16
|
|
| MD5 |
80bc7ebe1d983f3e8db21bf41350bfce
|
|
| BLAKE2b-256 |
5f89015d114a259014587540e896e59992cb137571bd1aacc8921f3a387a4034
|
Provenance
The following attestation bundles were made for refindery-0.2.0-py3-none-any.whl:
Publisher:
publish.yml on hbmartin/refindery
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
refindery-0.2.0-py3-none-any.whl -
Subject digest:
db106dce393e9b244386d620a3d2ca2df9a3ae24c2ff2fbb329b29d94911fa16 - Sigstore transparency entry: 2138837449
- Sigstore integration time:
-
Permalink:
hbmartin/refindery@f358e10408bf350d2af6dc0409cf5e6b97473df8 -
Branch / Tag:
refs/tags/v0.2.0 - Owner: https://github.com/hbmartin
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@f358e10408bf350d2af6dc0409cf5e6b97473df8 -
Trigger Event:
release
-
Statement type: