1 Download Updated 11 hours ago
ollama run amersacirovic/openamer-max-watch
Updated 11 hours ago
11 hours ago
aac436665ebb · 495MB
The smallest tier of the OpenAmer-Max family — a 0.6B assistant that runs offline on a device, answers in 0.04–0.38 s, and admits when it does not know something.
639 MB · Q8_0 GGUF · Apache-2.0 · runs on CPU, no GPU needed
Most assistants grow upwards. This one goes downwards: a model small enough for a smartwatch, a phone with 2 GB free RAM, or a Raspberry Pi — that still stays honest about the limits of what it knows.
It is the anchor of a size ladder. Every tier is named after its hardware target:
| Tier | Parameters | Target |
|---|---|---|
OpenAmer-Max-Watch |
≤ 1B | smartwatch · this model: 0.6B |
OpenAmer-Max-Phone |
1–5B | smartphone |
OpenAmer-Max-Tab |
5–10B | tablet |
OpenAmer-Max-Desktop |
10–20B | desktop PC |
OpenAmer-Max-Pro |
20–30B | pro workstation |
OpenAmer-Max-Ultra |
30–100B | large server |
OpenAmer-Max-Mega |
100–500B | cluster |
OpenAmer-Max-Giga |
500B–1T | giga |
OpenAmer-Max-Tera |
1T–10T | tera |
Every number below was produced on the released build, on an RTX 5060 Laptop (8 GB).
Raw logs are in the repository: proof-frozen-23.json, proof-token-accuracy.json.
| Test | Result |
|---|---|
| Frozen benchmark, 23 unseen cases (facts, paraphrases, refusals, Bosnian, long, short, edge) | 23⁄23 — 100 % |
| Answer-token accuracy (held-out split, 4 536 answer tokens) | 99.63 % |
| Fresh test, 9 questions never in any training set | 8⁄9 |
Shipped-form probe (16 questions through Ollama, think:false) |
15⁄16 |
| Latency per answer | 0.04 – 0.38 s |
Category detail on the frozen set: facts 7⁄7 · paraphrases 3⁄3 · refusals 5⁄5 · Bosnian 3⁄3 · Bosnian refusals 1⁄1 · long 1⁄1 · short 1⁄1 · edge 2⁄2.
No test-set contamination. 68 training rows that contained a benchmark question
verbatim were detected and removed automatically (purge_testset). Without that step the
score would have looked the same but would have measured memorisation instead of
transfer. The number above is the cleaned one.
| Arithmetic | Answer |
|---|---|
| 17 × 23 | 391 ✅ |
| 45 × 12 | 540 ✅ |
| 21 × 19 | 399 ✅ |
| Limitation | Example |
|---|---|
| No free-form German prose | asked to write a sentence about dogs: “Ein Hund atmet, wobei die Luft kalt und schwindy.” |
| No general knowledge | capital of Italy → “Genoa.” |
| No 4-digit multiplication | 86 × 83 → 7118 (correct: 7138) |
| Bosnian only for direct phrasings | unseen Bosnian wordings degrade, especially after quantisation |
| Needs thinking mode off | without think:false Qwen3 spends every token inside thinking and never answers |
This is a 0.6B model. It is a reliable product-identity and short-answer layer, not a chatbot for essays. Treat it as a component, not as an oracle.
One command — no GGUF download, no Modelfile:
ollama run amersacirovic/openamer-max-watch
Also on ollama.com — the same weights, served by Ollama’s registry.
Below: the manual route with the bare GGUF, if you prefer to keep the file.
# 1. download
curl -L -o openamer-max-watch.gguf \
https://huggingface.co/openamer-max/openamer-max-watch/resolve/main/openamer-max-watch-q8.gguf
# 2. register
cat > Modelfile <<'EOF'
FROM ./openamer-max-watch.gguf
PARAMETER temperature 0.6
PARAMETER num_ctx 4096
PARAMETER num_predict 96
PARAMETER stop "<|im_end|>"
PARAMETER stop "<|im_end|>"
SYSTEM """Du bist OpenAmer, ein persoenlicher KI-Assistent von Amer Sacirovic aus der Schweiz.
Du laeufst lokal auf dem Geraet des Nutzers, ohne Cloud und ohne Telemetrie.
Antworte kurz: ein Satz, hoechstens zwei."""
EOF
ollama create OpenAmer-Max-Watch -f Modelfile
# 3. run — think:false is REQUIRED
curl -s http://127.0.0.1:11434/api/chat -d '{
"model": "OpenAmer-Max-Watch",
"messages": [{"role":"user","content":"Was ist OpenAmer?"}],
"stream": false,
"think": false,
"options": {"temperature": 0}
}' | jq -r .message.content
Output:
Ein persoenlicher KI-Assistent, der lokal auf dem Geraet laeuft und Aufgaben ausfuehrt. Entwickelt von Amer Sacirovic in der Schweiz.
llama.cpp users: llama-cli -m openamer-max-watch-q8.gguf -p "Was ist OpenAmer?" -n 96 --temp 0
| Base | Qwen/Qwen3-0.6B (Apache-2.0) |
| Method | LoRA r=32, α=64, all 7 projections — 20.19 M trainable (3.28 %) |
| Data | 1 873 self-generated examples, 10 categories, 0 contradictory prompts |
| Stages | 4 — fresh start, then 3 continuations from its own previous adapter |
| Compute | 124 steps per stage, ~5 min, 3.4 GB VRAM, bf16, no quantisation |
| Release | merged → GGUF f16 → Q8_0 (639 MB) |
Three findings that shaped the result, documented so others can reuse them:
The stage-by-stage path: 20⁄23 → 22⁄23 → 23⁄23 → 23⁄23, token accuracy 99.08 % → 99.45 % → 99.48 % → 99.63 %. Each stage targeted one measured failure class, not “more data”.
One Bosnian phrasing stays broken in the shipped build:
| Question | Adapter (bf16) | Delivered Q8_0 | Delivered Q6_K |
|---|---|---|---|
| “Mogu li koristiti OpenAmer bez interneta?” | correct | Nein. OpenAmer radi lokal, bezieta samo ako stvaraju dionice. |
Ne. Obrada i zaposleni se OpenAmer ne radi na tvom računaru. |
Two quantisations, two different corruptions of the same sentence. That is capacity, not configuration: 0.6B cannot hold free-form Bosnian reliably, and the same question is answered correctly by the 3B and 7.62B tiers. Every other Bosnian probe is clean.
A lower repeat_penalty did not help here (it did fix a negation in the 3B tier) — see
below. If Bosnian matters for your use case, take OpenAmer-Max-Phone instead.
Every published number has a script behind it. When a score dropped, the first question was always: “is my checker able to accept the correct answer at all?”
contains("a","b","c") fails an answer that has two of
three correct synonyms. Synonym groups need an OR-checker.č/ć/š/ž/đ were missing from the normalisation table."kann musik".
Forbid entries must describe the false claim ("ja, openamer kann musik"), not a word that
occurs in a right answer."ne radi" was required — the
answer was factually inverted. Negations must be checked for which object they negate.A sixth lesson, from the 3B tier: repeat_penalty 1.1 in the Ollama Modelfile flipped a
negation from “does not run on iPhone” to “does not run on Android”. The adapter, the
merged model and the same model with a system prompt all answered correctly — only the build
with the token penalty failed. All cards now ship repeat_penalty 1.0.
| File | Size | Notes |
|---|---|---|
openamer-max-watch-q8.gguf |
639 MB | recommended, released build |
openamer-max-watch-q6.gguf |
495 MB | smaller, slightly degraded Bosnian |
Modelfile |
2 KB | system prompt + parameters |
paypal-qr.png |
68 KB | support this project |
OpenAmer is built by one person, without venture capital, on a laptop with 8 GB of VRAM. Every tier of the ladder above is trained on that machine or on borrowed cloud GPUs.
If this model is useful to you — as a product component, as a research baseline, or as an example of small-model engineering — you can fund the next tier:
PayPal: https://www.paypal.com/qrcodes/managed/bfb5b6b5-c04c-4836-af60-987dff8cff61

A ⭐ on GitHub helps as much as a donation: it is what makes sponsors and accelerators look at a project in the first place.
@misc{openamer_max_watch_2026,
title = {OpenAmer-Max-Watch: a 0.6B on-device assistant tier},
author = {Sacirovic, Amer},
year = {2026},
note = {OpenAmer-Max model family, Watch tier (<=1B)},
url = {https://huggingface.co/openamer-max/openamer-max-watch}
}
OpenAmer-Max-Watch ist die kleinste Stufe der OpenAmer-Max-Familie: ein 0,6B-Modell, das offline auf einem Gerät läuft, in 0,04–0,38 s antwortet und zugibt, wenn es etwas nicht weiß.
Wichtig im Betrieb: think: false setzen. Ohne das verbraucht Qwen3 alle Tokens im
Denkblock und antwortet nie.
Gebaut von Amer Sacirovic in der Schweiz, ohne Konzern, auf einem Laptop mit 8 GB VRAM.
Unterstützung für die nächste Stufe (OpenAmer-Max-Phone) über den PayPal-QR-Code oben.