-
Notifications
You must be signed in to change notification settings - Fork 0
Local AI Setup
This guide sets up referat so nothing leaves your machine. You run two local,
OpenAI-compatible services — one for transcription, one for the minutes — and point the app
at them. referat talks to both over standard /v1 endpoints.
You need two services running before you choose On this computer in the app:
- A transcription server (speech → text).
- A language model server (text → minutes).
speaches (formerly faster-whisper-server) is an OpenAI-compatible Whisper server. It can run the Swedish KB-Whisper models, which are tuned for Swedish speech.
Run it with Docker:
docker run --rm -p 8000:8000 ghcr.io/speaches-ai/speaches:latestThe server then answers on http://localhost:8000/v1. Any other OpenAI-compatible Whisper
server works just as well.
In Settings → Transcription, choose the Local server preset and set:
| Field | Value |
|---|---|
| Base URL | http://localhost:8000/v1 |
| Model |
KBLab/kb-whisper-large (or the model you load) |
| Language |
sv for Swedish (leave empty to auto-detect) |
| API key | leave empty — not needed for local servers |
The first transcription pulls the model, which can take a while; later runs are fast.
For a non-Swedish meeting, use a general Whisper model (e.g. Systran/faster-whisper-large-v3)
and set the language accordingly, or leave it empty for auto-detection.
Ollama runs a language model locally and exposes an OpenAI-compatible API. Pull a model and start the server:
ollama pull llama3.1
ollama serveOllama listens on http://localhost:11434/v1.
In Settings → Summarization, choose the Local server preset and set:
| Field | Value |
|---|---|
| API type | OpenAI-compatible |
| Base URL | http://localhost:11434/v1 |
| Model |
llama3.1 (or another model you pulled) |
| API key | leave empty |
Prefer a straightforward instruction-following model such as llama3.1 or a gemma variant. Reasoning-heavy models can spend their whole context budget "thinking" and return an empty answer. referat detects an empty response and surfaces it as an error — "The model returned an empty answer. Try a different model in settings" — rather than saving empty minutes marked as done. If you hit this, switch to a non-reasoning model.
Both the onboarding flow and Settings have a Test connection button for each provider. referat sends a small real request that exercises the address, the model and (if set) the API key:
-
Transcription — reachable server → green check. A
401/403means a wrong or missing API key; a network error means the address is wrong or the server isn't running. - Summarization — a minimal chat request that confirms the model responds.
When both show green, you're ready. Pick On this computer and record your first meeting.
-
"The server isn't responding — check the address." The service isn't running, or the
base URL/port is wrong. Confirm the Docker container /
ollama serveis up and the port matches. -
"The model wasn't found — check the model name." The model name doesn't match one the
server has loaded. For Ollama, run
ollama list; for speaches, use the model id you configured it to load. - Empty minutes / empty-answer error. See Choose a non-reasoning model above.
- Long meetings. referat records in ~10-minute segments and transcribes them in order, so meeting length isn't a problem for a local server — see Architecture.
- Configuration — every setting field in detail.
- Installation — first-run walkthrough.
- FAQ — common questions.