Help us shape the future of Go! Take the 2026 Go Developer Survey

inode

command module
v0.5.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Oct 17, 2026 License: MIT Imports: 1 Imported by: 0

README


inode is a CLI tool for storing notes, secrets, API keys, commands, and decisions — retrieved via vector similarity search and LLM inference instead of grep, folders, or memory. It runs entirely on your machine; the default backends are local (Ollama for both LLM and embeddings, SQLite for storage).

$ inode add "staging DB creds: vault write database/rotate-root/staging"
  category=runbooks  tags=[vault, postgres, staging]  sensitive=true
  saved  id=a1b2c3d4
$ inode get "how do I rotate staging db creds"
Run vault write database/rotate-root/staging, then restart the api.

── Sources (1 note(s)) ──
  #a1b2c3d4  Rotate staging DB creds  [runbooks] [vault, postgres, staging]  [sensitive]

Features

  • Natural-language retrieval — ask in plain English, get the right note back
  • Auto-classification — the LLM picks the category and tags from a curated set
  • Sensitive-value protection — secrets are AES-256-GCM encrypted at rest, masked by default
  • Local-first by default — Ollama for LLM and embeddings, SQLite for storage; no API keys, no account, no internet required
  • Cross-platform — single Go binary on macOS, Linux, and Windows
  • Optional cloud backends — Claude API + Voyage AI for higher-quality answers if you want them

Install

go install github.com/BiSemaphore/inode@latest

Needs Go 1.26 or newer and, for the default SQLite backend, CGO with a C compiler. Versions before v0.5.0 were published as github.com/shahid-io/inode.

Releases

GitHub Releases has a pre-built linux/amd64 archive for each version. On macOS, Windows and other architectures, use go install above; more release targets are tracked in #33.


Quick Start (zero-cost path)

# 1. Install Ollama and pull the local models (one-time, free)
brew install ollama
ollama pull llama3.2
ollama pull nomic-embed-text

# 2. Save something
inode add "My GitHub PAT is ghp_xxxxxxxxxx"

# 3. Find it later
inode get "github personal access token"

That's it. No API keys, no account, no telemetry. Everything stays on your laptop.

Optional: cloud backends

If you want Claude-quality answers and Voyage-quality embeddings:

inode config set llm.backend claude-api
inode config set llm.api_key sk-ant-xxxx
inode config set embedding.backend voyage
inode config set embedding.api_key pa-xxxx

Or OpenAI for the LLM (llm.base_url also points it at Azure OpenAI or any compatible gateway):

inode config set llm.backend openai
inode config set llm.api_key sk-xxxx
inode config set llm.model gpt-4o-mini   # optional, this is the default

These are completely optional. The Ollama path is fully featured.

Optional: Postgres + pgvector backend

By default inode uses SQLite + sqlite-vec — single file, zero infrastructure.

If you're on Windows (where the sqlite-vec CGO build chain is painful) or you'd rather run on a real database, you can switch to Postgres + pgvector. The Postgres driver is pure Go, so go install works without any C toolchain.

# 1. Start a pgvector-enabled Postgres (compose file in repo root)
docker compose up -d

# 2. Point inode at it
inode config set db.backend postgres
inode config set db.dsn "postgres://postgres:password@localhost:5432/postgres?sslmode=disable"

inode will CREATE EXTENSION vector and create the notes table on first run. SQLite remains the default — Postgres is opt-in.

Optional: MCP server (Claude Code / Cursor)

inode mcp runs as a Model Context Protocol server over stdio so an MCP-aware AI client can read your knowledge base.

Exposes three read-only tools to the calling agent:

  • search_notes — vector search; returns the most relevant notes
  • list_notes — paginated listing; metadata only
  • get_note — fetch a single note by ID prefix

Sensitive notes are excluded from search results and masked in get_note responses by default. To let the agent see them:

inode config set mcp.reveal_sensitive true

Wire it into your MCP client config (Claude Code example):

{
  "mcpServers": {
    "inode": { "command": "inode", "args": ["mcp"] }
  }
}

Writing notes from an agent isn't exposed yet — read-only is the safer first step.


Commands

# Add notes
inode add "note content"
inode add "secret" --sensitive
inode add "docker system prune -a" --category commands --tags docker,cleanup
inode add                          # opens $EDITOR

# Retrieve (aliases: ask, find, search)
inode get "query"
inode get "query" --reveal         # unmask sensitive values

# List
inode list
inode list --category credentials
inode list --tag github

# Manage
inode note get <id>
inode note delete <id>

# Config
inode config set llm.backend claude-api
inode config set llm.model claude-sonnet-4-6
inode config show

Categories

inode classifies every note into one of nine strict categories:

credentials · commands · snippets · decisions · runbooks · learnings · references · contacts · notes

If the LLM proposes something else, the classifier falls back to notes. You can override with --category and the classifier won't second-guess you.


Documentation


Roadmap

Phase Status Description
Phase 1 — Local MVP Shipped CLI, SQLite + sqlite-vec, encryption, semantic retrieval
Phase 3 — Local LLM Shipped Ollama default for LLM and embeddings
Phase 2 — Cloud Hypothetical Multi-user, PostgreSQL, JWT auth
Phase 4 — Hardening Planned 2FA, rate limiting, audit log
Phase 5 — Ecosystem Planned Web dashboard, MCP server, team workspaces

The original phase numbering had Cloud at Phase 2 and Local LLM at Phase 3. In practice, Local LLM shipped first because it's also the architectural posture — local-first is the design, not a feature behind a future-Phase fence.


Contributing

Contributions are welcome. Please read CONTRIBUTING.md before opening a pull request.


Security

inode handles secrets and sensitive data. If you discover a vulnerability, please follow responsible disclosure — see SECURITY.md.


License

MIT © 2026 Shahid Raza

Documentation

The Go Gopher

There is no documentation for this package.

Directories

Path Synopsis
internal
cli
Package cli holds presentation helpers shared by Cobra commands.
Package cli holds presentation helpers shared by Cobra commands.
mcp
Package mcp exposes the inode knowledge base over the Model Context Protocol so MCP-aware AI clients (Claude Code, Cursor, etc.) can read notes via stdio.
Package mcp exposes the inode knowledge base over the Model Context Protocol so MCP-aware AI clients (Claude Code, Cursor, etc.) can read notes via stdio.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL