Getting started
From install to your first semantic search in under two minutes.
This tutorial takes you from nothing to searching your own documents. It takes about two minutes, and nothing in it needs the internet after the install step.
1. Install
On macOS, with Homebrew:
brew install BenyD/tap/hayOn Linux or macOS, with the install script:
curl -fsSL haypile.sh | shOn Windows, run this in PowerShell:
irm https://haypile.sh/install.ps1 | iexIt installs hay.exe under %LOCALAPPDATA%\Programs\hay and adds it to your PATH. Open a new terminal afterwards so the PATH change takes effect.
Either way you get one binary called hay. The embedding model that powers semantic search is already inside it. There is nothing else to download, ever.
Check it works:
hay --version2. Index a folder
Point Haypile at any folder with documents in it. PDF, docx, pptx, HTML, Markdown, plain text, and mbox email archives are indexed; everything else is ignored.
hay add ~/DocumentsA live progress line tracks the pass, first extracting text, then embedding it, then a summary lands:
Indexing /Users/you/Documents…
extracting [######····] 62% · 194/312 files · ~1m leftIndexed 214 files (1892 chunks), 0 unchanged.
Embedded 1892 chunks for semantic search (bundled/all-MiniLM-L6-v2).
Try: hay search "something you remember"In a pipe or a CI log, where a line cannot redraw, the same progress arrives as one printed line per tenth of each phase.
hay add also did the one-time setup: the index lives in a single SQLite file at ~/.haypile/haypile.db, and a background daemon now watches the folder, re-indexing changed files within seconds. There is no server or database to manage.
3. Search
Search for an idea, not just exact words:
hay search "agreement cancellation" 1. ~/Documents/contracts/vendor-deal.docx (chunk 2)
Termination
Either party may terminate this Agreement with sixty days written notice.
2. ~/Documents/contracts/meridian-msa.pdf (page 4)
Either party may terminate for convenience upon sixty (60) days prior
written notice.Neither result contains the words "agreement cancellation". That is semantic search doing its job. Exact identifiers work too, and they match exactly:
hay search "2024-CV-01847"Every result cites its source: the file, and for PDFs the page. You can always check the original.
4. Prove it stays private
hay statusDaemon: running (0.3.1, up 42s)
Index: ~/.haypile/haypile.db
Indexed: 1 sources, 214 files, 1892 chunks
Model: bundled/all-MiniLM-L6-v2
Outbound connections: 0That last line is measured, not asserted. Haypile counts its own network connections and reports them. The target is zero, always.
Where to go next
- Get answers instead of search results: Ask questions with a local LLM
- Prefer a browser to a terminal: Use the web UI
- Let Claude Code or Cursor search your documents: Use Haypile from Claude Code
- Tag a folder and exclude drafts from the index: Configure a folder
- Index scans and image-only PDFs: Scanned PDFs (OCR)
- Update, stop the daemon, or uninstall: Manage, update, uninstall