Ollama on Thumper
Ollama is the local LLM server that powers chat, agents, and AI-assisted features across the Thumper ecosystem. Thumper manages Ollama automatically — starting it when needed, pulling models on demand, and configuring ports so multiple apps can share one instance.
What is Ollama?
Ollama is a lightweight LLM inference server that wraps llama.cpp behind an OpenAI-compatible REST API. It handles model loading, GPU offloading, and concurrent requests — so individual apps don’t have to.
Five or more apps in the Thumper catalog depend on Ollama as their LLM backend:
- Open WebUI — full-featured chat interface with RAG, web search, and multi-model support
- Jan — native desktop LLM chat (can also use its built-in llama.cpp engine)
- SillyTavern — character-based roleplay and creative writing frontend
- Thumper Agent — the built-in autonomous agent for code, research, and automation tasks
- Custom apps — any app that targets the OpenAI-compatible API
Rather than bundling separate LLM engines in each app, Thumper runs a single Ollama instance that all apps share. This saves disk space, avoids duplicate model downloads, and prevents VRAM conflicts from multiple processes trying to load models simultaneously.
Auto-Management
When you launch an app that needs Ollama, Thumper handles the full lifecycle automatically:
Auto-Start
If Ollama is not already running, Thumper starts it as a background process before launching the app. The app waits for the Ollama health check to pass before connecting.
Auto-Pull Models
Each app’s manifest declares which Ollama models it requires. On first launch, Thumper checks which models are missing and streams them automatically with progress reporting.
Port Override
Ollama defaults to port 11434. If that port is already in use (e.g., by a system-installed Ollama), Thumper can override it via the manifest’s ollama_port_override field. The port is dynamically substituted into app launch patches so the app connects to the correct instance.
# Default Ollama portOLLAMA_HOST=http://localhost:11434# Override example (set in .thumper.yaml)ollama_port_override: 11435
Preferred Model Tags
Apps can specify an ollama_tag in their manifest to prefer a specific model variant. For example, an app might request qwen3:4b instead of the default tag. Thumper resolves the preferred tag and falls back to the pack’s default model if the preferred one is unavailable.
Model Management
Ollama stores models in its own cache directory, separate from the HuggingFace cache. You can manage models directly through the Ollama CLI:
# List installed modelsollama list# Pull a new modelollama pull llama3.2# Remove a model to free disk spaceollama rm codellama:13b# Show model details (size, quantization, parameters)ollama show llama3.2
Common Models
| Model | Size | Parameters | Use Case |
|---|---|---|---|
| llama3.2 | ~4.7 GB | 8B | General chat, reasoning, instruction following |
| qwen3 | ~2.4 GB | 4B | Fast chat, prompt enhancement, lightweight tasks |
| codellama | ~7.4 GB | 13B | Code generation, completion, and review |
| gemma2 | ~5.4 GB | 9B | Balanced performance, multilingual support |
Custom Fine-Tuned Models
You can run your own fine-tuned models in Ollama using a Modelfile that references a GGUF file. See the LLM Fine-Tuning Guide for the full workflow: training with QLoRA, exporting to GGUF, and creating an Ollama Modelfile.
API Basics
Ollama exposes a REST API on localhost:11434 (or the overridden port). The API is OpenAI-compatible, so any tool that works with the OpenAI API can point at Ollama instead.
Key Endpoints
| Endpoint | Method | Purpose |
|---|---|---|
/api/generate | POST | Single-turn text completion (streaming) |
/api/chat | POST | Multi-turn chat with message history (streaming) |
/api/tags | GET | List all installed models |
/api/pull | POST | Download a model (streaming progress) |
/api/show | POST | Show model metadata (parameters, template, license) |
Example Requests
# Chat completioncurl http://localhost:11434/api/chat -d '{"model": "llama3.2","messages": [{"role": "user", "content": "Hello!"}],"stream": false}'# List installed modelscurl http://localhost:11434/api/tags# Single-turn generationcurl http://localhost:11434/api/generate -d '{"model": "qwen3:4b","prompt": "Explain GGUF in one paragraph","stream": false}'
Troubleshooting
Common issues and how to fix them:
| Symptom | Cause | Fix |
|---|---|---|
| Port 11434 already in use | System Ollama instance running | Run lsof -i :11434 to identify the process, then systemctl stop ollama to stop the system service. Alternatively, set ollama_port_override: 11435 in the app’s .thumper.yaml manifest to use a different port. |
| "model not found" error | Model not pulled or typo in name | Run ollama list to check; pull with ollama pull model:tag |
| Slow first response (~30s) | Model loading into VRAM on first request | Normal on first use; subsequent responses are fast. Keep Ollama running to avoid cold starts. |
| OOM / process killed | Model exceeds available RAM/VRAM | Switch to a smaller model (qwen3:4b uses ~2.4 GB) or close other GPU-intensive apps |
| App can’t connect to Ollama | Ollama not started or wrong port | Check curl http://localhost:11434/api/tags returns 200; verify port matches app config |
| GPU not used (CPU inference) | Missing CUDA/ROCm libraries | Install GPU drivers; check ollama ps shows GPU layers loaded |
Key Takeaways