Local benchmark harness and captured results for evaluating Ollama models across multiple Windows hosts.
results/ contains the current benchmark outputs plus archived system snapshots.benchmark-models.json tracks the benchmark-suite models, locally installed models, and the combined effective benchmark list for the current machine.scripts/benchmark_throughput_resource.ps1 measures generation speed and samples CPU, RAM, GPU utilization, and GPU dedicated memory.scripts/benchmark_quality.py runs a compact coding, tool-use, and agent-orchestration quality suite.scripts/benchmark_backend.ps1 compares auto, vulkan, and rocm backend selection by launching isolated Ollama servers on alternate ports, and now preflights desktop-managed models so those temporary servers can resolve them reliably.scripts/benchmark_sweep.py runs decode-side option sweeps for a single model.scripts/benchmark_throughput_openai.py measures throughput and host-side resource usage against an OpenAI-compatible backend such as llama-server.scripts/benchmark_quality_openai.py runs the compact coding, tool-use, and agent-orchestration quality suite against an OpenAI-compatible backend such as llama-server.*-current.json refreshed as they progress.scripts/collect_host_info.py captures machine metadata for archived benchmark snapshots.scripts/archive_system_benchmarks.py snapshots the current benchmark artifacts under results/systems/<host>-<label>/.scripts/build_cross_system_summary.py rebuilds the comparison table across all archived systems.results/ even if you do not pass an output path.plans/ contains the next-step benchmark expansion work.21 models score 5/5 quality. Top performers on Framework (Core Ultra + RTX 3060 12GB):
| Model | tok/s | Quality | Role |
|---|---|---|---|
glm-4.7-flash | 43.16 | 5/5 | Best balanced — fastest perfect-quality model |
qwen3.5:35b-a3b | 39.90 | 5/5 | MoE, excellent speed for size |
nemotron-3-nano:30b-a3b-q8_0 | 36.89 | 5/5 | MoE, strong throughput |
qwen3-coder-next | 32.55 | 5/5 | Best coding model |
nemotron-cascade-2 | 27.83 | 5/5 | Cascade architecture |
granite4:7b-a1b-h | 26.91 | 5/5 | Tiny MoE, great value |
49 throughput / 55 quality results total across the Framework benchmark capture.
See results/cross-system-summary.md for the rolling matrix across archived hosts. See results/current-best-summary.md for the current best quality/speed rollup.
Prerequisites:
PATHhttp://127.0.0.1:11434ollama pull <model>llama-server runs, a compatible OpenAI-style endpoint such as http://127.0.0.1:8081/v1/chat/completionsExample:
./scripts/benchmark_throughput_resource.ps1 `
-Models @('qwen3-coder-next:latest','lfm2:24b') `
-NumPredict 192
Output fields:
toks_per_s: decode tokens per second using eval_count / eval_durationcpu_avg_pct, cpu_peak_pct: sampled Ollama process CPU usageram_peak_gb: peak process working setgpu_util_avg, gpu_util_peak: sampled GPU engine utilization countersgpu_mem_peak_gb: peak dedicated GPU memory seen for Ollama processesollama_ps: the concurrent ollama ps line for the modelExample:
python .\scripts\benchmark_quality.py `
--models qwen3-coder-next:latest lfm2:24b granite4:32b-a9b-h
This suite currently checks:
Use this path for models that run in llama-server but not in Ollama yet. The OpenAI-compatible scripts target /v1/chat/completions and write the same style of JSON artifacts under results/.
Throughput example:
python .\scripts\benchmark_throughput_openai.py `
--model qwen3.5:35b-a3b-q2_k_l `
--base-url http://127.0.0.1:8081
Quality example:
python .\scripts\benchmark_quality_openai.py `
--models qwen3.5:35b-a3b-q2_k_l `
--base-url http://127.0.0.1:8081
One-command launcher example:
powershell -ExecutionPolicy Bypass -File .\scripts\run_llama_server_benchmarks.ps1 `
-Models qwen3.5:35b-a3b-q2_k_l granite4:7b-a1b-h `
-LlamaServerPath C:\path\to\llama-server.exe
Current backend note:
qwen3.5:35b-a3b-q2_k_l is currently a llama-server model on this machine. It passes the compact tool/coding/agent checks there, but Ollama 0.17.8-rc4 still fails to load qwen35moe.Recent llama-server comparison on this T5500 host:
| Model | Backend | tok/s | RAM peak (GB) | GPU mem peak (GB) | Quick quality | Notes |
|---|---|---|---|---|---|---|
omnicoder:9b-q4_k_m | llama-server | 1.48 | 6.17 | 4.8 | 5/5 | Strong coding/tool result from Tesslate's OmniCoder GGUF despite Ollama runner limits on this host |
qwen3.5:35b-a3b-q2_k_l | llama-server | 3.28 | 12.8 | 3.71 | 5/5 | Strongest large-model result in this path so far |
lfm2:24b | llama-server | 4.36 | 14.1 | 4.11 | 1/5 | Faster than Qwen here, but weak on tool and agent checks |
granite4:7b-a1b-h | llama-server | 6.48 | 4.54 | 4.13 | 5/5 | Best speed/quality balance in the direct llama.cpp path |
Example:
./scripts/benchmark_backend.ps1 `
-Model qwen3-coder-next:latest
This launches temporary Ollama servers on alternate ports and compares:
autovulkanrocmExample:
python .\scripts\benchmark_sweep.py `
--model qwen3-coder-next:latest
Default sweep variants:
num_thread=8num_thread=16num_batch=1024num_gpu=99Each script still accepts an explicit output path if you want a deterministic filename. The generated JSON now includes run metadata such as timestamps, model list, benchmark type, and the resolved artifact path.
When throughput or quality runs cover multiple models, they also write per-model checkpoint files such as results/throughput-resource-<model>.json and results/quality-<model>.json, then roll those into the combined current artifact.
After refreshing the *-current.json artifacts for a machine, archive and summarize it with:
python .\scripts\archive_system_benchmarks.py --label 20260311
python .\scripts\build_cross_system_summary.py
This creates a per-system snapshot under results/systems/ with host-info.json and manifest.json, then rebuilds the shared comparison table.
toks_per_s for steady-state decode speed.5: two coding tasks, two simple tool tasks, and one agentic planning/delegation task.No previously saved benchmark artifacts from the parent C:\Development workspace were found for this session, so the files in results/ were reconstructed directly from the measured values produced during the session.
This repo includes ready-to-use Docker Agent configs that use the best benchmark-proven models.
The compose file shares your host's Ollama model cache so there's no re-download:
cd docker-agent
docker compose up -d
This maps ~/.ollama (or %USERPROFILE%\.ollama on Windows) into the container and passes through all NVIDIA GPUs.
docker agent run docker-agent/agent-general.yaml # Fast general assistant (glm-4.7-flash)
docker agent run docker-agent/agent-coding.yaml # Coding agent + reviewer
docker agent run docker-agent/agent-multi.yaml # 4-agent specialist team
docker agent run docker-agent/agent-small.yaml # Low-VRAM environments
All model selections are driven by benchmark results — only 5/5 quality models are used.
| Config | Models | Use Case |
|---|---|---|
docker-agent/agent-general.yaml | glm-4.7-flash (43 tok/s) | Everyday tasks |
docker-agent/agent-coding.yaml | qwen3-coder-next + qwen3.5:35b-a3b | Code writing + review |
docker-agent/agent-multi.yaml | 4-model team | Complex multi-step work |
docker-agent/agent-small.yaml | granite4:7b-a1b-h (27 tok/s) | Constrained environments |
Ollama exposes an OpenAI-compatible API. Docker Agent connects via custom provider:
providers:
ollama:
api_type: openai_chatcompletions
base_url: http://localhost:11434/v1
See docker-agent/ for full configs and docker-compose.yaml.
To set up a new machine from scratch:
ollama pull <model> for each candidatedocker compose up -ddocker agent run <config>.yamlThe ollama-docker-agent-deploy skill automates guidance for this pipeline.
This repo includes project-local skills for Claude Code / Codex:
| Skill | Purpose |
|---|---|
skills/ollama-benchmark-matrix | Run benchmarks, archive snapshots, maintain cross-system matrix |
skills/ollama-docker-agent-deploy | Select best models, deploy Ollama container, create and run Docker Agent configs |
To copy a skill to your user-level skills (available across all projects) or to another project, use the skills-guru skill:
/skills-guru install skills/ollama-docker-agent-deploy --scope user
Two living reference docs capture the trickier corners of running this harness:
think flag matrix, Layer 2 raw vs chat-mode, gemma4 RENDERER/PARSER, GLM/Carnice extraction quirks, qwen35moe arch loading, sharded GGUFs, and how to interpret surprising scores.Both are appended to as we prove new findings — keep them honest.
See PLANS.md and the individual files in plans/ for the next benchmark phases.
Local benchmark harness and captured results for evaluating Ollama models across multiple Windows hosts.
results/ contains the current benchmark outputs plus archived system snapshots.benchmark-models.json tracks the benchmark-suite models, locally installed models, and the combined effective benchmark list for the current machine.scripts/benchmark_throughput_resource.ps1 measures generation speed and samples CPU, RAM, GPU utilization, and GPU dedicated memory.scripts/benchmark_quality.py runs a compact coding, tool-use, and agent-orchestration quality suite.scripts/benchmark_backend.ps1 compares auto, vulkan, and rocm backend selection by launching isolated Ollama servers on alternate ports, and now preflights desktop-managed models so those temporary servers can resolve them reliably.scripts/benchmark_sweep.py runs decode-side option sweeps for a single model.scripts/benchmark_throughput_openai.py measures throughput and host-side resource usage against an OpenAI-compatible backend such as llama-server.scripts/benchmark_quality_openai.py runs the compact coding, tool-use, and agent-orchestration quality suite against an OpenAI-compatible backend such as llama-server.*-current.json refreshed as they progress.scripts/collect_host_info.py captures machine metadata for archived benchmark snapshots.scripts/archive_system_benchmarks.py snapshots the current benchmark artifacts under results/systems/<host>-<label>/.scripts/build_cross_system_summary.py rebuilds the comparison table across all archived systems.results/ even if you do not pass an output path.plans/ contains the next-step benchmark expansion work.21 models score 5/5 quality. Top performers on Framework (Core Ultra + RTX 3060 12GB):
| Model | tok/s | Quality | Role |
|---|---|---|---|
glm-4.7-flash | 43.16 | 5/5 | Best balanced — fastest perfect-quality model |
qwen3.5:35b-a3b | 39.90 | 5/5 | MoE, excellent speed for size |
nemotron-3-nano:30b-a3b-q8_0 | 36.89 | 5/5 | MoE, strong throughput |
qwen3-coder-next | 32.55 | 5/5 | Best coding model |
nemotron-cascade-2 | 27.83 | 5/5 | Cascade architecture |
granite4:7b-a1b-h | 26.91 | 5/5 | Tiny MoE, great value |
49 throughput / 55 quality results total across the Framework benchmark capture.
See results/cross-system-summary.md for the rolling matrix across archived hosts. See results/current-best-summary.md for the current best quality/speed rollup.
Prerequisites:
PATHhttp://127.0.0.1:11434ollama pull <model>llama-server runs, a compatible OpenAI-style endpoint such as http://127.0.0.1:8081/v1/chat/completionsExample:
./scripts/benchmark_throughput_resource.ps1 `
-Models @('qwen3-coder-next:latest','lfm2:24b') `
-NumPredict 192
Output fields:
toks_per_s: decode tokens per second using eval_count / eval_durationcpu_avg_pct, cpu_peak_pct: sampled Ollama process CPU usageram_peak_gb: peak process working setgpu_util_avg, gpu_util_peak: sampled GPU engine utilization countersgpu_mem_peak_gb: peak dedicated GPU memory seen for Ollama processesollama_ps: the concurrent ollama ps line for the modelExample:
python .\scripts\benchmark_quality.py `
--models qwen3-coder-next:latest lfm2:24b granite4:32b-a9b-h
This suite currently checks:
Use this path for models that run in llama-server but not in Ollama yet. The OpenAI-compatible scripts target /v1/chat/completions and write the same style of JSON artifacts under results/.
Throughput example:
python .\scripts\benchmark_throughput_openai.py `
--model qwen3.5:35b-a3b-q2_k_l `
--base-url http://127.0.0.1:8081
Quality example:
python .\scripts\benchmark_quality_openai.py `
--models qwen3.5:35b-a3b-q2_k_l `
--base-url http://127.0.0.1:8081
One-command launcher example:
powershell -ExecutionPolicy Bypass -File .\scripts\run_llama_server_benchmarks.ps1 `
-Models qwen3.5:35b-a3b-q2_k_l granite4:7b-a1b-h `
-LlamaServerPath C:\path\to\llama-server.exe
Current backend note:
qwen3.5:35b-a3b-q2_k_l is currently a llama-server model on this machine. It passes the compact tool/coding/agent checks there, but Ollama 0.17.8-rc4 still fails to load qwen35moe.Recent llama-server comparison on this T5500 host:
| Model | Backend | tok/s | RAM peak (GB) | GPU mem peak (GB) | Quick quality | Notes |
|---|---|---|---|---|---|---|
omnicoder:9b-q4_k_m | llama-server | 1.48 | 6.17 | 4.8 | 5/5 | Strong coding/tool result from Tesslate's OmniCoder GGUF despite Ollama runner limits on this host |
qwen3.5:35b-a3b-q2_k_l | llama-server | 3.28 | 12.8 | 3.71 | 5/5 | Strongest large-model result in this path so far |
lfm2:24b | llama-server | 4.36 | 14.1 | 4.11 | 1/5 | Faster than Qwen here, but weak on tool and agent checks |
granite4:7b-a1b-h | llama-server | 6.48 | 4.54 | 4.13 | 5/5 | Best speed/quality balance in the direct llama.cpp path |
Example:
./scripts/benchmark_backend.ps1 `
-Model qwen3-coder-next:latest
This launches temporary Ollama servers on alternate ports and compares:
autovulkanrocmExample:
python .\scripts\benchmark_sweep.py `
--model qwen3-coder-next:latest
Default sweep variants:
num_thread=8num_thread=16num_batch=1024num_gpu=99Each script still accepts an explicit output path if you want a deterministic filename. The generated JSON now includes run metadata such as timestamps, model list, benchmark type, and the resolved artifact path.
When throughput or quality runs cover multiple models, they also write per-model checkpoint files such as results/throughput-resource-<model>.json and results/quality-<model>.json, then roll those into the combined current artifact.
After refreshing the *-current.json artifacts for a machine, archive and summarize it with:
python .\scripts\archive_system_benchmarks.py --label 20260311
python .\scripts\build_cross_system_summary.py
This creates a per-system snapshot under results/systems/ with host-info.json and manifest.json, then rebuilds the shared comparison table.
toks_per_s for steady-state decode speed.5: two coding tasks, two simple tool tasks, and one agentic planning/delegation task.No previously saved benchmark artifacts from the parent C:\Development workspace were found for this session, so the files in results/ were reconstructed directly from the measured values produced during the session.
This repo includes ready-to-use Docker Agent configs that use the best benchmark-proven models.
The compose file shares your host's Ollama model cache so there's no re-download:
cd docker-agent
docker compose up -d
This maps ~/.ollama (or %USERPROFILE%\.ollama on Windows) into the container and passes through all NVIDIA GPUs.
docker agent run docker-agent/agent-general.yaml # Fast general assistant (glm-4.7-flash)
docker agent run docker-agent/agent-coding.yaml # Coding agent + reviewer
docker agent run docker-agent/agent-multi.yaml # 4-agent specialist team
docker agent run docker-agent/agent-small.yaml # Low-VRAM environments
All model selections are driven by benchmark results — only 5/5 quality models are used.
| Config | Models | Use Case |
|---|---|---|
docker-agent/agent-general.yaml | glm-4.7-flash (43 tok/s) | Everyday tasks |
docker-agent/agent-coding.yaml | qwen3-coder-next + qwen3.5:35b-a3b | Code writing + review |
docker-agent/agent-multi.yaml | 4-model team | Complex multi-step work |
docker-agent/agent-small.yaml | granite4:7b-a1b-h (27 tok/s) | Constrained environments |
Ollama exposes an OpenAI-compatible API. Docker Agent connects via custom provider:
providers:
ollama:
api_type: openai_chatcompletions
base_url: http://localhost:11434/v1
See docker-agent/ for full configs and docker-compose.yaml.
To set up a new machine from scratch:
ollama pull <model> for each candidatedocker compose up -ddocker agent run <config>.yamlThe ollama-docker-agent-deploy skill automates guidance for this pipeline.
This repo includes project-local skills for Claude Code / Codex:
| Skill | Purpose |
|---|---|
skills/ollama-benchmark-matrix | Run benchmarks, archive snapshots, maintain cross-system matrix |
skills/ollama-docker-agent-deploy | Select best models, deploy Ollama container, create and run Docker Agent configs |
To copy a skill to your user-level skills (available across all projects) or to another project, use the skills-guru skill:
/skills-guru install skills/ollama-docker-agent-deploy --scope user
Two living reference docs capture the trickier corners of running this harness:
think flag matrix, Layer 2 raw vs chat-mode, gemma4 RENDERER/PARSER, GLM/Carnice extraction quirks, qwen35moe arch loading, sharded GGUFs, and how to interpret surprising scores.Both are appended to as we prove new findings — keep them honest.
See PLANS.md and the individual files in plans/ for the next benchmark phases.