Skip to main content
Glama

punt-quarry

Local semantic search for AI agents and humans.

License CI PyPI Python Working Backwards

Quarry indexes documents in 20+ formats, embeds them with a local ONNX model (snowflake-arctic-embed-m-v1.5), stores the vectors in LanceDB, and serves semantic search to Claude Code, Claude Desktop, and the command line. Everything runs locally — no API keys, no cloud accounts. One quarryd daemon per machine loads the model once; the CLI, the MCP server, and the Claude Code hooks are thin clients over it.

Platforms: macOS, Linux

Quick Start

Install the CLI, the daemon, the MCP server, and the Claude Code plugin:

curl -fsSL https://raw.githubusercontent.com/punt-labs/quarry/9d500df/install.sh | sh

Restart Claude Code. Your current project is auto-indexed at session start, so you can search it by meaning right away — see What It Looks Like.

Install the package:

uv tool install punt-quarry

Set up the daemon, TLS certificates, and MCP config:

quarry install

Check health:

quarry doctor

For non-Claude harnesses (Codex, Cursor, a plain terminal) or Claude Code users whose org policy blocks marketplace/plugin installs, --no-plugin installs everything except the marketplace-register and plugin-install steps:

curl -fsSL https://raw.githubusercontent.com/punt-labs/quarry/9d500df/install.sh | sh -s -- --no-plugin

Where a flag cannot be passed (CI templating a bare curl … | sh), set QUARRY_NO_PLUGIN=1 — honored only when exactly 1:

curl -fsSL https://raw.githubusercontent.com/punt-labs/quarry/9d500df/install.sh | QUARRY_NO_PLUGIN=1 sh

Everything else runs unchanged. Use the CLI and the stdio quarry mcp server directly; both talk to the resident quarryd. Re-run the installer without --no-plugin to add the plugin later.

Download the installer:

curl -fsSL https://raw.githubusercontent.com/punt-labs/quarry/9d500df/install.sh -o install.sh

Check its digest (shasum -a 256 install.sh on macOS):

sha256sum install.sh

Read it:

cat install.sh

Run it:

sh install.sh

Related MCP server: rag-mcp

Features

  • 20+ formats — PDFs (with OCR for scanned pages), source code (AST-aware splitting), spreadsheets, presentations, HTML, Markdown, LaTeX, DOCX, images.

  • Semantic search — retrieval is by meaning, not keyword. A query about "margins" finds passages about profitability even if they never use that word.

  • One daemon, thin clients — a single quarryd process loads the embedding model once and serves the CLI, the MCP server, and the Claude Code hooks over a versioned REST API. Its resource use is bounded so it stays quiet in the background while you work.

  • Passive knowledge capturequarry enable sets up per-project file sync, web-fetch and session-transcript capture, and per-agent memory. Captures are PII/secret-scrubbed at write time and kept separate from the code index. See Knowledge Capture.

  • Named databases — isolated LanceDB directories with independent sync registries; switch with quarry use for work/personal separation.

  • Remote server — run the engine on a GPU host and connect from any Mac or Linux client over TLS. See Remote Server.

What It Looks Like

Ingest a document:

> /ingest report.pdf

▶ Ingesting report.pdf (background)

Search by meaning:

> /find "what were the Q3 revenue figures"

▶ [report.pdf p.12 | text/.pdf] (similarity: 0.4521)
  Third quarter revenue reached $142M, up 18% year-over-year,
  driven primarily by expansion in the enterprise segment.
  Gross margins improved to 71% from 68% in Q2.

Commands

Slash Commands (Claude Code)

Command

What it does

/ingest <source>

Ingest a URL, directory, or file

/remember <name>

Ingest inline text under a document name

/find <query>

Semantic search; questions get synthesized answers, keywords get raw results

/explain <topic>

Search and synthesize an explanation

/source <claim>

Find which document a claim comes from

/quarry [sub]

Manage: status, sync, collections, databases, registrations

MCP Tools

Tool

Purpose

find

Semantic search with filters

show

Document metadata or page text

list

Documents, collections, databases, registrations

status

Database statistics

ingest / remember

Index a file/URL, or inline text

register_directory / deregister_directory

Manage a synced directory

sync_all_registrations

Re-index all registered directories

delete

Remove a document or collection

use

Switch the active database

CLI

Command

What it does

quarry find "<query>"

Hybrid search (vector + full-text)

quarry ingest <file|url>

Index a file or webpage

quarry remember --name <name>

Index inline text from stdin

quarry list documents

List indexed documents

quarry register <dir>

Watch a directory for changes

quarry sync

Re-index registered directories

quarry enable / quarry disable

Set up / tear down project collections + captures

quarry use <name>

Switch the active database

quarry status

Database dashboard

quarry doctor

Health check

quarry install

Set up the daemon service, TLS certs, and MCP config

quarry uninstall

Remove the daemon service (its launchd/systemd unit)

quarry login <host> --api-key <token>

Connect to a remote server (TOFU pinning)

quarry logout

Disconnect, revert to the local daemon

Agent-memory tagging is available on ingest/remember/find via --agent-handle, --memory-type, and --summary.

Setup

Quarry works with zero configuration. These environment variables customize it:

Variable

Default

Description

QUARRY_PROVIDER

(auto)

ONNX execution provider: cpu, cuda, or unset (auto-detect)

QUARRY_API_KEY

(none)

Bearer token for quarryd (required for a non-loopback bind)

QUARRY_ROOT

~/.punt-labs/quarry/data

Base directory for all databases

CHUNK_MAX_CHARS

1800

Max characters per chunk (~450 tokens)

CHUNK_OVERLAP_CHARS

200

Overlap between consecutive chunks

The full configuration reference is in docs/architecture.tex.

Remote Server

Run quarry on a GPU host and connect from any Mac or Linux client over TLS. On the server, set an API key and install in network mode (binds 0.0.0.0, registers a service, prints a CA fingerprint):

export QUARRY_API_KEY=$(openssl rand -hex 32)
curl -fsSL https://raw.githubusercontent.com/punt-labs/quarry/9d500df/install.sh | sh -s -- --network

On the client, install normally, then log in — queries redirect to the server over wss:// with TOFU certificate pinning:

quarry login <server-hostname> --api-key <token>

Claude Desktop

The .mcpb bundle is an on-top way to reach the same local index from Claude Desktop. It embeds no engine — it registers the thin quarry mcp client, which talks to the same quarryd that backs the CLI and Claude Code. It is not a standalone install: quarry must already be installed and running.

quarry install configures Claude Desktop automatically. To add it by hand instead, download punt-quarry.mcpb and double-click it.

Uploaded files in Claude Desktop live in a sandbox quarry cannot read — use remember for that content, or give ingest a local path.

Knowledge Capture

As a Claude Code plugin, quarry captures knowledge automatically: it auto-indexes your project at session start, ingests URLs you fetch during research, and captures session transcripts before context compaction. All hooks fail open (a failure never blocks Claude Code) and are individually toggleable in .punt-labs/quarry/config.md.

Captures are PII/secret-scrubbed at write time (secrets, paths, emails, hostnames) through a single choke point, fail-closed. Deliberate ingest/remember content is not scrubbed. An opt-in per-project shadow repo (<repo> → private <repo>-quarry) can push the redacted captures off the public repo. See DES-036 and DES-039 in DESIGN.md and AGENTS.md.

Managing the Daemon

quarry install registers quarryd as a per-user service that starts at login and restarts on crash (launchd on macOS, systemd on Linux). After upgrading the package, restart the service so the new engine loads — a running daemon holds the old code in memory.

macOS:

launchctl kickstart -k gui/$(id -u)/com.punt-labs.quarry

Linux:

systemctl --user restart quarry

quarry doctor confirms the daemon is running and ready.

Documentation

Architecture | Design (ADR log) | Agents | Changelog

Development

Command

Purpose

uv sync

Install dependencies

make check

All quality gates (lint, type, test, ratchets)

make test

Test suite only

make format

Auto-format

make docs

Build the LaTeX documents

make eval

Retrieval-quality eval harness (MRR/success@k)

License

MIT

A
license - permissive license
-
quality - not tested
A
maintenance

Maintenance

Maintainers
Response time
3dRelease cycle
59Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Servers

View all related MCP servers

Related MCP Connectors

  • Persistent memory and knowledge management for AI agents with semantic search and 50+ tools.

  • Persistent memory for AI agents. Search, store, and recall across sessions.

  • Local-first RAG engine with MCP server for AI agent integration.

View all MCP Connectors

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/jmf-pobox/quarry'

If you have feedback or need assistance with the MCP directory API, please join our Discord server