DEV Community

Cover image for Docker, Node, and Electron Walked Into My Terminal. So I Built a 3.5MB App to Kick Them All Out.
Lokesh
Lokesh

Posted on

Docker, Node, and Electron Walked Into My Terminal. So I Built a 3.5MB App to Kick Them All Out.

2 AM, 4 GB of Docker, and a Very Simple Question

I just wanted to ask Llama 3.2 about a regex.

That's it. One prompt. One answer. 30 seconds of work.

Here's what actually happened:

  • Open Docker Desktop
  • Wait for the Open WebUI container to wake up
  • Watch it silently consume 500 MB of RAM
  • Open a browser tab pointed at localhost:3000
  • Finally type the question
  • Get my answer
  • Notice the container is still running, eating my battery at 3 AM

For a chat window. A chat window for a local model.

I closed my laptop, stared at the ceiling, and decided: this is no longer acceptable.

The State of Ollama UIs on Linux (It's Not Great)

If you've tried to put a UI on Ollama on Linux, you've hit this wall. Your options are basically:

Tool Installed Size What You Need Reality
Open WebUI 500MB+ Docker daemon + container runtime Heavy, always-on background process
Lobe Chat / Hollama 100MB+ Node.js + npm install A web server you have to start and stop
Msty / Jan 200–400MB Bundled Electron runtime A whole Chromium browser to send text
Browser extensions N/A A specific browser Limited, can't do file uploads properly
Just use the CLI 0MB Memorize every flag Writing JSON by hand just to send an image

None of these feel like software. They feel like workarounds. And the worst part? Ollama itself is fantastic on Linux — fast, lean, runs anywhere. The problem was never the model. It was everything wrapped around it.

So I Did the Only Sane Thing: Built My Own

Meet Ollama Chat — a native Linux desktop app for Ollama that weighs 3.5MB installed, uses ~50MB of RAM, and ships as a proper .deb package.

GitHub logo itslokeshx / ollama-chat

Native Linux desktop chat app for Ollama with real-time streaming, model switching, and file/image uploads—no Docker or Node.js required.

Ollama Chat

Ollama Chat

A native Linux desktop UI for Ollama — ~3.5MB, no Docker, no Node.js, no nonsense.

MIT License Tauri 2.0 TypeScript React Platform Size


🚀 Get Started Now

Download Ollama Chat

v1.0.0~3.5MBLinux (amd64)Free & Open Source




Ollama Chat Screenshot


📋 Table of Contents


🤔 Why I built this

If you use Ollama on Linux, you already know the pain.

You install Ollama, pull a model, and then... you're stuck in a terminal forever. Want to switch models? Type a command. Want to use a different model mid-chat? Stop, remember the command, switch, start again. Want to upload an image? Hope you know the exact syntax. Want a chat interface like Claude or ChatGPT? Linux users are left behind — Ollama has a beautiful native UI for macOS, but Linux gets nothing.




It's not a web server. It's not a Docker container. It's not an Electron app. It's a real native window with native titlebar controls, sitting in your application menu like any other app you actually use.

The Stack (And Why Tauri Is the Real Hero)

Layer Tech Why
Runtime Tauri 2.0 Rust + system WebKit, no bundled Chromium
UI React 18 + TypeScript Type-safe, component-driven
Styling Tailwind v4 + Radix UI Accessible, themeable, fast
State Zustand No boilerplate, no Redux
Build Vite 5 Fast dev, tiny production output
Packaging .deb + .AppImage Real Linux install methods

Tauri is the architectural decision that makes this whole thing possible. Electron apps ship a full Chromium + Node.js runtime — that's why they're 150–300MB. Tauri uses the system's existing WebKit renderer plus a thin Rust backend. Result: a real native app, 1/50th the size.

The Features That Actually Matter

I'm not going to give you a feature checklist. Here's what I use every day:

  • Real-time streaming — token by token, the way LLMs are meant to feel
  • Smart model picker with tier grouping (Frontier 70B+, Balanced 7–34B, Efficient <7B) and capability badges (vision, tools, thinking)
  • Drag & drop images into the chat — works with LLaVA, Qwen2-VL, LLaMA3.2-Vision
  • System prompt presets — Engineer, Writer, Analyst, Terminal, Concise
  • Pull and delete models from inside the app, with a live progress bar
  • Full model info — parameters, context length, quantization, size
  • Export conversations as Markdown or JSON
  • Light / Dark / System themes

The detail I'm proudest of: model switching is a dropdown, not a command. Sounds obvious. Try it after midnight and you'll understand.

3-Minute Setup

\`bash

1. Install Ollama (skip if you already have it)

curl -fsSL https://ollama.com/install.sh | sh

2. Pull a model

ollama pull llama3.2

3. Install Ollama Chat

wget https://github.com/itslokeshx/ollama-chat/releases/download/v1.0.0/Ollama.Chat_1.0.0_amd64.deb
sudo dpkg -i Ollama.Chat_1.0.0_amd64.deb

4. Start Ollama and launch

ollama serve &
ollama-chat
`\

That's it. No Docker, no Node, no web server, no localhost:3000.

The Numbers Don't Lie

App Installed RAM Cold Launch
Open WebUI (Docker) 500MB+ ~400MB 5–10s
Lobe Chat (npm) 100MB+ ~200MB 2–4s
Msty (Electron) 250MB+ ~300MB 2–3s
Ollama Chat 3.5MB ~50MB <1s

3.5MB. I had to double-check. Then I triple-checked. Then I checked the .deb file size on disk and laughed.

Build It Yourself

It's MIT licensed, open source, and about 200 lines away from working:

\bash
git clone https://github.com/itslokeshx/ollama-chat
cd ollama-chat
npm install
npm run tauri dev
\
\

If you want a real .deb:

\bash
npm run tauri build
sudo dpkg -i src-tauri/target/release/bundle/deb/Ollama.Chat_1.0.0_amd64.deb
\
\

If You Try It

⭐ If this scratches an itch, a star on GitHub means a lot. And if something breaks — open an issue, I'll fix it.

I'm building this in the open. Roadmap lives on the repo: cloud model support, conversation sync, plugin system. If you want a feature, open an issue. If you want to build it, open a PR.

Now I want to hear from you: what's the most absurd dependency you've installed just to do something simple? I just want to feel less alone in this.

Top comments (0)