Obsidian vaults, Claude Code memory, client corpora under local_only, Capsule-backed agent answers, and export-adapter records.
Point GNO at a folder, prove retrieval with gno setup, then search, ask, or hand an agent a Capsule from that index. Examples:
Point GNO at your Obsidian vault. You keep editing in Obsidian. GNO adds BM25 + vector + reranking, a CLI, and an MCP server over the same vault.
gno setup ~/Documents/Obsidian --name vault
gno mcp install --target claude-desktopInstall GNO as a skill for Claude Code. Your coding agent can query your notes, docs, and project files on demand without pasting everything into every prompt.
gno skill install --target claude --scope user
# Then in Claude Code:
# /gno query "how does our auth flow work"Research corpus on disk, query via CLI, pipe results to jq or to a spreadsheet automation tool, and get cited AI answers from local models.
gno query "Q4 budget projections" --json | jq '.results[0]'
gno ask "what did we conclude about pricing" --answerIndex a client’s mixed-format document set (Markdown, PDFs, Office docs, mail exports), pin the collection so it can never leave the machine, and share only the compiled slice you meant to share.
gno setup ~/clients/acme --name acme
gno collection policy set acme local_only
# Compile the evidence behind a finding, with exact spans
gno context build "vendor lock-in exposure" --collection acme \
--budget 16000 --json --output finding-3.json
# Months later, is that evidence still accurate?
gno context verify finding-3.json --mdThe combination that matters here is egress policy plus Capsules: the corpus is pinned local, and the artifact behind each finding is reproducible and re-checkable long after the engagement ends. Publish a deliverable as an invite-only or encrypted space when the client needs a URL.
When an agent writes a PR description, an ADR, or a report, the question is always “where did that come from”. Give it a Capsule and require it to answer from that evidence only.
gno context build "why we chose the queue over cron" \
--collection eng-docs --budget 12000 --json --output why.json
# Generation that stops when the evidence stops
gno ask "why did we choose the queue over cron" --verify --show-sourcesIf the corpus does not support a claim, verified Ask withholds the draft and names the gap instead of producing a confident paragraph you have to fact-check by hand.
Export the transcript and the mail thread, and index them as individually citable records rather than as one opaque blob.
gno collection add ~/exports --name exports \
--pattern "**/*.{vtt,srt,eml,mbox,ics}"
gno update
gno query "what did we agree about the migration date" --collection exportsEach message, event, and cue keeps its own participants, timestamps, thread identity, and anchors. See file and export adapters.
Point GNO at a git-synced team wiki directory and run gno daemon --detach. The index stays fresh as people push, and everyone gets the same retrieval behavior in their local CLI and AI tools. Commit a project profile so the repository itself declares what to index, and gno setup . --apply-profile reproduces the setup on a new machine in one command.
When a search misses something you know exists, capture it instead of shrugging. Label the miss, export a content-free fixture, and replay candidate pipelines against it before changing a model.
gno trace label <trace-id> --label missing-expected \
--target gno://notes/postmortem-q3.md
gno trace export <trace-id> --format qrels --output recall.json
gno trace replay <export-id> --candidate hybrid --mdSee private retrieval learning.
gno capture writes a note with --source-kind and you can filter it later with --since.
gno capture "Vendor quoted 14 week lead time" --collection notes \
--source-kind meeting --title "Acme lead time"
gno query "lead time" --collection notes --since "last month"