Skip to main content
Alcove

CI Coverage PyPI Python Versions License

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


Alcove is search infrastructure for documents you keep on your own machine. It ingests a local directory, extracts text, chunks it, writes a local index, and returns matching chunks through a CLI or local web/API server.

It is retrieval, not generation. Alcove does not summarize, answer questions, host models, or invent text. Search results are excerpts from the indexed corpus.

See it in 30 seconds · Why Alcove?

What ships today

Alcove v0.5.0 ships a working local pipeline:

  • Recursive ingest for PDF, EPUB, HTML, Markdown, CSV, JSON, JSONL, DOCX, PPTX, RTF, ODT, XLSX, RST, TSV, and plain text.
  • Local indexing with ChromaDB by default, with zvec available as an optional backend.
  • A deterministic hash embedder by default, plus opt-in sentence-transformers and Ollama embedders for real semantic similarity.
  • CLI search and a FastAPI web service with search, upload, health, collection-list, and browse endpoints.
  • A machine-readable capabilities descriptor at /.well-known/alcove.json, /capabilities, and /api/capabilities for client discovery.
  • A canonical client result schema at POST /api/search alongside the raw POST /query response.
  • Semantic, keyword (BM25), and hybrid search modes.
  • Named collection metadata and collection filtering.
  • STDIO MCP retrieval tools for local index search and collection listing.
  • Local signing helpers and index signing tooling for provenance checks.
  • Python entry-point plugins for extractors, embedders, and vector backends.

The roadmap includes richer manifests, provenance workflows, streaming ingest, and more plugin categories. Those are not documented here as shipped behavior; see Roadmap for the pending-feature map.

How it works

Three stages. Each stage reads from local disk and writes to local disk, so it can be re-run independently.

data/raw/* -> data/processed/chunks.jsonl -> vector store -> query responses

Ingest discovers files recursively and extracts text with format-specific extractors.

Index embeds chunks and writes vectors plus metadata to a local vector store.

Query retrieves matching chunks through the CLI or local API/web UI.

See Architecture for module boundaries and extension points.

Quick start

pip install alcove-search[semantic]
alcove seed-demo
alcove serve

Open http://localhost:8000.

The [semantic] extra installs sentence-transformers. The first semantic run downloads all-MiniLM-L6-v2 once, then runs locally. For zero-download installs:

pip install alcove-search

The base package uses the hash embedder. It is deterministic, offline, and useful for smoke tests or operators who do not want ML in the pipeline. It is not a semantic search model.

Install extras
Extra Install command What it adds
Semantic search pip install alcove-search[semantic] Real vector similarity via sentence-transformers
EPUB support pip install alcove-search[epub] .epub ingestion
DOCX support pip install alcove-search[docx] .docx ingestion
zvec backend pip install alcove-search[zvec] Optional zvec vector store
PPTX support pip install alcove-search[pptx] .pptx ingestion
Everything pip install alcove-search[semantic,epub,docx,pptx,zvec] All optional runtime features
Alcove UI, dark theme Alcove UI, light theme

Trust model

Local disk only for normal ingest, index, query, and serve operations. No telemetry. No account creation. ChromaDB's upstream telemetry is disabled.

Network use is explicit: alcove seed-demo fetches the public sample corpus, and sentence-transformers downloads its model on first use. After that, embedding runs locally.

Alcove does not require authentication. The local API is open to anyone who can reach the port, so keep it bound to 127.0.0.1 unless you put authentication in front of it. See Operations and Security.

Conductor workspaces

Alcove now ships a shared Conductor config:

  • conductor.json bootstraps a workspace with ./scripts/bootstrap.sh and runs the local API on CONDUCTOR_PORT.
  • .worktreeinclude copies local .env* files into new workspaces when present.
  • runScriptMode stays concurrent because each workspace can bind its own port cleanly.

This repo is a good fit for normal workspace-local runs. Use Spotlight only if you intentionally want one heavyweight root-local stack to hot-swap tracked workspace changes.

Common commands

alcove ingest /path/to/files
alcove search "phrase to find" --mode hybrid --k 5
alcove collections
alcove status
alcove serve --host 127.0.0.1 --port 8000

Documentation

Why Alcove? · Architecture · Operations · Security · Desktop Packaging · Seed Corpus · Roadmap · Plugin Ideas · Accessibility

License

Apache 2.0

Metadata

Release files for alcove-search 0.5.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 alcove-search 0.5.0
File Size Uploaded
alcove_search-0.5.0.tar.gz 536.4 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for alcove-search 0.5.0
File Interpreter ABI Platform
alcove_search-0.5.0-py3-none-any.whl Python 3 none any Details

Total release size: 617.9 kB

Release files / alcove_search-0.5.0.tar.gz

Download URL alcove_search-0.5.0.tar.gz
Size 536.4 kB
Tags Source
SHA-256 checksum
How to use checksums
71b4b7b84b747bc0019518308c358748461a1e5deb80060b195ef9e660dbb9af
BLAKE2b-256 checksum
How to use checksums
5848736ae31936a40b69f3ffa054de85a8eb5b0520f5d1c01bd4d129b9c40504
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 6, 2026.

Transparency log

Release files / alcove_search-0.5.0-py3-none-any.whl

Download URL alcove_search-0.5.0-py3-none-any.whl
Size 81.5 kB
Tags Python 3
SHA-256 checksum
How to use checksums
098e2298f27277c48646f7d820ff30c89a41ff33f407dae89841239f7618a3f2
BLAKE2b-256 checksum
How to use checksums
696428ebd740849a5b46b3c8757a3464ba3ec9b833fd9ea7c5e783049c02b0e3
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 6, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

0.5.0 This release

2 release files

0.4.0

2 release files

0.3.0

2 release files

0.2.0

2 release files

0.1.0

2 release files

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