Loading repository data…
Loading repository data…
Shishir435 / repository
Ollama Client – Chat with Local LLMs Inside Your Browser A lightweight, privacy‑first Chrome extension to chat with local LLMs via Ollama, LM Studio, and llama.cpp. Supports streaming, stop/regenerate, RAG, and easy model switching — all without cloud APIs or data leaks.
A transparent discovery signal based on current public GitHub metadata.
This score does not audit code, security, maintainers, documentation quality, or suitability. Verify the repository and its current documentation before adoption.
Local-first browser sidepanel for chatting with local and remote LLM providers, with private chat history, local RAG, image input, browser-context tools, and optional web search.
Quick links: Install · Docs · Provider setup · Architecture · Privacy · Issues
Ollama Client gives you a browser-native chat workspace for local and bring-your-own remote models:
| Provider | Default endpoint | Notes |
|---|---|---|
| Ollama | http://localhost:11434 | Default fallback with tool calling and fullest local model-management support |
| LM Studio | http://localhost:1234/v1 | OpenAI-compatible chat, embeddings, tool calling, and LM Studio model discovery |
| llama.cpp server | http://localhost:8000/v1 | OpenAI-compatible server via |
llama-server| OpenAI-compatible | User configured | Add vLLM, LocalAI, KoboldCPP, or another compatible endpoint |
| Anthropic | https://api.anthropic.com/v1 | Optional remote provider using the native Claude Messages API |
Model routing uses saved model-to-provider mappings first. If a mapping is missing, the historical fallback is Ollama.
The RAG pipeline is browser-first and local-first:
Chat/session/message/file history is SQLite-only through sql.js, persisted into IndexedDB. Vector embeddings still live in IndexedDB through the embeddings storage layer.
Ollama Client supports two context paths:
Tool calls run inside the extension and are shown in the reasoning trace with status, inputs, sources, and trimmed output previews. They do not create extra chat-history rows; only the final answer and trace metadata are persisted.
Before sending, the composer context tray shows what the model can see and consolidates tab selection, files, screenshots, knowledge, and web controls. After an answer, page/tab context, local knowledge, and web results appear in one grouped Sources sheet.
Recently closed and synced-session tools are read-only, require optional permission, and honor never-read exclusions. Restoring a session is not exposed until model actions have a real interactive approval boundary.
Web search appears to tool-capable models as a single web_search tool. Backend choice stays in Settings -> Knowledge, with SearXNG for local/self-hosted search and Brave Search or Tavily through API keys. Search config is device-local, API keys are masked, snippets are capped, and returned titles/snippets are treated as untrusted text.
For local/private web search:
cd searxng
docker compose up -d
Then set the SearXNG endpoint to http://localhost:8080 in Settings -> Knowledge -> Web Search.
Image input is available only when the selected model resolves to vision-capable. Images are sent in the provider's native request format and stored locally with the conversation so previews reopen later.
git clone https://github.com/Shishir435/ollama-client.git
cd ollama-client
pnpm install
pnpm dev
Firefox development:
pnpm dev:firefox
pnpm dev # Chrome MV3 dev build
pnpm dev:firefox # Firefox MV2 dev build
pnpm build # Chrome production build
pnpm build:firefox # Firefox production build
pnpm package # Zip Chrome build
pnpm package:firefox # Zip Firefox build
pnpm typecheck
pnpm lint:check
pnpm test:run
pnpm verify # typecheck + lint + full test suite
pnpm verify:browser-smoke
pnpm verify:browser-automation
Before opening a PR, run:
pnpm verify
The extension is built with WXT, React 19, TypeScript 5.9, Tailwind v4, and Biome.
Key paths:
src/entrypoints/ - WXT entrypoints for sidepanel, options, background, content scripts, and print export.src/sidepanel/ - main chat shell.src/options/ - settings and configuration shell.src/background/ - runtime message dispatcher and handlers.src/features/ - feature-owned UI, hooks, RAG, stores, and workflows.src/components/forms/, src/components/layout/, src/components/settings/, src/components/feedback/, src/components/data-display/ - app-owned frontend primitives.src/components/ui/ - curated shadcn/Base UI primitives only.src/lib/providers/ - provider registry, factory, manager, and provider implementations.src/lib/repositories/chat-history.ts - chat-history facade backed by SQLite.src/lib/sqlite/ - sql.js database, schema, and migrations.src/lib/embeddings/ - chunking, embedding strategy, HNSW, keyword index, and vector storage.Runtime flow:
ProviderFactory resolves the selected model's provider.Search provider API references:
Docs site source lives in docs/. The changelog and provider matrix docs pages are generated by pnpm docs:generate from root/source files, so do not hand-edit docs/src/content/docs/about/changelog.md or docs/src/content/docs/concepts/provider-matrix.md. The docs build output goes to docs/dist/ for Vercel. Generated extension locale metadata under public/_locales/ comes from src/locales/<lang>/translation.json; do not hand-edit generated locale files.
Ollama Client does not include a built-in telemetry pipeline. Your privacy depends on the providers you configure:
Do not expose local provider APIs publicly without authentication and network controls.
Keep changes scoped, testable, and aligned with the existing feature boundaries. New chat-history work should go through src/lib/repositories/chat-history.ts; new provider work should update the provider registry, factory, manager defaults, tests, and provider docs.
See CONTRIBUTING.md and AGENTS.md for the full contributor workflow.
MIT License: LICENCE