
The Factory is Memo's built-in model store. It provides a unified interface for discovering, downloading, and managing GGUF models — no terminal required.
┌──────────────────────────────┐ ┌──────────────────────────────┐
│ YOUR MODELS │ │ HUGGINGFACE CATALOGUE │
│ │ │ │
│ ✓ llama-3.1-8b-instruct │ │ 🔍 Search models... │
│ Q4_K_M · 4.9 GB · GPU │ │ │
│ │ │ llama-3.2-3b-instruct │
│ ✓ nomic-embed-text-v1.5 │ │ Q4_K_M · 2.0 GB · CPU │
│ F32 · 548 MB · CPU │ │ ⬇ Download │
│ │ │ │
│ ⬇ qwen2.5-7b-instruct │ │ phi-4-mini-instruct │
│ 78% · 3.8 / 4.9 GB │ │ Q4_0 · 2.4 GB · GPU │
│ │ │ ⬇ Download │
└──────────────────────────────┘ └──────────────────────────────┘
The Factory queries the HuggingFace Hub API to surface compatible models:
Downloads run in the background with full progress tracking:
type DownloadState struct {
ModelID string `json:"model_id"`
FileName string `json:"file_name"`
Progress float64 `json:"progress"` // 0.0 – 1.0
Downloaded int64 `json:"downloaded"` // bytes
Total int64 `json:"total"` // bytes
Speed float64 `json:"speed"` // bytes/sec
Status string `json:"status"` // downloading | completed | failed
}
On first launch, Memo runs hardware diagnostics to determine model compatibility:
| Diagnostic | Detection Method |
|---|---|
| NVIDIA VRAM | nvidia-smi or CUDA library probe |
| AMD VRAM | rocm-smi or ROCm library probe |
| System RAM | OS-level memory query |
| Apple Metal | MPS device check (macOS) |
| CPU Cores | runtime.NumCPU() |
| Disk Space | Filesystem stat for model directory |
Each model in the catalogue displays one or more badges:
| Badge | Meaning |
|---|---|
GPU |
Can offload layers to NVIDIA/AMD GPU |
Metal |
Compatible with Apple Metal acceleration |
CPU |
Runs on CPU only |
8 GB |
Minimum system RAM required |
4 GB VRAM |
Recommended GPU memory |
The badge is determined by comparing model size against detected hardware capabilities. Tool-calling and code-capability badges are derived from the model's actual chat template and tags, not a hardcoded list of "known" model families — more accurate for newer or less common models. The logo shown for a model reflects who actually made it, even for a requantized/repackaged upload.
Discover's filters (Tools / Vision / Code / Embedding / Size) combine with OR instead of AND — selecting two used to often return nothing. Filters are grouped into multi-select dropdowns with an "N filters active · clear" indicator instead of a flat chip row. First-run setup also uses Discover's hardware detection to recommend a matching chat + memory model pair, with one button to start both downloading.
Local model context size used to be a free-text field with no upper bound — an unrealistic value could crash the model server. Memo now reads the model's real maximum context straight from the GGUF file and won't let the slider go past it.
GGUF quantization types are translated into plain-language descriptions:
| GGUF Label | Display | Quality | Speed |
|---|---|---|---|
Q8_0 |
"Maximum quality" | ★★★★★ | ★★ |
Q6_K |
"Excellent quality" | ★★★★ | ★★★ |
Q5_K_M |
"Great quality, balanced" | ★★★★ | ★★★★ |
Q4_K_M |
"Great quality, fast" | ★★★ | ★★★★ |
Q4_0 |
"Good quality, very fast" | ★★★ | ★★★★★ |
Q3_K_M |
"Decent quality, fastest" | ★★ | ★★★★★ |
Q2_K |
"Low quality, maximum speed" | ★ | ★★★★★ |
F16 |
"Unquantized, original" | ★★★★★ | ★ |
F32 |
"Full precision" | ★★★★★ | ★ |
Start withQ4_K_Mfor most models. It offers the best balance of quality, speed, and memory usage. Decrease quantization only if you need to fit a larger model into limited RAM.