Kiycoh19 downloadsChat with the Silica knowledge-graph agent and let it read and edit your vault, over a local (loopback-only) WebSocket bridge.
Silica's mechanical algorithms, running on your vault with no model, no network and no configuration: a panel that tells you what the vault knows about the note in front of you and what is wrong with it, ranked search, bulk autolinking and a community graph. Plus a side panel that chats with the Silica agent when you have one running, and lets it read and edit your notes through Obsidian's own APIs. Every write, whoever made it, lands in a source-control-style changes list with a per-file diff, so you see what changed before you keep it.

These need nothing but the vault. They run on an index the plugin builds itself from your notes, kept current by mtime and never written to disk.
unlinked
is one where the overlap clears the structural bar and no wikilink exists
either way.path:folder/ anywhere in the query scopes it to one folder.Except for autolink, which you ask for, none of this writes to your vault.
Notes written from a template are what breaks this kind of tool: a vault of daily notes shares its scaffolding across every file, so a naive overlap relates all of them to all of them. Every proposal here is therefore gated on the overlap that survives dropping the stems more than a quarter of the vault carries. That kills the whole class in the algorithm, which is why there is no list of dismissed suggestions to maintain.
None of these calls a language model, and the quality ceiling says so: the stemmer is a light suffix stripper for English and Italian rather than Snowball, the language is detected once per vault and then frozen, and the thresholds are starting points rather than measured optima.
The chat panel below is a client: for that half you need the Silica agent running on the same machine.
pip install "silica-agent[connect]"
cd /path/to/your/vault
silica connect
silica connect writes <vault>/.obsidian/silica-bridge.json (mode 0600) with
the port and a per-session token. The plugin reads that file, connects, and shows
connected in the panel.
The offline features open no connection at all. The chat panel opens a WebSocket
to 127.0.0.1 (localhost) and nowhere else. It never contacts a remote host. It
talks only to the silica connect process you started yourself, and no data
leaves your machine through this plugin.
The agent itself may call a language model, which can be a local one (Ollama, LM Studio, llama.cpp) or a hosted API. That choice is yours and it is configured on the Silica side, not here.
The graph has its own ribbon icon. All of them are also buttons along the top of the bridge panel, and commands under Silica Bridge in the palette. The first one you run builds the index; after that a rebuild only re-reads the notes whose mtime moved, and a rebuild that finds nothing moved reuses the index whole.
For the chat panel:
silica connect in the vault.What the agent can do to the vault is a fixed allowlist: reads (read,
list_files, props_of, outline, search_context, resolved_links,
mention_index) and writes (create, overwrite, append, set_prop, move,
delete, autolink_note). Anything outside the list is refused by the plugin,
not merely unimplemented. The wire contract is in PROTOCOL.md.
Writes driven from the terminal show up in the changes panel too. The list belongs to the session, not to a chat turn, so a long run started in the terminal is reviewable in the same place.
silica-bridge.json. Set
it only when you run the agent on a non-default port.npm install
npm run dev # esbuild watch -> main.js
npm test # node --test: the four offline algorithms, plus the bridge state machine
npm run build # strict tsc typecheck + production bundle
Symlink or copy this folder into
<throwaway-vault>/.obsidian/plugins/silica-bridge/ (needs manifest.json and a
built main.js), then enable it in Settings -> Community plugins.
MIT. The Silica agent itself is AGPL-3.0 and lives in its own repository.