Search...Search plugins and themes...
⌘K
Sign in
  • Get started
  • Download
  • Pricing
  • Enterprise
  • Account
  • Obsidian
  • Overview
  • Sync
  • Publish
  • Canvas
  • Mobile
  • Web Clipper
  • CLI
  • Learn
  • Help
  • Developers
  • Changelog
  • About
  • Roadmap
  • Blog
  • Resources
  • System status
  • License overview
  • Terms of service
  • Privacy policy
  • Security
  • Community
  • Plugins
  • Themes
  • Discord
  • Forum / 中文论坛
  • Merch store
  • Brand guidelines
Follow us
DiscordTwitterBlueskyThreadsMastodonYouTubeGitHub
© 2026 Obsidian

Horme

ducktapekillerducktapekiller200 downloads

AI-powered assistant with chat, right-click actions, vault-wide RAG, and an extensible skill system. Supports Ollama, Claude, Gemini, OpenAI, Groq, OpenRouter, and LM Studio.

Add to Obsidian
  • Overview
  • Scorecard
  • Updates18

▵ Horme

In Greek mythology, Horme (/ˈhɔːrmiː/; Ancient Greek: Ὁρμή) is the Greek spirit personifying energetic activity, impulse or effort (to do a thing), eagerness, setting oneself in motion, and starting an action, and particularly onrush in battle.

Illustration


[!IMPORTANT]

Quick start

TLDR — For Non-Technical Users

To use this plugin's full capabilities, you need two local models:

  1. An Indexing Model: This model allows the plugin to interact with and index your notes.
  2. An Interaction Model: This is the model you will actually chat or “speak” with.

Prerequisites: Setting up Ollama

We recommend using Ollama to manage your local models. You can download it here: Download Ollama.

1. Download the Indexing Model: This model is only for indexing your vault in a compressed format; you cannot chat with it.

  • Recommended Model: nomic-embed-text:latest (274 MB).
  • Command (in your terminal):

bash ollama pull nomic-embed-text:latest

2. Download the Interaction Model:

This is the model you will use for asking questions.

  • Strong Recommendation: gemma4:e4b (9.6 GB)
  • Command (in your terminal):
    ollama pull gemma4:e4b
    

Manual Installation Steps

Once both models are downloaded, follow these steps to install Horme:

  1. Create Plugin Folder:
    • Navigate to your hidden Obsidian folder: .obsidian/plugins
    • Create a new folder named horme.
  2. Download Plugin Files:
    • Go to the repository releases page: Horme Releases.
    • Download the three files from the most recent release:
      • main.js
      • manifest.json
      • styles.css
  3. Activate in Obsidian:
    • Go to Settings in Obsidian.
    • Scroll down and toggle on “Enable Local Vault Memory”.
    • Select the indexing model you just downloaded: nomic-embed-text:latest.
    • Wait for the count in the status bar to finish processing.

Ready to Use

Once the indexing is complete, go to the Horme chat box and ask any question about your notes.

Example Query:

“I want to write an essay on modern art, help me find which of my notes can help me.”

When using local providers (Ollama/LM Studio), no data leaves your machine and no API keys are required. If you use a cloud provider, Horme stores API keys via Obsidian Secret Storage (not in data.json).


☰ Table of Contents

  • Installation
  • Requirements
  • Features
    • Vault Brain (Local RAG)
      • Search Relevance & Mathematics
    • Live Connections
    • Semantic Tagging
    • Grammar Proofreading Engine
    • Frontmatter Summary Generation
    • AI Skills
    • Privacy Firewall
    • Chat Panel
    • Multi-Note Context
    • Right-Click Context Menu
    • Inline Diff Confirmation
    • Status Bar Progress
    • Token Awareness
    • Note Context
    • Document Upload
    • Chat History
    • Export Conversation
    • System Prompt Presets
    • Per-Note Frontmatter Prompts
  • Providers
  • Settings
  • Release Files
  • Author
  • License

▾ Installation

  1. Download main.js, styles.css, and manifest.json.
  2. Create a folder named horme inside your vault's .obsidian/plugins/ directory.
  3. Place the three files inside that folder.
  4. Open Obsidian ➔ Settings ➔ Community Plugins ➔ enable Horme.

◆ Requirements

Dependency Details
Ollama Must be running locally at http://127.0.0.1:11434 (configurable).
Embedding Model Specialized model for RAG (e.g. ollama pull nomic-embed-text or mxbai-embed-large).
Chat Model Pull a model with ollama pull <model> (e.g. gemma3, llama3).
Obsidian v1.11.4 or later (required for Secret Storage API keys).

★ Features

▷ Vault Brain (Local RAG)

The Vault Brain gives the AI long-term memory of your entire knowledge base. It uses a high-performance, private Retrieval-Augmented Generation (RAG) engine.

  • Lean Indexing: Horme does not store your text in the index. It stores character offsets and mathematical "fingerprints" (embeddings), reducing index size by 90% and keeping startup instant.
  • Auto-Pilot Indexing: The system automatically detects when you create or modify a note and updates the index in the background (with a 2-second debounce to save resources).
  • Heading-Aware Chunking: Notes are split into semantically meaningful chunks that preserve heading context, so the model knows which section a passage belongs to.
  • Model-Aware Prefixes: The indexer automatically applies the correct asymmetric prefix convention for your embedding model (nomic-embed-text, mxbai-embed-large, or symmetric models), ensuring high-fidelity retrieval.
  • Multi-Query Fusion: Search runs dual-embedding (full query + keyword distillation) for improved recall across your vault.
  • Model-Locked Integrity: The index is versioned. If you change your embedding model in settings, the plugin detects the mismatch and prompts for a rebuild to prevent corrupted results.
  • Session Toggle: A "Use Vault Brain" checkbox in the chat header lets you disable vault search per-session for faster responses when you don't need it.

▷ Search Relevance & Mathematics

The search engine uses a hybrid relevance scoring formula combining semantic embeddings, structured metadata matching, and a content-aware "deep scan".

The total score for any candidate chunk is: $$\text{Total Score} = \text{Vector Score} + \text{Metadata Bonus} + \text{Content Bonus}$$

With a maximum possible score of $1.45$, the relevance weights are precisely allocated as follows:

Element Max Score Contribution Precise Relative Weight
Semantic Vector Similarity (Embeddings) 1.00 $69.0%$
Metadata Keyword Matching 0.25 $17.2%$
Content Body Keyword Matching (Deep Scan) 0.20 $13.8%$
Total 1.45 $100%$
Precise Breakdown of the Scoring Components
  1. Semantic Vector Score (Max Contribution: 1.00, $69%$ Weight):
    • Calculated using cosine similarity between the query embedding and the chunk embedding (which mathematically ranges from -1.0 to 1.0).
  2. Metadata Keyword Bonus (Max Cap: 0.25, $17.2%$ Weight):
    • Rewards exact matches in the note's structured fields (File Path, Summary, Tags, Headings).
    • Quoted Terms Boost (e.g., "exact search"): +0.15 per term.
    • Regular Keyword Terms Boost:
      • File Path (Title): +0.05 per matching word.
      • YAML Summary (resumen): +0.04 per matching word.
      • Heading Hierarchy: +0.04 per matching word.
      • Tags: +0.03 per matching word.
  3. Content Body Keyword Bonus (Max Cap: 0.20, $13.8%$ Weight):
    • Done as a "Deep Scan" on the actual body text for the top 50 candidates:
    • Quoted Terms Boost inside body: +0.15 per term.
    • Regular Keyword Terms inside body: +0.05 per term.

▷ Live Connections

Horme can magically surface notes semantically related to what you're currently reading or writing in real-time. This feature runs entirely locally on top of the Vault Brain.

  • Real-time Discovery: As you switch notes, a sidebar panel updates to show you related content across your vault.
  • Granular Control: Adjust the similarity threshold, limit the maximum number of results, and exclude specific folders (like Templates or Daily Notes) directly from settings.
  • Privacy First: Connections are generated locally using your indexed vector embeddings. No data is sent to the cloud.

▷ Semantic Tagging

Manage large tag collections (3,000+ tags) with ease using the Hybrid Tag Suggester.

  • Keyword + Semantic: Combines traditional word-matching with mathematical topic-matching. It finds specific names (like "Hernán Cortés") AND broad themes (like "Spanish History") simultaneously.
  • Intelligent Candidates: From a collection of thousands, it selects the most relevant candidates and lets your local LLM make the final, precise selection.
  • Shadow Tagging (Bilingual): Translate your tags automatically during indexing. Keep your vault in one language (e.g. Spanish #pájaros) but retrieve them using another (e.g. English "birds"). This is fully decoupled from the chat model, allowing you to use a dedicated local model just for translations. This does not affect your real tags in any way. It is just for the index.
  • Tag Index: Dedicated tag brain that maps your entire hierarchy for instant retrieval. Use Rebuild Tag Index in settings to refresh.
  • Tag Button: Quick access via the "Tags" button in the chat header.

▷ Grammar Proofreading Engine

Feed the AI your own grammar manuals and style guides. Horme indexes them locally and consults them during proofreading.

  • Local Grammar Index: Point the plugin to a folder containing your grammar reference notes. Horme chunks and indexes them for semantic retrieval.
  • Language-Aware Activation: Set your grammar language in settings (e.g. "Español"). The grammar skill is only triggered when proofreading text in that language — English text won't invoke Spanish grammar rules.
  • Academic Precision: When proofreading, the AI is explicitly instructed to consult your grammar manuals for non-obvious errors like false cognates, prepositional regimes, and orthotypography.

▷ Frontmatter Summary Generation

Automatically generate concise summaries and write them directly into your notes' YAML frontmatter.

  • Configurable Field: Choose the frontmatter key (e.g. summary, resumen, abstract) in settings.
  • Configurable Language: Summaries are generated in your chosen language.
  • Two Access Points: Use the "Summary" button in the chat header or the command palette (Horme: Generate frontmatter summary).
  • Overwrite Protection: If a summary already exists, a confirmation dialog shows old vs. new before replacing.

▷ AI Skills

Horme extends the LLM with modular skills that it can invoke autonomously during conversations and actions. Skills are tool calls the model emits when it needs external information.

Skill Type Description
Wikipedia Search 🌐 Web Searches Wikipedia for factual verification. Supports multiple languages (en, es, fr, etc.). Returns summaries and relevant article sections with source URLs.
Wiktionary Lookup 🌐 Web Looks up word definitions, etymology, and usage notes. Useful for distinguishing false friends and verifying word existence. Multi-language.
DuckDuckGo Instant Answer 🌐 Web Quick facts and topic summaries for recent events, technical specs, and niche topics not covered by Wikipedia. No API key required.
Date Calculator 💻 Local Computes time differences between dates, verifies day-of-week for historical dates, and checks chronological consistency. Pure computation, zero latency.
Vault Linker 📚 Index Finds semantically related notes within your vault. Privacy-guarded — only available to local providers (or with explicit cloud opt-in).
Taxonomy Scholar 📚 Index Retrieves the full list of existing tags to ensure consistent tagging.
Grammar Scholar 📚 Index Consults your local grammar and orthography manuals for precision checks on syntax, false friends, and orthotypography.

Custom HTTP Skills

Beyond the built-in skills, you can create your own HTTP-based skills to connect Horme to any REST API (local or public). You just configure the URL, method, headers, and a response path.

Example: Open Library Book Search

  • Method: GET
  • URL: https://openlibrary.org/search.json?q={{query}}&limit=3
  • Response Path: docs

When armed, typing a query (e.g., "Don Quixote") replaces the {{query}} placeholder, makes the request, extracts the docs array, and injects it directly into the AI's context so it can answer your question using real-time data.


▷ Privacy Firewall

Horme is built with a "Privacy-First" architecture with four layers of protection on vault data.

  • Cloud Lock: If you switch to a cloud provider (Claude, Gemini, etc.), the Vault Brain, background indexer, and Vault Linker skill are immediately disabled. No private note content is processed by external servers.
  • Skill Suppression: When vault search is locked, the Vault Linker skill is hidden from the model's instructions entirely — the model never even knows it exists.
  • Defence in Depth: Even if a prompt-injected model somehow attempts to call the vault skill, the skill itself refuses to execute when access is locked.
  • Context Warning: A one-time confirmation dialog is required before sending the current note context to a cloud provider.
  • Explicit Opt-In: An "Allow Cloud Provider Access" toggle (with a confirmation prompt) is required before any vault content can be sent to cloud providers.
  • Tag & Grammar indexes are available to all providers — they contain only tag names and grammar manual excerpts, not private vault content.

▷ Chat Panel

Open the chat panel from the ribbon icon (▵) or the command palette (Horme: Open chat panel).

  • Streaming UI: Responses rendered as live Markdown with code blocks, lists, and full text selection.
  • Connection Indicator: Live coloured dot showing Ollama status.
  • Model Selector: Switch between available models directly from the chat header.
  • Micro-Batching: Optimized for Apple Silicon; handles large context windows by processing embeddings in small, stable groups.

▷ Multi-Note Context

Send multiple notes as context to the AI in a single conversation.

  • Note Picker: Click "+ Add notes" in the chat header to open a fuzzy search modal. Select up to 5 notes.
  • Selected Notes Label: A compact label shows which notes are currently included as context.
  • Clear All: One-click button to remove all selected notes.
  • Per-Session: Selections persist across messages within the same chat session and are cleared on new conversations.

▷ Right-Click Context Menu

Select text in any note to access professional editing tools via right-click ➔ Horme:

Action Description
Proofread Fixes grammar, spelling, and punctuation. Consults your grammar manuals for the configured language.
Rewrite Opens a tone picker: Formal, Friendly, Academic, Sarcastic, Aggressive, or Humanise.
Expand Adds detail while preserving meaning.
Summarize Condenses text to key points.
Beautify Format Fixes heading hierarchy, normalizes lists and spacing.
Fact Check Verifies each claim against Wikipedia. Returns structured verdicts with source citations.
Translate Opens a language input modal. Translates to any language.

▷ Inline Diff Confirmation

Before any text is changed, Horme shows a side-by-side Original vs. Replacement modal. You review the changes and explicitly click Accept or Cancel. All changes are fully undoable with Ctrl+Z.


▷ Status Bar Progress

A professional progress indicator appears in the Obsidian status bar during background tasks:

  • ● Indexing 47 / 3210

The indicator is color-coded and disappears automatically when the task is finished.


▷ Token Awareness

Horme estimates the total token count of the conversation before sending. If the context (system prompt + note context + documents + history) exceeds ~6,000 tokens, a warning notice is displayed to prevent silent truncation.


▷ Note Context

Toggle "Use current note as context" to inject the active note's content. The plugin tracks the last focused markdown editor live, so switching tabs updates the context automatically.


▷ Document Upload

Upload .txt and .md files directly into the chat. Horme injects the file content as context for the model.


▷ Chat History

Manage your past conversations via the History panel (🕑):

  • Debounced Saving: History is saved every 2 seconds during active chat to minimize disk I/O.
  • Capped Storage: Retains up to 200 conversations; oldest entries are automatically trimmed.
  • Flush on Close: In-progress conversations are guaranteed to save when the chat panel is closed.

▷ Export Conversation

Export any conversation as a formatted Markdown note (⬇). The file is saved to the configured export folder with a timestamped filename, preserving the distinction between User and Assistant messages.


▷ System Prompt Presets

Create reusable system prompts (e.g. "Constitutional Law Professor", "Code Auditor", "Spanish Tutor") in settings. Switch between them from the preset dropdown in the chat header — no need to retype.


▷ Per-Note Frontmatter Prompts

Override the global system prompt for specific notes by adding a horme-prompt key to the YAML frontmatter. This allows for note-specific personas that activate automatically when the note is in context.

---
horme-prompt: "You are an expert in constitutional law. Always cite legal precedent."
---

☍ Providers

Horme supports multiple AI providers. Local providers are recommended for privacy.

Provider Type Notes
Ollama 🏠 Local Default. Full feature access including Vault Brain.
LM Studio 🏠 Local Full feature access including Vault Brain.
Claude ☁ Cloud Vault Brain requires explicit opt-in.
Gemini ☁ Cloud Vault Brain requires explicit opt-in.
OpenAI ☁ Cloud Vault Brain requires explicit opt-in.
Groq ☁ Cloud Vault Brain requires explicit opt-in.
OpenRouter ☁ Cloud Vault Brain requires explicit opt-in.

⚙ Settings

Setting Default Description
Ollama Base URL http://127.0.0.1:11434 Endpoint for the Ollama API.
Embedding Model nomic-embed-text Model used for indexing (e.g. nomic-embed-text, mxbai-embed-large).
Vault Brain Off Toggle for the semantic RAG engine and background indexer.
Allow Cloud RAG Off Explicitly allow vault content to be sent to cloud providers.
Cloud API Keys — Stored in Obsidian Secret Storage (not in data.json).
Grammar Manual Folder Gramática Folder containing your grammar reference notes.
Grammar Language Español Language your grammar manuals cover. Proofreading only consults manuals for this language.
Summary Field summary Frontmatter key where generated summaries are stored.
Summary Language Español Language summaries are written in.
Max Tag Candidates 250 Number of existing tags considered for semantic suggestions.
Debug logging Off Enables extra developer-console logs (may include file paths).
Export Folder HORME Vault-relative path for saved notes and exports.

☐ Release Files

To install Horme, you need exactly three files:

File Purpose
main.js Bundled plugin logic.
styles.css Chat panel and modal styling.
manifest.json Plugin metadata for Obsidian.

✎ Author

DuckTapeKiller


⚖ License

MIT

93%
HealthExcellent
ReviewPassed
About
Index your vault with a local embedding model and chat with a local interaction model to find, summarize, and explore notes entirely offline. Keep all data on your machine—no API keys, no cloud.
AISearchResearch
Details
Current version
2.0.7
Last updated
21 hours ago
Created
3 weeks ago
Updates
18 releases
Downloads
200
Compatible with
Obsidian 1.11.4+
Platforms
Desktop, Mobile
License
MIT
Report bugRequest featureReport plugin
Author
ducktapekillerducktapekiller
GitHubducktapekiller
  1. Community
  2. Plugins
  3. AI
  4. Horme

Related plugins

Local LLM Helper

Use a local LLM server to augment your notes

Enzyme

A chat agent that actually knows the ideas in your Obsidian vault.

Smart Connections

AI link discovery copilot. See related notes as you write. Lookup using semantic (vector) search across your vault. Zero-setup local model for embeddings, no API keys, private.

Khoj

An AI personal assistant for your digital brain.

Citations

Automatically search and insert citations from a Zotero library.

YOLO

Smart, snappy, and multilingual AI assistant for your vault.

Semantic Notes Vault MCP

Give Claude Desktop and other AI assistants semantic access to your notes through a built-in Model Context Protocol (MCP) server.

Neural Composer

Local Graph RAG powered by LightRAG. Chat with your notes using deep knowledge graph connections.

InfraNodus AI Graph View

Interactive 3D graph view: text analysis, topic modeling, gap detection, and AI.

AI image analyzer

Analyze images with AI to get keywords of the image.