GitPin is an agent-delivery assurance gate with a local evidence MCP. It makes material PR claims cover the actual diff and point to exact committed line slices. The local MCP supplies index-free, read-only, multi-repo evidence that humans and CI can re-check with git show.
Public-good thesis: evidence for agent-authored software changes should remain inspectable with ordinary local Git, independent of the coding agent or proprietary hosted platform that produced the change.
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.
gitpin gate --base <full-base-sha> --head <full-head-sha>The gate reads policy only from the trusted base commit, reads the submitted manifest only from the head commit, compares the merge-base diff, and verifies exact line-slice hashes. It never executes PR code and never labels a locator match as proof of semantic correctness. Use the GitPin GitHub Action setup to make it a required check. That guide also documents an optional, separate CrewScore check for teams that want written-control coverage alongside GitPin evidence verification.
Versioned distribution: This source tree and its packed documentation describe GitPin 0.6.4 without asserting publication status. Availability is established only by independently verifying the npm, MCP Registry, GitHub Release, and Pages receipts. Install with
npx -y gitpin@0.6.4only after the npm receipt resolves. 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.
# From a committed Git repository
# This exact version becomes usable only after npm publication is verified.
npx -y gitpin@0.6.4 init --client codexinit 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.
# Independently verify any claim (same contract as pin.verify)
# This exact version becomes usable only after npm publication is verified.
npx -y gitpin@0.6.4 verify \
--repository my-service \
--path docs/architecture.md \
--line 42 \
--sha <full-or-short-hex>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.
- 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): stableevidenceSetIdfor multi-repo answers and CI. - Verification report (
pin.verify/ CLI): independentgit show; optionalmustContainclaim-text; status includescontradicted. - Candidates, not claims: search returns
kind: evidence-candidateswith forcednext: pin.prove. - EvidenceBrief: multi-repo knownFacts / gaps / stable
evidenceSetId(schema v2). - Dirty exclusion: uncommitted work is never cited as HEAD evidence.
- Semantic / embedding search
- Writing, committing, or pushing
- Replacing GitHub Issues/PRs automation
- Indexing non-Git umbrella folders as one “repo”
| Variable | Purpose |
|---|---|
GITPIN_REGISTRY |
Registry YAML path (legacy compatibility alias: REPOCONTEXT_REGISTRY) |
GITPIN_MCP_TOKEN |
HTTP bearer token (legacy compatibility alias: REPOCONTEXT_MCP_TOKEN) |
GITPIN_ALLOWED_HOSTS |
HTTP host allowlist (legacy compatibility alias: REPOCONTEXT_ALLOWED_HOSTS) |
Default registry: ~/.gitpin/repositories.yaml (legacy compatibility fallback: ~/.repocontext/... if present).
Tools · Compare · FAQ · Migration · Clients · Architecture · Roadmap · Governance · Security · Competitive landscape
Site: shmindmaster.github.io/gitpin. GitPin is the canonical product and repository name; legacy repocontext references exist only for migration compatibility.
corepack enable
pnpm install --frozen-lockfile
pnpm validate
pnpm build
pnpm verify:package
pnpm site:test