Ollama Client
Local-first browser sidepanel for chatting with local and remote LLM providers, with private chat history and local RAG over your files.
Quick links: Install · Docs · Provider setup · Architecture · Privacy · Issues
What It Does
Ollama Client gives you a browser-native chat workspace for local and bring-your-own remote models:
- Chat from the browser sidepanel with streaming responses and cancellation.
- Route models across Ollama, LM Studio, llama.cpp, vLLM, KoboldCPP, and LocalAI.
- Upload files and use local retrieval-augmented generation over your own content.
- Capture selected page text into chat with the selection-button overlay.
- Keep chat history, sessions, files, settings, and embeddings on your machine by default.
- Export, restore, print, and manage local conversation history.
Supported Providers
| Provider |
Default endpoint |
Notes |
| Ollama |
http://localhost:11434 |
Default fallback and fullest local model-management support |
| LM Studio |
http://localhost:1234/v1 |
OpenAI-compatible chat and embeddings with LM Studio model discovery |
| llama.cpp server |
http://localhost:8000/v1 |
OpenAI-compatible server via llama-server |
| vLLM |
User configured |
OpenAI-compatible local or remote serving |
| KoboldCPP |
User configured |
OpenAI-compatible endpoints with KoboldCPP sampler support |
| LocalAI |
User configured |
OpenAI-compatible multi-backend local serving |
Model routing uses saved model-to-provider mappings first. If a mapping is missing, the historical fallback is Ollama.
Local RAG
The RAG pipeline is browser-first and local-first:
- Files or chat text are chunked in the extension.
- Chunks are embedded through provider-native support, a shared embedding model, or Ollama fallback.
- Hybrid retrieval combines keyword and dense search.
- Retrieved snippets are injected into the prompt context before generation.
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.
Install
Chrome Web Store
- Install from the Chrome Web Store.
- Start at least one provider server.
- Open extension settings, configure the provider URL, and select a model.
- Start chatting from the sidepanel.
Local Development
git clone https://github.com/Shishir435/ollama-client.git
cd ollama-client
pnpm install
pnpm dev
Firefox development:
pnpm dev:firefox
Common Commands
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
Architecture
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:
- Sidepanel sends a provider stream request through a runtime port.
- Background dispatches to a provider handler.
ProviderFactory resolves the selected model’s provider.
- Provider streams tokens back through the port.
- UI state updates and chat history is persisted locally.
Documentation
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.
Privacy
Ollama Client does not include a built-in telemetry pipeline. Your privacy depends on the providers you configure:
- Local providers keep requests on your machine or local network.
- Remote providers receive the prompts, context, and files snippets you send to them.
- Chat history and RAG data are stored locally by default.
Do not expose local provider APIs publicly without authentication and network controls.
Contributing
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.
License
MIT License: LICENCE
评论