{"id":51040552,"url":"https://github.com/shahid-io/inode","last_synced_at":"2026-06-22T10:32:21.282Z","repository":{"id":356361332,"uuid":"1232143296","full_name":"shahid-io/inode","owner":"shahid-io","description":"Personal knowledge base and secret vault — semantic search via vector embeddings and RAG","archived":false,"fork":false,"pushed_at":"2026-05-07T19:03:17.000Z","size":73,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-05-07T19:32:46.003Z","etag":null,"topics":["ai","cli","developer-tools","embeddings","go","golang","knowledge-base","llm","natural-language-search","rag","secret-vault","sqlite"],"latest_commit_sha":null,"homepage":null,"language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/shahid-io.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-05-07T16:22:28.000Z","updated_at":"2026-05-07T19:03:54.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/shahid-io/inode","commit_stats":null,"previous_names":["shahid-io/inode"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/shahid-io/inode","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/shahid-io%2Finode","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/shahid-io%2Finode/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/shahid-io%2Finode/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/shahid-io%2Finode/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/shahid-io","download_url":"https://codeload.github.com/shahid-io/inode/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/shahid-io%2Finode/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34645681,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-22T02:00:06.391Z","response_time":106,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["ai","cli","developer-tools","embeddings","go","golang","knowledge-base","llm","natural-language-search","rag","secret-vault","sqlite"],"created_at":"2026-06-22T10:32:20.796Z","updated_at":"2026-06-22T10:32:21.276Z","avatar_url":"https://github.com/shahid-io.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cdiv align=\"center\"\u003e\n  \u003cimg src=\"docs/banner.svg\" alt=\"inode — a personal knowledge base that runs on your laptop\" width=\"100%\"\u003e\n\u003c/div\u003e\n\n\u003cbr/\u003e\n\n**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).\n\n```bash\n$ inode add \"My Stripe test key is sk_test_xxxxx\"\n  ✓ category=credentials  tags=[stripe, payment, test]  sensitive=true\n  ✓ Saved\n\n$ inode get \"stripe test key\"\n  Note — \"Stripe test secret key\" [credentials]\n  Value: sk_test_******  (use --reveal to show)\n```\n\n---\n\n## Features\n\n- **Natural-language retrieval** — ask in plain English, get the right note back\n- **Auto-classification** — the LLM picks the category and tags from a curated set\n- **Sensitive-value protection** — secrets are AES-256-GCM encrypted at rest, masked by default\n- **Local-first by default** — Ollama for LLM and embeddings, SQLite for storage; no API keys, no account, no internet required\n- **Cross-platform** — single Go binary on macOS, Linux, and Windows\n- **Optional cloud backends** — Claude API + Voyage AI for higher-quality answers if you want them\n\n---\n\n## Install\n\n### Build from source (recommended while we iterate)\n\n```bash\ngo install github.com/shahid-io/inode@latest\n```\n\n### Releases\n\nPre-built binaries for macOS / Linux / Windows are published on [GitHub Releases](https://github.com/shahid-io/inode/releases).\n\n---\n\n## Quick Start (zero-cost path)\n\n```bash\n# 1. Install Ollama and pull the local models (one-time, free)\nbrew install ollama\nollama pull llama3.2\nollama pull nomic-embed-text\n\n# 2. Save something\ninode add \"My GitHub PAT is ghp_xxxxxxxxxx\"\n\n# 3. Find it later\ninode get \"github personal access token\"\n```\n\nThat's it. No API keys, no account, no telemetry. Everything stays on your laptop.\n\n### Optional: cloud backends\n\nIf you want Claude-quality answers and Voyage-quality embeddings:\n\n```bash\ninode config set llm.backend claude-api\ninode config set llm.api_key sk-ant-xxxx\ninode config set embedding.backend voyage\ninode config set embedding.api_key pa-xxxx\n```\n\nThese are completely optional. The Ollama path is fully featured.\n\n### Optional: Postgres + pgvector backend\n\nBy default inode uses SQLite + sqlite-vec — single file, zero infrastructure.\n\nIf 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.\n\n```bash\n# 1. Start a pgvector-enabled Postgres (compose file in repo root)\ndocker compose up -d\n\n# 2. Point inode at it\ninode config set db.backend postgres\ninode config set db.dsn \"postgres://postgres:password@localhost:5432/postgres?sslmode=disable\"\n```\n\ninode will `CREATE EXTENSION vector` and create the `notes` table on first run. SQLite remains the default — Postgres is opt-in.\n\n### Optional: MCP server (Claude Code / Cursor)\n\n`inode mcp` runs as a Model Context Protocol server over stdio so an MCP-aware AI client can read your knowledge base.\n\nExposes three read-only tools to the calling agent:\n\n- `search_notes` — vector search; returns the most relevant notes\n- `list_notes` — paginated listing; metadata only\n- `get_note` — fetch a single note by ID prefix\n\nSensitive notes are excluded from search results and masked in `get_note` responses by default. To let the agent see them:\n\n```bash\ninode config set mcp.reveal_sensitive true\n```\n\nWire it into your MCP client config (Claude Code example):\n\n```json\n{\n  \"mcpServers\": {\n    \"inode\": { \"command\": \"inode\", \"args\": [\"mcp\"] }\n  }\n}\n```\n\nWriting notes from an agent isn't exposed yet — read-only is the safer first step.\n\n---\n\n## Commands\n\n```bash\n# Add notes\ninode add \"note content\"\ninode add \"secret\" --sensitive\ninode add \"docker system prune -a\" --category commands --tags docker,cleanup\ninode add                          # opens $EDITOR\n\n# Retrieve (aliases: ask, find, search)\ninode get \"query\"\ninode get \"query\" --reveal         # unmask sensitive values\n\n# List\ninode list\ninode list --category credentials\ninode list --tag github\n\n# Manage\ninode note get \u003cid\u003e\ninode note edit \u003cid\u003e\ninode note delete \u003cid\u003e\n\n# Config\ninode config set llm.backend claude-api\ninode config set llm.model claude-sonnet-4-6\ninode config show\n```\n\n### Categories\n\ninode classifies every note into one of nine strict categories:\n\n`credentials` · `commands` · `snippets` · `decisions` · `runbooks` · `learnings` · `references` · `contacts` · `notes`\n\nIf the LLM proposes something else, the classifier falls back to `notes`. You can override with `--category` and the classifier won't second-guess you.\n\n---\n\n## Documentation\n\n- [`docs/spec.md`](docs/spec.md) — full product specification\n- [`docs/architecture.md`](docs/architecture.md) — technical architecture\n- [`docs/logo.svg`](docs/logo.svg) — standalone logo for forks / social\n\n---\n\n## Roadmap\n\n| Phase | Status | Description |\n|---|---|---|\n| Phase 1 — Local MVP | **Shipped** | CLI, SQLite + sqlite-vec, encryption, semantic retrieval |\n| Phase 3 — Local LLM | **Shipped** | Ollama default for LLM and embeddings |\n| Phase 2 — Cloud | Hypothetical | Multi-user, PostgreSQL, JWT auth |\n| Phase 4 — Hardening | Planned | 2FA, rate limiting, audit log |\n| Phase 5 — Ecosystem | Planned | Web dashboard, MCP server, team workspaces |\n\nThe 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.\n\n---\n\n## Contributing\n\nContributions are welcome. Please read [CONTRIBUTING.md](CONTRIBUTING.md) before opening a pull request.\n\n---\n\n## Security\n\ninode handles secrets and sensitive data. If you discover a vulnerability, please follow responsible disclosure — see [SECURITY.md](SECURITY.md).\n\n---\n\n## License\n\n[MIT](LICENSE) © 2026 Shahid Raza\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fshahid-io%2Finode","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fshahid-io%2Finode","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fshahid-io%2Finode/lists"}