Skip to main content

Local-first document retrieval. Your data never leaves your disk.

Project description

Alcove

CI PyPI

Search your own documents locally. No server, no sign-up, no data leaves your machine.

Alcove web UI showing search results with file-type badges

Who is this for? Teams and partners who need a working document-search demo on their own hardware in minutes — not months.

  • Private — documents stay on your machine, no cloud calls, no tracking
  • Zero configpip install, two commands, searching in under a minute
  • Extensible — plug in custom extractors, embedders, and backends

Alcove is free to use and we do not want your data. No benchmark claims — optimized for clarity and speed of setup.

Watch the 30-second CLI demo

Get started

Requires: Python 3.9+ — download at python.org if you don't have it.

pip install alcove-search
alcove seed-demo          # download a sample corpus and build a local index
alcove serve              # open http://localhost:8000

Open http://localhost:8000 in your browser. Upload your own files or search the sample corpus. No coding required after this point.

Trust model

  • Local disk persistence — no hosted control plane required
  • Chroma anonymized telemetry disabled by default (ANONYMIZED_TELEMETRY=False)
  • You choose what data enters your local index
  • We do not want your data

See Security for the full trust-boundary diagram.


For developers

CLI

alcove serve              # start web UI + API server
alcove ingest ./docs/     # ingest documents from a directory
alcove query "search..."  # CLI retrieval
alcove seed-demo          # fetch and index demo corpus
alcove plugins            # list installed plugins

From source

git clone https://github.com/Pro777/alcove.git
cd alcove
pip install -e ".[dev]"

Make targets

make setup              # create .venv, install deps
make serve              # start web UI
make seed-demo          # fetch demo corpus and build local index
make ingest             # build chunks from data/raw
make index              # write vectors to local Chroma
make query Q="..."      # run local retrieval
make smoke              # deterministic end-to-end check + tests

API

GET  /           # web UI (search + file upload)
GET  /search     # search results page (server-rendered)
POST /query      # JSON retrieval {"query":"...","k":3}
POST /ingest     # file upload (multipart)
GET  /health     # readiness check

Embedder options

By default Alcove uses a deterministic hash embedder (no network, no model download). For semantic similarity, set EMBEDDER=sentence-transformers in .env:

EMBEDDER=sentence-transformers make index
make query Q="What is liberty?"

The all-MiniLM-L6-v2 model (~80MB) downloads on first use. Each embedder type uses a separate collection, so switching embedders requires re-indexing but won't corrupt existing data.

Vector backend

Alcove supports two local vector backends:

Backend Env value Default path Notes
ChromaDB chromadb (default) ./data/chroma Mature, full-featured
zvec zvec ./data/zvec Lighter-weight, suited for desktop apps

Set in .env:

VECTOR_BACKEND=chromadb   # or zvec
ZVEC_PATH=./data/zvec     # only used when VECTOR_BACKEND=zvec

Both backends are local-only and store data on disk. No cloud calls.

Architecture

data/raw/*  →  data/processed/chunks.jsonl  →  data/chroma/*  →  query results
 (ingest)            (index)                      (query)
  1. Ingestalcove/ingest/ extracts PDF, EPUB, TXT, HTML, Markdown, CSV, JSON, JSONL, and DOCX into normalized JSONL chunks
  2. Indexalcove/index/ embeds chunks and writes vectors to the configured backend
  3. Queryalcove/query/ retrieves from the local vector store via CLI or API

See Architecture for details.

Documentation

License

MIT

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

alcove_search-0.2.0.tar.gz (95.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

alcove_search-0.2.0-py3-none-any.whl (20.4 kB view details)

Uploaded Python 3

File details

Details for the file alcove_search-0.2.0.tar.gz.

File metadata

  • Download URL: alcove_search-0.2.0.tar.gz
  • Upload date:
  • Size: 95.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for alcove_search-0.2.0.tar.gz
Algorithm Hash digest
SHA256 3aead28e5b1ff55b30846791105391a555362be2ebfaf808ab7f356459eddcef
MD5 8550169acc0f2d696c9bc48fed6b0029
BLAKE2b-256 23dde3baba70bbd9772452455ccbefb4af482b866c9550fff00d8e555bd1680f

See more details on using hashes here.

Provenance

The following attestation bundles were made for alcove_search-0.2.0.tar.gz:

Publisher: publish.yml on Pro777/alcove

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file alcove_search-0.2.0-py3-none-any.whl.

File metadata

  • Download URL: alcove_search-0.2.0-py3-none-any.whl
  • Upload date:
  • Size: 20.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for alcove_search-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 38cf0ddbac79585b182eda28f8f6e21f94822a4344c2584456dbbe7f362a33e4
MD5 eb018872062b76ba20abaf583363d048
BLAKE2b-256 d2e1398c2e16b0d9313b432cf1c65ed823b85808de4a692fa0f0560b0bd5a7b5

See more details on using hashes here.

Provenance

The following attestation bundles were made for alcove_search-0.2.0-py3-none-any.whl:

Publisher: publish.yml on Pro777/alcove

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page