Binary Semaphore

inode

Featured

A privacy-focused CLI for storing and retrieving notes, secrets, and commands through natural-language semantic search.

View on GitHub
GoRAGpgvectorMCPOllama

Save anything. Ask in plain English.

Runs on your machine. Encrypted. Yours.

$ go install inode

Overview

Every developer accumulates a pile of scattered knowledge: the staging database password, the exact flags for a deploy, a snippet you wrote once and will need again. It ends up in notes apps, shell history, password managers, and stray text files. The problem is rarely storing it. The problem is finding it again, weeks later, when you no longer remember the exact words you used.

inode is a command-line knowledge base that solves the finding problem. You talk to it in plain English. Instead of grepping for an exact string, you ask for what you mean, like “the staging database password” or “how I deployed the worker last time”, and it returns the right entry even when none of those words appear in it. It matches meaning, not characters.

It is built to run entirely on your machine. By default there are no API keys, no accounts, and no network calls: embeddings and language-model inference run locally through Ollama, and everything is stored in a single SQLite file you own. When you want higher-quality results, you can point it at cloud backends without changing a single command you type.

At a glance

Language
Go
Default storage
SQLite + sqlite-vec
Optional backends
PostgreSQL/pgvector · Claude · Voyage AI
Embeddings
Ollama (local) · Voyage AI
Security
AES-256-GCM, on-device
Integrations
MCP (Claude Code, Cursor)
Categories
9 (credentials, commands, runbooks, …)
Platforms
macOS · Linux · Windows

How it works

  1. Capture and classify

    When you add an entry, inode classifies it into one of nine strict categories (credential, command, snippet, runbook, note, and so on) so retrieval stays precise and sensitive types can be handled differently.

  2. Embed

    The text is turned into a vector embedding, a list of numbers that captures its meaning. Local embeddings run through Ollama at zero cost; Voyage AI or Claude can be used for higher quality.

  3. Store

    Vectors and content live in SQLite with the sqlite-vec extension by default, or PostgreSQL with pgvector when you want a shared, larger store. Credentials are encrypted at rest before they touch disk.

  4. Retrieve and rerank

    Your query is embedded the same way and matched by nearest-neighbor (cosine) similarity. The top candidates are then handed to an LLM that reads them and returns the answer that is actually there, rather than trusting the raw vector score alone.

Capabilities

01Semantic search that understands intent

Retrieval is built on vector embeddings and LLM reranking, so a query like “prod logging config” surfaces the right runbook even if it was titled “observability setup”. Content is auto-classified into nine categories, which keeps results sharp and lets inode treat a credential differently from a note.

02Runs on your machine, cloud is opt-in

The default stack is SQLite + sqlite-vec + Ollama: no API keys, no internet, nothing leaves your laptop. The same commands work unchanged against PostgreSQL/pgvector for storage and Claude or Voyage AI for embeddings when you want more power. The architecture treats backends as a swappable detail, not a rewrite.

03Secrets handled like secrets

Sensitive values are encrypted at rest with AES-256-GCM and masked in terminal output by default, so a screen-share or a scrollback never leaks them. You reveal a value explicitly, only when you mean to.

04An MCP server your editor can read

inode ships a read-only Model Context Protocol server, so assistants like Claude Code and Cursor can query your knowledge base directly and answer from your real notes and runbooks. Read-only by design: the model can look, but it cannot rewrite or delete what you have stored.

Usage

Want the code?

inode is open source and built in public.

github.com/shahid-io/inode