09f738bcac7bc3c8a45aad8f5476a86bd2e9a1fd
Answer extracted PDFs from the document cache: fresh for PDFTTL, then a conditional GET (304 reuses the stored text, a 200 is extracted and stored without a second GET). Store after extraction with the response hash, ETag, fetch time and extracted pages. Route pages/grep through pdfdoc.Options with 400s for bad ranges and non-PDFs, and refuse a question when the document exceeds PDFMaxQuestionChunks with a pointer to grep and pages. Co-Authored-By: ornith-1.5-35b-a3b <ornith-1.5-35b-a3b@llama.cpp.invalid>
sift
LLM-oriented fetch and search for the Hermes fleet: fetch a resource and get it back cleaned, compact, and with useful context attached — using local models (Dixie), SearXNG and Brave on orion, and Honcho for retrieval.
Status: P1 clean fetch (/v2/scrape, /v1/fetch, CLI, auth). See docs/PLAN.md and docs/P1.md.
Build
Makefile is the source of truth for flags (CGO_ENABLED=0, -trimpath, -s -w -X main.version=).
make build # bin/sift
make test # go test -race ./...
make lint # go vet, and staticcheck if installed
make install # PREFIX=/usr/local; example config in /etc/sift/
nix build # packages.sift, same ldflags
nix flake check # make test lint
The service does not assume Nix store paths. Non-Nix hosts: make install plus dist/sift.service.
Languages
Go
93.1%
Python
4.7%
Nix
1.4%
Shell
0.5%
Makefile
0.3%