Metadata-Version: 2.4
Name: getgrip
Version: 0.3.1
Summary: A retrieval engine that learns your vocabulary, remembers what works, and knows when it doesn't have an answer.
Author: Grip Hub
License: Proprietary
Project-URL: Homepage, https://getgrip.dev
Project-URL: Documentation, https://github.com/Grip-Hub/getgrip.dev/blob/main/GUIDE.md
Project-URL: Repository, https://github.com/Grip-Hub/getgrip.dev
Project-URL: Bug Tracker, https://github.com/Grip-Hub/getgrip.dev/issues
Keywords: retrieval,search,rag,code-search,bm25,offline,no-embeddings,no-vector-db
Classifier: Development Status :: 4 - Beta
Classifier: Intended Audience :: Developers
Classifier: License :: Other/Proprietary License
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Topic :: Software Development :: Libraries
Classifier: Topic :: Text Processing :: Indexing
Requires-Python: >=3.9
Description-Content-Type: text/markdown
Requires-Dist: fastapi>=0.95
Requires-Dist: uvicorn[standard]>=0.20
Requires-Dist: pydantic>=2.0
Requires-Dist: numpy>=1.20
Requires-Dist: requests>=2.28
Provides-Extra: license
Requires-Dist: cryptography>=41.0; extra == "license"
Provides-Extra: pdf
Requires-Dist: pypdf>=3.0; extra == "pdf"
Provides-Extra: rerank
Requires-Dist: sentence-transformers>=2.2; extra == "rerank"
Provides-Extra: llm
Requires-Dist: openai>=1.0; extra == "llm"
Requires-Dist: anthropic>=0.18; extra == "llm"
Requires-Dist: groq>=0.4; extra == "llm"
Provides-Extra: docs
Requires-Dist: pypdf>=4.0; extra == "docs"
Requires-Dist: python-docx>=1.0; extra == "docs"
Requires-Dist: openpyxl>=3.1; extra == "docs"
Requires-Dist: python-pptx>=0.6; extra == "docs"
Requires-Dist: striprtf>=0.0.26; extra == "docs"
Requires-Dist: odfpy>=1.4; extra == "docs"
Requires-Dist: xlrd>=2.0; extra == "docs"
Requires-Dist: olefile>=0.47; extra == "docs"
Provides-Extra: ocr
Requires-Dist: pytesseract>=0.3.10; extra == "ocr"
Requires-Dist: Pillow>=9.0; extra == "ocr"
Requires-Dist: scikit-image>=0.20; extra == "ocr"
Provides-Extra: ocr-rapid
Requires-Dist: rapidocr>=3.0; extra == "ocr-rapid"
Provides-Extra: vision
Requires-Dist: transformers>=4.36; extra == "vision"
Requires-Dist: timm>=0.9; extra == "vision"
Requires-Dist: Pillow>=9.0; extra == "vision"
Requires-Dist: torch>=2.0; extra == "vision"
Provides-Extra: all
Requires-Dist: cryptography>=41.0; extra == "all"
Requires-Dist: pypdf>=4.0; extra == "all"
Requires-Dist: sentence-transformers>=2.2; extra == "all"
Requires-Dist: openai>=1.0; extra == "all"
Requires-Dist: anthropic>=0.18; extra == "all"
Requires-Dist: groq>=0.4; extra == "all"
Requires-Dist: python-docx>=1.0; extra == "all"
Requires-Dist: openpyxl>=3.1; extra == "all"
Requires-Dist: python-pptx>=0.6; extra == "all"
Requires-Dist: striprtf>=0.0.26; extra == "all"
Requires-Dist: odfpy>=1.4; extra == "all"
Requires-Dist: xlrd>=2.0; extra == "all"
Requires-Dist: olefile>=0.47; extra == "all"
Requires-Dist: pytesseract>=0.3.10; extra == "all"
Requires-Dist: Pillow>=9.0; extra == "all"
Requires-Dist: scikit-image>=0.20; extra == "all"

# GRIP

**A retrieval engine that learns your vocabulary, remembers what works, and knows when it doesn't have an answer.**

No embedding models. No vector databases. No API keys. Just `pip install getgrip`.

## Try it in 60 seconds

```bash
pip install getgrip
getgrip                          # starts server on localhost:7878
```

```bash
# Ingest your code
curl -X POST localhost:7878/ingest \
  -H "Content-Type: application/json" \
  -d '{"paths": ["/path/to/your/code"]}'

# Search
curl "localhost:7878/search?q=authentication+handler&top_k=5"
```

Open `http://localhost:7878` for the web UI.

## What makes GRIP different

| Feature | GRIP | Vector DB + Embeddings |
|---------|------|----------------------|
| Setup time | `pip install getgrip` | Model download + DB setup + API keys |
| Cold start | < 2 seconds | Minutes (model loading) |
| Search latency | < 5ms | 50-200ms |
| Learns your data | Yes (co-occurrence) | No |
| Remembers queries | Yes (auto-reinforce) | No |
| Confidence scoring | HIGH/MEDIUM/LOW/NONE | Score number |
| Works offline | Yes | Depends |
| Dependencies | 4 (fastapi, uvicorn, pydantic, numpy) | 10-30+ |

## Features

- **Co-occurrence expansion** — learns term relationships from your data without external models
- **Auto-remember** — reinforces successful queries, persists across restarts
- **Session context** — conversational memory across interactions
- **Confidence scoring** — returns HIGH/MEDIUM/LOW/NONE so your app knows when to say "I don't know"
- **Plugin architecture** — GitHub repos, local files, multiple LLM providers
- **8 API endpoints** + directory browser + web UI — ingest, search, query, config, sources, stats, health
- **Fully offline** — no cloud dependency, air-gapped operation

## Benchmarks

**BEIR (industry standard):** 0.464 NDCG@10 across 6 datasets, 21,708 queries — no neural components, no GPU. Optional cross-encoder reranker (`getgrip[rerank]`) bumps this to ~0.58.

**Scaling:** 1K to 39M documents, streaming R^2 = 0.999. Queries under 10ms on typical corpora.

**Real-world accuracy (3,000 queries):**
- Linux Kernel: 98.7%
- Wikipedia: 98.5%
- Project Gutenberg: 95.4%
- **Combined: 97.5%**

## Docker

```bash
docker run -d -p 7878:7878 \
  -v grip-data:/data \
  -v /your/code:/code \
  griphub/grip:free
```

## Optional extras

```bash
pip install getgrip[pdf]      # PDF parsing
pip install getgrip[rerank]   # Cross-encoder reranking
pip install getgrip[llm]      # LLM-powered answers (OpenAI, Anthropic, Ollama, Groq)
pip install getgrip[all]      # Everything
```

## Pricing

| Tier | Chunks | Price |
|------|--------|-------|
| Free | 10,000 | $0 |
| Personal | 100,000 | $499/year |
| Team | 500,000 | $1,499/year |
| Professional | 5,000,000 | $4,999/year |

All tiers include all features. Licensed tiers preserve learning data across deletions.

**Website:** [getgrip.dev](https://getgrip.dev)
