by gmickel
Local AI-powered document search and editing with first-in-class hybrid retrieval, LLM answers, WebUI, REST API and MCP support for AI clients.
# Add to your Claude Code skills
git clone https://github.com/gmickel/gnogno is an open-source ai agents skill for AI coding assistants such as Claude Code, Codex CLI, and ChatGPT, built by gmickel. Local AI-powered document search and editing with first-in-class hybrid retrieval, LLM answers, WebUI, REST API and MCP support for AI clients. It has 100 GitHub stars.
gno's catalog security scan is still queued. You can run an instant dependency and prompt-injection check now with the "Scan for vulnerabilities" button above.
Clone the repository with "git clone https://github.com/gmickel/gno" and add it to your Claude Code skills directory (see the Installation section above).
gno is primarily written in TypeScript. It is open-source under gmickel on GitHub, so you can review or fork the full source.
Yes. SkillsLLM lists many other AI Agents skills you can browse and compare side by side. Open the AI Agents category from the badge at the top of this page, or use the Related Skills and comparison links further down to weigh gno against similar tools.
No comments yet. Be the first to share your thoughts!
Unlocks once the catalog security scan passes (runs nightly).
The deep catalog scan for this skill is still queued. Run an instant dependency check now instead.
Search finds. GNO proves.
A local knowledge engine for your notes, code, PDFs, and Office docs. Hybrid search, a browsable workspace with graph and editor, CLI, SDK, REST API, and MCP for ten AI clients — plus retrieval that can show its work.

bun install -g @gmickel/gno
gno setup ~/notes --name notes # returns only after retrieval actually works
gno mcp install --target cursor # or claude-code, claude-desktop, zed, ...
One local index across everything you have. Markdown, PDFs, Office documents, plain text, source code, and portable mail, calendar and transcript exports. Point it at a folder that mixes all of them and it handles the mix.
Three ways to search it. Keyword (BM25), semantic (vector), and hybrid — fused, reranked, and explainable, with structured intent controls and metadata filters. Ask for "how we handle retries" and find the paragraph about exponential backoff that never uses the word.
A workspace, not a search box. Cross-collection folder tree, per-tab browse context, a markdown editor, provenance-carrying quick capture, and a navigable knowledge graph.
Answers with citations. Ask a question in natural language and get an answer built from your own documents, with citations that resolve to the source passage.
Six interfaces on one index. A fast CLI, a web UI, a REST API, a TypeScript SDK, an MCP server, and a headless daemon — plus one-command install into ten agent clients. Nothing drifts between them.
Optional hosted publishing at gno.sh when a slice needs a URL.
No GPU required, no account required, no telemetry. Free and MIT licensed.
The above is most of what people use day to day. Beyond it, four things here are different, and each one is measurable rather than adjectival:
| What it does | Why it matters | |
|---|---|---|
| Context Capsules | Compiles one bounded evidence bundle per goal: exact line spans, content hashes, one global token budget, collapsed duplicates, and a written list of what it could not find | Your agent reads once instead of searching five times. 48.94% fewer retrieval calls, 44.12% less model-visible context, 100% task accuracy retained across 48 paired benchmark tasks |
| Verified answers | gno ask --verify generates against one closed Capsule, classifies every substantive claim, and withholds the draft below 100% support |
An abstention naming the failing claim beats a confident paragraph you have to fact-check by hand |
| Verified setup | gno setup returns only after lexical search finds a real hit derived from your corpus |
No green checkmark over a folder that indexed but cannot be searched |
| Egress policy | Per-collection fail-closed local_only / lan / remote, inherited by every derived Capsule, trace, and export |
Mixed setups are normal. Pin the client work local while your notes use the LAN GPU box |
Everything runs on your machine. Zero telemetry. The three network boundaries are explicit: downloading a model, configuring an HTTP inference endpoint, and uploading an artifact you exported for publishing.
And the receipts ship too. Every benchmark behind these numbers is committed to the repository against a pinned corpus, with its limitations stated alongside the result, so you can replay it rather than take it on trust.
# Install
bun install -g @gmickel/gno
# Activate a folder. Returns only after BM25 proves an exact corpus-derived hit;
# semantic embedding continues independently in the background.
gno setup ~/notes --name notes
# Add more sources
gno collection add ~/work/docs --name work-docs --pattern "**/*.{md,pdf,docx}"
gno collection add ~/work/gno/src --name gno-code --pattern "**/*.{ts,tsx,js,jsx}"
# Tell retrieval what each collection is for
gno context add "work-docs:" "Architecture docs, runbooks, RFCs, meeting notes"
gno update --yes # sync
gno embed # embed when you want semantic retrieval
# Pick the search that fits the question
gno search "DEC-0054" # exact identifier
gno vsearch "retry failed jobs with backoff" # natural language
gno query "JWT refresh token rotation" --explain # hybrid, with score traces
# Compile checkable evidence for a goal, then re-check it later
gno context build "why we dropped the queue rewrite" \
--collection work-docs --budget 12000 --json --output capsule.json
gno context verify capsule.json
# Generate only what that evidence supports
gno ask "why did we drop the queue rewrite" --verify --show-sources
# Run the workspace (pick one — not both against the same index)
gno serve # browser/desktop Web UI
gno daemon --detach # headless indexing + resident MCP gateway
[!TIP] gno.sh/publish is live. Turn any GNO note or collection into a reader-first URL — editorial typography, scoped search, and four visibility modes from public to encrypted-before-upload. See the reader →
ClawdHub: GNO skills bundled for Clawdbot — clawdhub.com/gmickel/gno
Start here · Quick Start · Installation · Agent Integration · Search Modes
Surfaces · Web UI · REST API · SDK · Daemon Mode · Publish to gno.sh
Under the hood · How It Works · Features · Local Models · Fine-Tuned Models · Architecture · Development
Deep dives on gno.sh · Context Capsules · Knowledge Delta · Retrieval learning · Project profiles · Egress policies · Export adapters
Current release: v1.31.0 — see CHANGELOG.md
Full release history: CHANGELOG.md
query → get → multi-get orchestration with one bounded,
citation-complete evidence handoff. The promoted benchmark retained 100%
completion accuracy while reducing retrieval calls by 48.94% and
model-visible context by 44.12%, with 100% exact claim-span linkage.--project-root values as a transparent,
explainable +0.03 soft ranking signal. Filters remain hard, and untrusted
SDK, REST, MCP, and Web hints never probe paths or affect ranking.gno status, gno doctor, REST, and the
Web/Desktop dashboard now share a per-folder lexical retrieval proof. Local
semantic readiness remains independent, and installed MCP targets can run an
explicit read-only retrieval smoke from Connectors.gno serve and gno daemon now host stateful
Streamable HTTP MCP at /mcp from the same long-lived runtime as their
watcher, jobs, stores, and models. T