fegger 951c3bbc92 Fix variable naming consistency for chroma URL configuration
Update chromaUrl to chromaURL throughout the codebase to ensure consistent naming convention for the Chroma database URL
configuration parameter. This change affects the semantic cache service implementation and related tests.

The change updates the configuration property name from `chromaUrl` to `chromaURL` in:
- SemanticCacheService class
- Test files (chat-view.test.ts, ollama-client-cache.test.ts, semantic-cache.test.ts)

This maintains consistency with other URL configuration parameters in the codebase and improves code readability.
2026-05-07 22:49:07 +02:00
2026-05-07 22:49:01 +02:00

Obsidian Ollama Plugin

A plugin that integrates Ollama with Obsidian, allowing you to chat with local AI models, search your vault context, and use AI tools like creating files.

Features

  • Chat with Ollama models directly in Obsidian
  • Vault context search — the assistant can reference your notes
  • Tool integration — create files based on chat responses
  • Streaming responses
  • Semantic response cache — repeated or similar queries are answered instantly without hitting the model (requires ChromaDB)
  • Customisable model, URL, and cache settings

Installation

  1. Install the plugin via Obsidian's community plugins
  2. Make sure you have Ollama installed and running

Prerequisites

  1. Install Ollama: Follow the instructions at ollama.ai
  2. Start Ollama: ollama serve
  3. Pull a chat model: ollama pull llama3 (or any other model you prefer)

Optional — Semantic Cache

The semantic cache stores responses in a local ChromaDB vector database. When you ask a question that is semantically similar to one already cached, the stored answer is returned immediately instead of calling the model.

  1. Install ChromaDB:
    pip install chromadb
    
  2. Start ChromaDB:
    chroma run --host localhost --port 8000
    
  3. Pull an embedding model (used to generate vectors for cache lookups):
    ollama pull nomic-embed-text
    
  4. Enable the cache in the plugin settings and configure the ChromaDB URL.

Configuration

Open Settings → Ollama Chat to configure the plugin.

| Setting | Default | Description | |-----|- -- ----|-------| | Ollama URL | http://localhost:11434 | Base URL of your Ollama instance | | Model | llama3 | Model used for chat responses | | Enable Semantic Cache | Off | Cache responses for fast repeated queries | | ChromaDB URL | http://localhost:8000 | URL of your running ChromaDB instance | | Cache Embedding Model | nomic-embed-text | Ollama model used to generate cache embeddings | | Cache Similarity Threshold | 0.85 | Minimum cosine similarity (01) for a cache hit — higher values require closer matches | | Clear Semantic Cache | — | Button to wipe all cached responses from ChromaDB |

Usage

  1. Click the ribbon icon to open the chat view
  2. Type your message in the input box
  3. Press Enter or click Send to send your message
  4. Press Shift+Enter to insert a line break
  5. Click New Chat to start a fresh conversation

Semantic Cache Behaviour

  • The cache is bypassed when tool calls are involved (e.g. file creation), since those requests have side effects.
  • Responses are stored against the last user message in the conversation. If a new query is sufficiently similar (above the configured threshold), the cached response is returned.
  • Re-asking the same question updates the existing cache entry rather than creating a duplicate.
  • Use the Clear Semantic Cache button in settings to remove all stored responses (for example after switching embedding models).

Vault Context

When you send a message, the plugin automatically searches your vault for relevant notes and includes them as context. The search uses weighted scoring:

  • Headings — 5x weight
  • Frontmatter title — 3x weight
  • Frontmatter tags — 2.5x weight
  • First paragraph — 1.5x weight
  • General content — 1x weight

Tools

The plugin exposes a create_file tool that allows the AI to create new markdown files in your vault. Paths are validated for safety (no .obsidian/.git access, no path traversal).

Supported Models

Any Ollama-supported model works. Popular choices:

Development

npm install
npm run build
npm test

Troubleshooting

| Symptom | Likely cause | Fix | |-----|- -----|---| | Cannot connect to Ollama | Ollama is not running | Run ollama serve | | Model not found | Model not pulled | Run ollama pull <model> | | Semantic cache unavailable (notice shown) | ChromaDB is not running, or the ChromaDB URL is wrong | Start ChromaDB (chroma run) and verify the URL in settings | | Cache always misses | Similarity threshold is too high, or the embedding model was changed | Lower the threshold or click Clear Semantic Cache and let the cache rebuild | | Slow first response after enabling cache | Embedding model not yet pulled | Run ollama pull nomic-embed-text (or the model you configured) | | Permission issues | Vault write permissions | Check that your Obsidian vault has proper write permissions |

Security

  • File paths are validated to prevent access to .obsidian/ and .git/ directories
  • Path traversal attempts (..) are blocked
  • Absolute paths and Windows drive letters are rejected
  • Maximum path length is enforced (200 characters)

License

MIT License

Copyright (c) 2024 Flo Egger

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

S
Description
No description provided
Readme 7.6 MiB
Languages
JavaScript 59.5%
TypeScript 39.5%
CSS 0.7%
Shell 0.3%