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
| 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.* | |