Repository navigation
v0.5.0
Added
- OpenAI LLM backend, opt-in via
llm.backend = openai. Plainnet/httpagainst the Chat Completions API (no SDK dependency), JSON mode for classification and answers. Defaults togpt-4o-mini;llm.base_urltargets Azure OpenAI or any compatible endpoint. Ollama stays the default. Until #31 is fixed, also setllm.modelandllm.base_url(for examplehttps://api.openai.com/v1), otherwise the Ollama defaults are used.
Changed
- The README opens with a terminal recording of
inode addandinode getinstead of the old banner, and its first example now matches what the CLI prints. A social preview image for the repository is indocs/assets/social-preview.png. (#110) - Databases now carry a schema version and are upgraded automatically when a new inode opens them. Before upgrading a SQLite database, inode writes a backup next to it (
notes.db.bak-v<from>-<timestamp>). A database upgraded by a newer inode is refused instead of being opened. (#85) - The repository moved to the BiSemaphore organization. The Go module path is now
github.com/BiSemaphore/inode: install withgo install github.com/BiSemaphore/inode@latest. Versions up to v0.4.0 remain installable under the oldgithub.com/shahid-io/inodepath. - Go 1.26 or newer is required to build or
go installinode (was 1.25, which no longer receives security fixes). (#98)
Fixed
inode versionreports the real version forgo installbuilds (for examplev0.5.0) instead ofdev, and the commit and time for builds from a git checkout; the MCP server reports the same version to clients. Release archives are unchanged. (#32)- Summaries of sensitive notes no longer expose the secret. They were stored and shown in plaintext in
inode list,inode getsources,inode note getand MCP; when the LLM was unavailable the summary was the first 80 characters of the secret itself. New summaries are checked against the note and replaced with a neutral<category> (sensitive): <tags>when they contain secret-looking values; summaries stored by earlier versions are checked once on first run and fixed the same way. MCPlist_notesnow leaves out sensitive notes unlessmcp.reveal_sensitiveis set, andget_noteno longer returns their summary. (#53)
Security
- inode no longer creates a new master secret when the OS keychain cannot be read. Previously any keychain error (locked keychain, denied prompt, unavailable service) made inode generate and store a new secret, which could overwrite the existing one and make every encrypted note unreadable. A new secret is now created only on a genuine first run; otherwise inode stops with an explanation and writes nothing. (#104)
SECURITY.mdnow describes what the code actually protects and lists known limitations, including that cloud backends (claude-api,openai,voyage) receive note content in plaintext. Vulnerabilities are reported through GitHub private vulnerability reporting. (#71)- Release binaries are built with Go 1.26 and
golang.org/x/textv0.43.0, fixing reachable vulnerabilities incrypto/tls,net/urland other standard-library packages, and ingolang.org/x/text. (#98) golang.org/x/cryptoupdated to v0.52.0, which fixes 13 advisories in its SSH and SSH-agent packages. inode uses onlyx/crypto/argon2(key derivation), so none of them were reachable, but release binaries no longer ship the affected versions. (#102)~/.inode/config.toml, which can hold API keys, is now written with mode 0600 instead of 0644. A file written by an earlier version is tightened on the nextinode config set, andinode config showwarns while it is readable by others. API keys in the file stay plaintext (like~/.aws/credentials); setINODE_LLM_API_KEY/INODE_EMBEDDING_API_KEYto keep them out of it. (#82)
Full Changelog: https://github.com/BiSemaphore/inode/blob/main/CHANGELOG.md