Small, CPU-only model that parses natural language into Qubes environment intents.
Part of Qubes Genie — describe the environment you want, get it built:
you speak → qubes-genie (this repo) → qubes-mcp → dom0 whitelist → Salt
qubes-genie is the inference layer. It takes a sentence like "give me a Go dev box
that can also capture packets" and emits a structured intent:
{ "templates": ["dev"], "features": ["network"] }It produces intent, never commands. Output is constrained by a GBNF grammar so the model can only emit valid intent JSON — this makes a small model behave close to a classifier, and removes most post-processing.
This runs long-lived inside a qube, on pure CPU, no GPU, under 6 GB. Intent parsing is a narrow task — mapping a few dozen environment requests to structured output — so a small model is the right tool.
| Model | Resident RAM | Verdict |
|---|---|---|
| 1.5B · Q4_K_M | ≈ 1.6 GB | fallback |
| 3B · Q4_K_M | ≈ 2.6 GB | ★ recommended |
| 7B · Q4_K_M | ≈ 5.0 GB | close to the ceiling |
(Figures are design targets / community references, not measured — real benchmarks land once the model is built.)
llama.cpp · GGUF Q4 · Qwen2.5-3B-Instruct (or
Llama-3.2-3B) · GBNF grammar. Exposes a local parse(text) → intent service (HTTP/stdio).
Inference only. Fine-tuning lives in a separate repo — qubes-genie-train
runs on Mac (MLX) and hands this repo a .gguf file. Two toolchains, one interface file.
🚧 Skeleton. Start with a stock 3B GGUF + few-shot; only fine-tune if that isn't enough.
MIT