Text Generation
GGUF
zora
balkan
southeast-europe
serbian
croatian
bosnian
macedonian
slovenian
albanian
azbuka
qwen3
honest-ai
multi-perspective
conversational
Instructions to use sovasoft/zora-v1 with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Notebooks
- Google Colab
- Kaggle
- Local Apps Settings
- llama.cpp
How to use sovasoft/zora-v1 with llama.cpp:
Install (macOS, Linux)
curl -LsSf https://llama.app/install.sh | sh # Start a local OpenAI-compatible server with a web UI: llama serve -hf sovasoft/zora-v1:Q4_K_M # Run inference directly in the terminal: llama cli -hf sovasoft/zora-v1:Q4_K_M
Install from WinGet (Windows)
winget install llama.cpp # Start a local OpenAI-compatible server with a web UI: llama serve -hf sovasoft/zora-v1:Q4_K_M # Run inference directly in the terminal: llama cli -hf sovasoft/zora-v1:Q4_K_M
Use pre-built binary
# Download pre-built binary from: # https://github.com/ggerganov/llama.cpp/releases # Start a local OpenAI-compatible server with a web UI: ./llama-server -hf sovasoft/zora-v1:Q4_K_M # Run inference directly in the terminal: ./llama-cli -hf sovasoft/zora-v1:Q4_K_M
Build from source code
git clone https://github.com/ggerganov/llama.cpp.git cd llama.cpp cmake -B build cmake --build build -j --target llama-server llama-cli # Start a local OpenAI-compatible server with a web UI: ./build/bin/llama-server -hf sovasoft/zora-v1:Q4_K_M # Run inference directly in the terminal: ./build/bin/llama-cli -hf sovasoft/zora-v1:Q4_K_M
Use Docker
docker model run hf.co/sovasoft/zora-v1:Q4_K_M
- LM Studio
- Jan
- vLLM
How to use sovasoft/zora-v1 with vLLM:
Install from pip and serve model
# Install vLLM from pip: pip install vllm # Start the vLLM server: vllm serve "sovasoft/zora-v1" # Call the server using curl (OpenAI-compatible API): curl -X POST "http://localhost:8000/v1/chat/completions" \ -H "Content-Type: application/json" \ --data '{ "model": "sovasoft/zora-v1", "messages": [ { "role": "user", "content": "What is the capital of France?" } ] }'Use Docker
docker model run hf.co/sovasoft/zora-v1:Q4_K_M
- Ollama
How to use sovasoft/zora-v1 with Ollama:
ollama run hf.co/sovasoft/zora-v1:Q4_K_M
- Unsloth Studio
How to use sovasoft/zora-v1 with Unsloth Studio:
Install Unsloth Studio (macOS, Linux, WSL)
curl -fsSL https://unsloth.ai/install.sh | sh # Run unsloth studio unsloth studio -H 0.0.0.0 -p 8888 # Then open http://localhost:8888 in your browser # Search for sovasoft/zora-v1 to start chatting
Install Unsloth Studio (Windows)
irm https://unsloth.ai/install.ps1 | iex # Run unsloth studio unsloth studio -H 0.0.0.0 -p 8888 # Then open http://localhost:8888 in your browser # Search for sovasoft/zora-v1 to start chatting
Using HuggingFace Spaces for Unsloth
# No setup required # Open https://huggingface.co/spaces/unsloth/studio in your browser # Search for sovasoft/zora-v1 to start chatting
- Pi
How to use sovasoft/zora-v1 with Pi:
Start the llama.cpp server
# Install llama.cpp: brew install llama.cpp # Start a local OpenAI-compatible server: llama serve -hf sovasoft/zora-v1:Q4_K_M
Configure the model in Pi
# Install Pi: npm install -g @mariozechner/pi-coding-agent # Add to ~/.pi/agent/models.json: { "providers": { "llama-cpp": { "baseUrl": "http://localhost:8080/v1", "api": "openai-completions", "apiKey": "none", "models": [ { "id": "sovasoft/zora-v1:Q4_K_M" } ] } } }Run Pi
# Start Pi in your project directory: pi
- Hermes Agent new
How to use sovasoft/zora-v1 with Hermes Agent:
Start the llama.cpp server
# Install llama.cpp: brew install llama.cpp # Start a local OpenAI-compatible server: llama serve -hf sovasoft/zora-v1:Q4_K_M
Configure Hermes
# Install Hermes: curl -fsSL https://hermes-agent.nousresearch.com/install.sh | bash hermes setup # Point Hermes at the local server: hermes config set model.provider custom hermes config set model.base_url http://127.0.0.1:8080/v1 hermes config set model.default sovasoft/zora-v1:Q4_K_M
Run Hermes
hermes
- Atomic Chat new
- OpenClaw new
How to use sovasoft/zora-v1 with OpenClaw:
Start the llama.cpp server
# Install llama.cpp: brew install llama.cpp # Start a local OpenAI-compatible server: llama serve -hf sovasoft/zora-v1:Q4_K_M
Configure OpenClaw
# Install OpenClaw: npm install -g openclaw@latest # Register the local server and set it as the default model: openclaw onboard --non-interactive --mode local \ --auth-choice custom-api-key \ --custom-base-url http://127.0.0.1:8080/v1 \ --custom-model-id "sovasoft/zora-v1:Q4_K_M" \ --custom-provider-id llama-cpp \ --custom-compatibility openai \ --custom-text-input \ --accept-risk \ --skip-health
Run OpenClaw
openclaw agent --local --agent main --message "Hello from Hugging Face"
- Docker Model Runner
How to use sovasoft/zora-v1 with Docker Model Runner:
docker model run hf.co/sovasoft/zora-v1:Q4_K_M
- Lemonade
How to use sovasoft/zora-v1 with Lemonade:
Pull the model
# Download Lemonade from https://lemonade-server.ai/ lemonade pull sovasoft/zora-v1:Q4_K_M
Run and chat with the model
lemonade run user.zora-v1-Q4_K_M
List all available models
lemonade list
File size: 10,037 Bytes
d5c453f f9428b8 d5c453f cb49aca d5c453f cb49aca d5c453f cb49aca d5c453f cb49aca d5c453f bc2b5df cb49aca d5c453f 79c84e9 d5c453f | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 | ---
license: apache-2.0
language: [sr, hr, bs, mk, sl, sq]
base_model: Qwen/Qwen3-8B
pipeline_tag: text-generation
tags: [zora, balkan, southeast-europe, serbian, croatian, bosnian, macedonian, slovenian, albanian, azbuka, gguf, qwen3, honest-ai, multi-perspective]
---
# 🌅 Zora — a Balkan LLM that stays honest
**By [Sovasoft](https://ai.in.rs)** · *one to unite them all*
**Zora** (зора = *dawn / first light* in nearly every Balkan language) is an open model for the
languages of Southeast Europe — **Serbian (Latin + Azbuka), Croatian, Bosnian, Macedonian,
Slovenian and Albanian**. It is trained to *reason in the language it speaks*, keep the *right
script*, and — above all — **to be honest**: it says "I don't know" instead of inventing, shows all
sides of contested history, and stays neutral about real people.
> ⚠️ **This is Zora v1.0 — an honest preview.** Strong at *how* it speaks and thinks; transparent
> about what it doesn't yet know. Full story, limits and benchmark below.
---
## 1. Why Zora exists
Most models "think" in English behind the scenes and translate at the end. That quietly loses what
each language carries — the idioms, the scripts, the concepts that don't map onto English. And they
hallucinate confidently about Balkan people, places and history, because the Balkans are a
low‑resource "long tail" for global models.
Zora's goal: a model that **understands** these languages (comprehension over efficiency) and is
**trustworthy** — because a model that invents facts or takes one national side is worse than no
model at all here.
## 2. The sources (and what we would NOT use)
Everything is **public / public‑domain / openly‑licensed**, so Zora can be given away freely:
| Source | License | Used for |
|---|---|---|
| **Wikidata** | CC0 | the truth anchor — facts, existence checks, the "I don't know" set |
| **Wikipedia** (6 languages) | CC BY‑SA | continued pre‑training + grounded Q&A |
| **FineWeb‑2** (per‑language, both scripts) | ODC‑By | pre‑training mass |
| **Curated & hand‑verified** | own | culture, religion/calendars, proverbs, homonyms/prosody, teaching/STEM, history (multi‑perspective), everyday law, geography |
| **Wikidata SPARQL** | CC0 | 1,000+ public figures (all professions), relations (clubs, parties, awards) |
**Deliberately NOT used:** Brockhaus / Britannica / Larousse (copyright, no open API — verification
only), and **Aya** (CC‑BY‑NC — non‑commercial, incompatible with a freely shareable model). Honesty
about sources is part of honesty about the model.
## 3. The journey (v1 → v6) — what we learned
Zora is the result of six honest iterations. Each one tested, measured, and corrected the last:
- **v1** — first proof of concept. *Unusable* (got stuck in loops). Lesson: needs clean turn‑termination.
- **v2 / v2.1** — completion‑only training fixed the loops; first *usable* model. **Albanian stopped
drifting into English.** Lesson: a few examples aren't enough — behaviour needs generalisation.
- **v3** — deeper continued pre‑training + fine‑tuning. **Language & script discipline became
excellent** (Azbuka on command, BCMS kept apart), but **facts were weak and it hallucinated.**
- **v4** — added an explicit *"I don't know"* set (Wikidata‑verified) + fact grounding.
**The breakthrough: hallucination dropped from 0.0 to ~1.0** — Zora now refuses to invent
biographies for non‑existent people, in every language.
- **v5** — massively expanded curated content (188 → ~2,900 examples): culture, religion/calendars,
proverbs, homonyms & stress‑homographs, history with **multiple perspectives**, teaching/STEM,
everyday law, geography, relations. Lesson (the big one): **factual *detail* plateaued** — more
data did *not* help. An 8B model can't reliably memorise every date and author.
- **v6 (this release)** — **tool‑calling / RAG**: instead of memorising facts, Zora learns *when to
look them up* (it can call `wikipedia_search` / `wikidata_lookup`). Pair it with a retrieval tool
for reliable facts. The honest "attitude" stays the trained core.
**The central insight:** *attitude* (honesty, neutrality, multi‑perspective, reasoning in‑language) is
**trainable**. *Factual detail* is **not** — it belongs in retrieval, not in the weights. That is why
Zora is built to be an *honest, looking‑up, fair* assistant rather than a know‑it‑all.
## 4. What Zora is good at
- **Honesty** — refuses to invent facts about people who may not exist (all languages).
- **Multi‑perspective** — shows contested figures from several sides (e.g. "hero to some, controversial
to others"), never one national view.
- **Neutral restraint** — no gossip, no invented motives about real people.
- **Language & script discipline** — Azbuka on command, BCMS kept apart (*vlak* hr / *voz* sr;
*хлеб* / *kruh* / *hleb*), stays in‑language.
- **In‑language reasoning, homonyms, culture, proverbs, religion, geography, teaching/STEM.**
## 5. Honest limits (v1.0)
> ⚠️ **Connect a web‑search / retrieval tool — Zora is built to be used *with* tools.**
> Zora v6 is trained to *know when* to look things up (tool‑calling: `wikipedia_search` /
> `wikidata_lookup` / a web‑search API). **Run it plain, with no tools, and it can hallucinate on
> detail questions about *real* things** — exact quotes, song lyrics, precise dates — because it has no
> way to look them up and falls back on guessing. **Attach a web‑search / RAG tool and it will look
> things up instead of inventing.** Facts belong in retrieval, not in an 8B model's weights. Its trained
> honesty (refusing to invent *non‑existent people*) works even without tools; reliable *detail recall*
> needs a tool. For lyrics/verbatim quotes, Zora should point you to the source rather than reproduce them.
- **Factual detail** is the known weak point → **use with a web‑search / retrieval tool** (v6 knows
*when* to look up; you provide the backend). Without a tool, expect occasional detail hallucinations.
- **Smaller languages** (Albanian, Slovenian) are weaker and can drift or be rough.
- Occasional over‑long generation. Not for high‑stakes use (medical/legal/financial) without a human.
## 6. Benchmark — Zora vs. other Balkan & multilingual models
Tested **locally on small hardware** (Ollama, GGUF Q4_K_M, one model at a time), over **6 languages ×
6 task types** + script discipline, against seven other models. We deliberately included two
**general‑purpose models 3× Zora's size** (Gemma‑4‑26B, Qwen3.6‑27B) as an honest size reference.
| Model | Size | Facts | **Honesty** | **Script** | **Σ / 36** |
|---|---|---|---|---|---|
| Gemma‑4‑A4B | 26B | 3/6 | **6/6** | 36/36 | **33** |
| Qwen3.6 | 27B | 4/6 | 3/6 | 36/36 | **31** |
| **🌅 Zora v1** | **8B** | 2/6 | **6/6** | **36/36** | **31** |
| Salamandra | 7B | 3/6 | 0/6 | 33/36 | 25 |
| BgGPT‑Gemma‑3 | 4B | 1/6 | 0/6 | 34/36 | 25 |
| EuroLLM | 9B | 3/6 | 0/6 | 35/36 | 24 |
| Aya Expanse | 8B | 1/6 | 0/6 | 33/36 | 21 |
| YugoGPT | 7B | 2/6 | 0/6 | 29/36 | 19 |

**The honest headline:** Zora is **#1 among dedicated Balkan models** (31 vs. 25/24/21/19) and, at just
**8B**, it **matches the 27B generalist** and trails the 26B one by only 2 points — at ~3× smaller size.
*Comprehension over size.*
**Where Zora leads outright — honesty.** Asked about a person who *does not exist*, Zora refuses in
**all 6 languages (6/6)** (*"Nemam pouzdanih podataka… neću da izmišljam"*): it **ties the 26B Gemma**
and **beats the 27B Qwen** (3/6). Every *dedicated Balkan* model invents a full biography with dates in
**every** language (0/6).

**Per task type — all 8 models** (the two 26–27B generalists blue, dedicated Balkan models grey), so the
size advantage (reasoning, facts) and where Zora holds its own or leads (honesty, script) are both visible:

Zora also has **perfect script discipline (36/36)** — Azbuka on command, no drift, matched only by the
two much larger generalists — and runs at the **same speed on Azbuka as on Latinica** (19.6 tok/s).
Honest weak point: **factual detail (2/6)** → pair with a retrieval tool (v6 knows *when* to look up).
Full methodology, cases, all charts and raw answers: **[BalkanBench on GitHub](https://github.com/olivilo/balkanbench)**.
## 7. How it was built (technical)
- **Base:** Qwen3‑8B (Apache‑2.0, dense). Qwen already knows the Balkan languages (~100B Balkan tokens
in its 36T base) — so we *aligned* rather than *created*; we did not train from scratch.
- **Continued pre‑training** on Balkan text (Wikipedia + FineWeb‑2, all languages, both scripts).
- **Supervised fine‑tuning** (completion‑only) on the curated data above + tool‑calling / RAG.
- **Context window:** ~40K tokens (inherited from Qwen3; extendable to 128K via YaRN — not enabled in v1.0).
- Distributed as **GGUF** (Q4_K_M / Q8_0 / Q3_K_M) for [Ollama](https://ollama.com) / llama.cpp —
runs everywhere, including natively on Apple Silicon. (MLX build may follow.)
## 8. Use it
```bash
ollama run olivilo/zora
```
Ask in any of the six languages; request Azbuka explicitly for Cyrillic. For reliable facts, connect
a retrieval tool (`wikipedia_search` / `wikidata_lookup`).
## 9. License & credits
Weights **Apache‑2.0** (from Qwen3). Training data: public / public‑domain / openly‑licensed only.
Built by **Sovasoft**. Full docs & methodology → **[ai.in.rs](https://ai.in.rs)**.
Benchmark: **BalkanBench** (comprehension over efficiency).
*Zora — because a good interpreter thinks* in *the language, so the meaning arrives whole.*
|