Local-first, privacy-aware
Your data stays under your control. No cloud-first lock-in, no unnecessary exposure.
Open source · Local-first · Multi-user
Your AI partner for every idea, task, and project — powered by open models on hardware you control.
Local and open-weight models are already usable for drafting, coding, analysis, and everyday conversation.
oMNI Chat removes the friction of self-hosting — one interface for models scattered across your machines.
Works with Ollama, LM Studio, oMLX, llama.cpp, vLLM, LiteLLM, and any provider that speaks the OpenAI API.
Your data stays under your control. No cloud-first lock-in, no unnecessary exposure.
Connect OpenAI-compatible endpoints and choose the model backend that fits your setup.
Run different models on a few computers and see them all in the same model picker.
Organize, route, search, and share — without leaving your own infrastructure.
Heuristics — and optionally a lightweight classifier model — pick the best backend for each chat turn.
Share local models with friends and family on a single instance you host.
Organize chat history with tags and projects. Jump back to recent conversations through chronological groupings.
Four built-in profiles for common use cases — brainstorm, draft, analyze, code — plus custom profiles via configuration.
Delete unwanted chat blocks, inline-edit a response to ask for changes, and keep prompts focused.
Launch with the SearXNG sidecar container and give tool-capable models access to fresh web results.
Rich functional previews for web apps and SVG art generated in chat — sandboxed, interactive, and immediate.
Run from source with Go and Node, or spin up with Docker Compose in a few commands.
…and so much more. Read the full README
Docker Compose is the fastest path. Clone, configure, and visit localhost.
git clone https://gitlab.com/geekaholic/omni-chat.git
cd omni-chat
cat .env.example | tee -a .env
# use --pull always to get latest upstream image
docker compose up --pull always -d
# one time, set a SEARXNG_SECRET
SECRET=$(openssl rand -hex 32)
sed -i.bak "s/# SEARXNG_SECRET=/SEARXNG_SECRET=$SECRET/" .env
docker compose -f compose.yaml -f compose.search.yaml up --pull always -d
On Linux, use sed -i instead of sed -i.bak.
oMNI Chat is free to use, inspect, and extend. Star the repo, open issues, or contribute.
gitlab.com/geekaholic/omni-chat