griot
Local-first RAG over your git repositories. griot indexes source code, git history (commits, tags, branches) and code-platform data (PRs/MRs, releases, issues) into an embedded vector store — no database server, no Docker — and lets you search it or ask questions about it, from the CLI or from an AI agent via MCP.
Named after the West African storyteller who keeps a community's history: griot remembers what your repositories have been through.
Highlights
- Fully local storage — vectors live in an in-process Qdrant Edge shard under your XDG data dir. No services to run.
- Free by default — the default embedding profile (
jina-code) runs locally via ONNX. Paid profiles (OpenAI, Gemini) are opt-in. - Spend circuit breaker — daily ceiling + 5-minute velocity ceiling on
every paid call, with atomic on-disk state. The
openaianddeepseekchat profiles refuse to run until you set their price (griot config set openai-chat-price <USD per 1M tokens>, ordeepseek-chat-price), so the breaker always tracks real cost. - Five platforms — GitHub, GitLab (incl. self-hosted), Bitbucket Cloud,
Azure DevOps and Gitea/Forgejo adapters for PRs/releases/issues, detected
from each repo's
originremote. What has run against a real platform: Platforms. - MCP server — expose search/status/quality tools to Claude Code, opencode or any MCP client. Indexing via agent is off by default and path-allowlisted.
- Security-hardened — API keys never in URLs or logs, 0600/0700 file modes on everything it writes, no credential ever follows a redirect. See SECURITY.md.
Status: v0.6.0, beta. One maintainer, used daily by its author. The CLI surface and the on-disk layout may still change between 0.x releases.
Installation
pipx install griot-rag # the distribution is griot-rag; the command is griot
griot update # later: upgrade griot to the newest release (shows the command, asks first)
Requires Python ≥ 3.10 and git. The first run of a local profile downloads
its ONNX model from Hugging Face (~1.1 GB for the default jina-code) and
caches it under your data directory; griot profiles list shows each
profile's RAM tier against the RAM you actually have.
Installing from a checkout, what the first run downloads, and what
griot update does:
Getting started.
Quickstart
# 1. register the repos you want to index (asks you to confirm, in a terminal)
griot repos add ~/code/my-app
# 2. see what would be indexed (never spends anything)
griot index all --repo my-app --dry-run
# 3. index for real (default profile is local & free)
griot index all --repo my-app
# 4. search (no LLM: by meaning and exact words; --mode keyword for a hash or an error code)
griot search "where is the retry logic for the payment API?"
# 5. ask (search + LLM synthesis — requires a chat provider, see Documentation below)
griot ask "how does authentication work in this codebase?" --show-sources
When something does not work, run griot doctor: every check at once, reads
only. See
Getting started.
Documentation
| Guide | |
|---|---|
| Getting started | Installing, a first index and search, griot stats, griot doctor and griot update |
| Configuration | Embedding and chat profiles, every environment variable, where things live, griot config |
| Credentials | griot auth, the OS keychain and .env, griot auth migrate, and credentials in indexed content |
| Search | Search modes, filters, grouping, whether the index is behind, and griot ask |
| Quality | The golden set, griot quality-check and griot golden-set review |
| MCP server | Registering the server, the skills and agent for Claude Code and opencode, and running several sessions |
| Platforms | The five platform adapters, their tokens, and what has run against a real platform |
| All documentation | Every document: security, the roadmap, contributing, the changelog, and the maintainers' own |
Development
uv sync --locked --extra dev # the versions CI runs (or: pip install -e ".[dev]")
uv run pytest -q # no test ever calls a real API or needs credentials
License
Metadata
Release files for griot-rag 0.6.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| griot_rag-0.6.0.tar.gz | 895.9 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| griot_rag-0.6.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 1.3 MB
Release files / griot_rag-0.6.0.tar.gz
| Download URL | griot_rag-0.6.0.tar.gz |
|---|---|
| Size | 895.9 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
0c63255852d2834ef46766c2299d0b34d5b21e8c624259e6387efa8feef261c1
|
|
BLAKE2b-256 checksum How to use checksums |
e490a354c7c5c964cd9620aed3ef7cb38d18950601feb9ad6764852f467421bd
|
| 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 Oct 9, 2026.
Transparency logRelease files / griot_rag-0.6.0-py3-none-any.whl
| Download URL | griot_rag-0.6.0-py3-none-any.whl |
|---|---|
| Size | 384.0 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
d46063ef63395ebbae09a0c48f7350e4f42e0d33081b7de2fb7d1f97e37517ee
|
|
BLAKE2b-256 checksum How to use checksums |
7217a19e40e5e9628e3ce2727075196797a661459b810a72db79efeb9e9744d4
|
| 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 Oct 9, 2026.
Transparency log