GitPin

Pin agent answers to Git HEAD. Path. Line. Full SHA. Prove. Verify.
GitPin is not another “repo context” MCP. That category is full of vector indexes, dump files, and remote GitHub browsers. GitPin is a trust product: index-free, read-only, multi-repo evidence agents must prove and humans can re-check with git show.
Agent claim
→ pin.search_* (candidates only)
→ pin.prove (evidence pack: path + line + full SHA + content hash)
→ pin.verify (git show re-check; HEAD match report)
→ you run: git show <sha>:<path>
| Crowded category | GitPin product |
|---|
| Vector / SQLite “repo context” servers | No embeddings, no DB, no reindex |
| Filesystem MCP (writes) | Never writes indexed repos |
| One-shot repo dumps | Live prove → verify MCP loop |
| Grep hits as “the answer” | Candidates → evidence pack → verification report |
| GitHub platform MCP | Local Git roots (private/offline) |
Formerly RepoContext 0.3.x. See migration.
Release: publish a version-matched GitPin release across npm, the MCP Registry, GitHub, and Pages before announcing. Install: npx -y gitpin@latest. Node 20+.
GitPin is maintained by Sarosh Hussain, who leads the project's technical direction. Pendoah is his company and operating context; GitPin remains the product and repository.
Five-minute path
npx -y gitpin@latest init --client codex
init creates ~/.gitpin/repositories.yaml outside the repo, runs doctor, prints a first evidence line with full SHA, and paste-ready MCP config. It never edits the indexed repository.
npx -y gitpin@latest verify \
--repository my-service \
--path docs/architecture.md \
--line 42 \
--sha <full-or-short-hex>
Product job
When agents invent file contents, mix dirty worktrees, or cite the wrong branch
You want every fact re-checkable with git show <sha>:<path>
GitPin registers local Git roots, serves HEAD-only docs/code, flags stale tracked docs, returns path / line / SHA, and closes the loop with pin.verify.
| Job | Tools |
|---|
| Discover | pin.catalog |
| Find candidates | pin.search_docs, pin.search_code |
| Prove | pin.prove (primary), pin.prove_set (1–8 cites), pin.get_doc, pin.read |
| Verify | pin.verify, pin.verify_set |
| Decide | pin.analyze → EvidenceBrief |
| Inspect / diff | pin.inspect, pin.compare |
Resource: gitpin://catalog. Prompt: prove-with-git-head (forces the product loop).
Cite formats: docs/cite-spec.md. Agent skill template: templates/gitpin-skill.md.
Functionality that is the pivot (not a rename)
- Evidence pack (
pin.prove): claim binding, line slice, full SHA, contentSha256, citation.cite / handle, next-step verify.
- Multi-cite sets (
pin.prove_set / pin.verify_set): stable evidenceSetId for multi-repo answers and CI.
- Verification report (
pin.verify / CLI): independent git show; optional mustContain claim-text; status includes contradicted.
- Candidates, not claims: search returns
kind: evidence-candidates with forced next: pin.prove.
- EvidenceBrief: multi-repo knownFacts / gaps / stable
evidenceSetId (schema v2).
- Dirty exclusion: uncommitted work is never cited as HEAD evidence.
Explicit non-goals
- Semantic / embedding search
- Writing, committing, or pushing
- Replacing GitHub Issues/PRs automation
- Indexing non-Git umbrella folders as one “repo”
Configuration
| Variable | Purpose |
|---|
GITPIN_REGISTRY | Registry YAML path (alias: REPOCONTEXT_REGISTRY) |
GITPIN_MCP_TOKEN | HTTP bearer token (alias: REPOCONTEXT_MCP_TOKEN) |
GITPIN_ALLOWED_HOSTS | HTTP host allowlist (alias: REPOCONTEXT_ALLOWED_HOSTS) |
Default registry: ~/.gitpin/repositories.yaml (falls back to ~/.repocontext/... if present).
Docs
Tools · Compare · FAQ · Migration · Clients · Architecture · Competitive landscape
Site: shmindmaster.github.io/gitpin. GitPin is the canonical product and repository name; legacy repocontext references exist only for migration compatibility.
Development
corepack enable
pnpm install --frozen-lockfile
pnpm validate
pnpm build
pnpm verify:package
pnpm site:test
License
MIT