Run Hermes 4 70B standard chat on a 64 GiB Intel desktop
Serve Hermes 4 70B with exact Unsloth Q4_K_M weights, the pinned Nous Research native template and llama.cpp 0.7.0 on CPU. One sequence, 4,096 total context tokens and a 512-token output cap. Standard template mode is a reduced smoke workload; hybrid reasoning can still occur. Memory fit, speed and completion remain unmeasured.
- Hardware
- Intel Core i5-12400 desktop, 8 inference threads, 64 GiB RAM
- Runtime
- llama.cpp v0.7.0 (620d2225cc436ab0b001e3200e590e3b286ef9ab) · CPU
- Model format
- GGUF · GGUF Q4_K_M mixed quantization · Q4_K_M mixed quantization published by Unsloth
- Workload
- 4,096 token context · 1 concurrent
Based on source documentation; this setup has not been executed by OpenTools. Memory: unknown. No compatible measurement available.
Read the complete setup guide
Before you start
- Use an owned Intel Core i5-12400 Ubuntu 24.04 x86_64 desktop with 64 GiB RAM, 80 GiB free disk and eight allocated inference threads. Build natively on this CPU.
- These are planning allocations; full memory fit and performance are unknown.
- Use the exact dense Llama 3.1 based Hermes 4 70B checkpoint and separate Unsloth derivative. No 3B-active or smaller-model substitution.
- Both native and Unsloth metadata declare llama3, while the native card identifies Llama 3.1 as the base. The native root LICENSE is absent (404). Retain this discrepancy: this guide does not replace the publisher label or claim the two licenses equivalent. Read and comply with the Meta Llama 3 and Llama 3.1 Community License Agreements and both incorporated acceptable-use policies, including applicable attribution/notice, Built with branding, redistribution/model-naming, prohibited-use, other-model training restrictions and 700-million monthly-active-user commercial-license conditions. Both provide conditional use grants; this is restricted open weights, not Apache or unrestricted open source. Stop if your use cannot satisfy the applicable terms. No legal-clearance claim is made.
Exact model and requirements
- Artifact:
- Unsloth (GGUF derivative); Nous Research (native model) / Hermes 4 70B Q4_K_M, Unsloth derivative · checkpoint unsloth/Hermes-4-70B-GGUF
- Publisher revision:
- b5483741203956fbc0557a26429ee73bf4cb7944
- Artifact digest:
- sha256:1bdf4b8469bfa36b274412818e47bf1a39d667d1d9d9558bcdb3ecae2bc9fedc
- Download size:
- 39.6 GiB
- Memory requirement (unknown):
- Unknown — No exact CPU peak for this dense 70B Q4_K_M artifact and 4K workload.
- System RAM / disk:
- Unknown / Unknown
- Placement:
- single device. One CPU host; no tensor/pipeline sharding. CPU-only execution; --device none and zero GPU layers. No disk or accelerator offload.
- KV cache:
- F16 K and V attention cache
- Workload:
- 4,096 token context; Unknown; Unknown; concurrency 1; batch 1; cache unknown; repetitions Unknown.
- Tokenizer:
- Embedded Llama-family GGUF tokenizer with explicit pinned Nous Research native template · GGUF b5483741203956fbc0557a26429ee73bf4cb7944; native template d5dec2bd6b3930a09ddefd0b7fc6523fe0720d09
- Sampling / reasoning:
- Publisher card preset: temperature 0.6, top_p 0.95, top_k 20. Native generation_config instead lists top_p 0.9; this guide explicitly chooses the card preset. min_p 0, repeat_penalty 1 and frequency/presence penalties 0 are author controls. Native template thinking=false selects the standard system prompt, not a guaranteed no-reasoning model mode. Raw output preserves any <think> tags. 512 output tokens can truncate deliberation or final content; a complete correct answer is required.
- Runtime prerequisites:
- Ubuntu 24.04 x86_64; See prerequisites above.
Both native and Unsloth metadata declare llama3, while the native card identifies Llama 3.1 as the base. The native root LICENSE is absent (404). Retain this discrepancy: this guide does not replace the publisher label or claim the two licenses equivalent. Read and comply with the Meta Llama 3 and Llama 3.1 Community License Agreements and both incorporated acceptable-use policies, including applicable attribution/notice, Built with branding, redistribution/model-naming, prohibited-use, other-model training restrictions and 700-million monthly-active-user commercial-license conditions. Both provide conditional use grants; this is restricted open weights, not Apache or unrestricted open source. Stop if your use cannot satisfy the applicable terms. No legal-clearance claim is made.
- Nous Research native chat_template.jinja · 0 GiB · revision d5dec2bd6b3930a09ddefd0b7fc6523fe0720d09
- The 42,520,399,008-byte weights do not establish working memory. Cache, compute buffers, runtime and OS need additional resources.
- 64 GiB RAM, 80 GiB disk and eight CPU threads are planning allocations, not measured minima or confirmed fit/performance.
One-time setup and hardware
- hardware
- Unknown — Existing desktop purchase price and incremental hardware cost depend on the reader; unknown.
- Existing desktop purchase price and incremental hardware cost depend on the reader; unknown. Tax: unknown.
- setup
- Unknown — Initial provisioning/build time and labor cost are unknown.
- Initial provisioning/build time and labor cost are unknown. Tax: unknown.
Recurring costs
- electricity
- Unknown — Actual wall power, electricity rate and powered hours are unknown; no TDP-to-wall-power conversion.
- Actual wall power, electricity rate and powered hours are unknown; no TDP-to-wall-power conversion. Tax: unknown.
- storage
- Unknown — Incremental cost of local disk capacity is unknown. The 80 GiB free-disk walkthrough allocation is an author choice, not a measured requirement.
- Incremental cost of local disk capacity is unknown. The 80 GiB free-disk walkthrough allocation is an author choice, not a measured requirement. Tax: unknown.
- egress
- Unknown — Data transfer price, allowances and traffic volume are unknown.
- Data transfer price, allowances and traffic volume are unknown. Tax: unknown.
- administration
- Unknown — Maintenance labor rate and hours are unknown.
- Maintenance labor rate and hours are unknown. Tax: unknown.
Install the runtime
1. Build the pinned CPU server
Install build dependencies and compile the exact official source revision. These packages are system shared dependencies; no CUDA/GPU driver is required. GGML_NATIVE=ON selects -march=native for this GNU/Linux x86 build, compiling for the host CPU. Build and run on the same machine; no AVX-512 requirement is imposed on the i5-12400.
Commandsudo apt-get update sudo apt-get install -y build-essential cmake git curl ca-certificates openssl python3 mkdir -p "$HOME/hermes4-70b-hosting/models" cd "$HOME/hermes4-70b-hosting" git clone https://github.com/ggml-org/llama.cpp.git cd llama.cpp git checkout --detach 620d2225cc436ab0b001e3200e590e3b286ef9ab cmake -S . -B build -DCMAKE_BUILD_TYPE=Release -DGGML_METAL=OFF -DGGML_NATIVE=ON cmake --build build --config Release -j 4 ./build/bin/llama-server --versionExpected result: Build succeeds and server version identifies pinned source. Stop if checkout or build fails.
Download the model
1. Download and verify the exact derivative and native template
No authentication is required for these public artifacts. Stop on either digest mismatch. The Unsloth card advertises template fixes; this guide explicitly overrides its embedded template with the independently pinned native Nous Research file. Exact conversion provenance is not inferred.
Commandcd "$HOME/hermes4-70b-hosting" curl --fail --location --output models/Hermes-4-70B-Q4_K_M.gguf 'https://huggingface.co/unsloth/Hermes-4-70B-GGUF/resolve/b5483741203956fbc0557a26429ee73bf4cb7944/Hermes-4-70B-Q4_K_M.gguf' curl --fail --location --output models/hermes-chat.jinja 'https://huggingface.co/NousResearch/Hermes-4-70B/raw/d5dec2bd6b3930a09ddefd0b7fc6523fe0720d09/chat_template.jinja' sha256sum --check <<'SHA256' 1bdf4b8469bfa36b274412818e47bf1a39d667d1d9d9558bcdb3ecae2bc9fedc models/Hermes-4-70B-Q4_K_M.gguf 89116c1ac22ce005afdf1772cb40644c1529af6a91300cf655566d10274d4175 models/hermes-chat.jinja SHA256Expected result: Both files report OK. GGUF is 42,520,399,008 bytes; native template is 4,121 bytes. No projector is needed for this text configuration.
Configure
1. Create a private service credential
Generate this only on your own host when following the guide. It is a local service password, not an OpenAI/provider credential. Keep it private and never paste it into tickets. Create it only when absent; preserve an existing key so a repeated setup does not silently rotate access. It is not created during this documentation run.
Commandcd "$HOME/hermes4-70b-hosting" umask 077 if [ ! -e .api-key ]; then openssl rand -hex 32 > .api-key fi test -s .api-key || { echo 'Existing .api-key is empty; restore it before continuing.'; exit 1; } chmod 600 .api-keyExpected result: A non-empty private .api-key file exists; existing key preserved. No secret is printed.
Start the model
1. Start bounded standard-template chat
The native thinking=false branch uses the standard Hermes system prompt. Keep raw response content and do not promise absence of reasoning. Context is 4,096 total tokens shared by prompt and output, below the native 131,072 positional limit. Leave this process in the foreground.
Commandcd "$HOME/hermes4-70b-hosting" export HERMES4_SERVICE_KEY="$(cat .api-key)" ./llama.cpp/build/bin/llama-server -m models/Hermes-4-70B-Q4_K_M.gguf --alias hermes4-70b --host 127.0.0.1 --port 8080 --api-key "$HERMES4_SERVICE_KEY" --device none -ngl 0 -t 8 -c 4096 -np 1 --cache-type-k f16 --cache-type-v f16 --jinja --chat-template-file models/hermes-chat.jinja --chat-template-kwargs '{"thinking":false,"keep_cots":false}' --skip-chat-parsing --reasoning-format none --temp 0.6 --top-k 20 --top-p 0.95 --min-p 0 --repeat-penalty 1 --frequency-penalty 0 --presence-penalty 0Expected result: Model initializes and loopback listener starts. Stop on tokenizer/architecture/template errors. The service key in process arguments can be visible to trusted local or privileged users.
Connect to your endpoint
http://127.0.0.1:8080/v1
Same desktop loopback only; no LAN/public listener. Use on a trusted single-user host.
Access: loopback. Reader-generated private service key in Authorization: Bearer header for chat; /health is public on loopback. Run the client on this same desktop. Keep the key private; this is not an OpenAI API key.
Verify the setup
1. Check readiness, authenticated chat and missing-key rejection
Run in a second terminal on the same desktop or VM SSH shell. Inspect raw choices[0].message.content: a complete final answer must give 36 counters. Exact generated prose and reasoning are unknown; a length finish or unclosed reasoning trace fails this reduced smoke check.
Commandcd "$HOME/hermes4-70b-hosting" export HERMES4_SERVICE_KEY="$(cat .api-key)" curl --fail http://127.0.0.1:8080/health curl --fail http://127.0.0.1:8080/v1/chat/completions -H "Authorization: Bearer $HERMES4_SERVICE_KEY" -H 'Content-Type: application/json' --data-binary '{"model":"hermes4-70b","messages":[{"role":"user","content":"A box has 12 red counters, 18 blue counters and 6 green counters. Give the total number of counters in one short sentence."}],"max_tokens":512,"temperature":0.6,"top_k":20,"top_p":0.95,"min_p":0,"repeat_penalty":1,"frequency_penalty":0,"presence_penalty":0,"stop":["<|eot_id|>","<|end_of_text|>"]}' --output chat-response.json cat chat-response.json curl -s -o /dev/null -w '%{http_code}\n' http://127.0.0.1:8080/v1/chat/completions -H 'Content-Type: application/json' --data-binary '{"model":"hermes4-70b","messages":[{"role":"user","content":"Hello"}]}'Expected result: Ready health HTTP 200, authenticated nonempty complete answer 36 counters with finish_reason not length, and missing-key HTTP 401. These are reader pass criteria, not observed results.
Performance evidence
No compatible measurement available. Documented support and estimated memory do not establish response speed.
Limits and troubleshooting
- Documented configuration only; no weights, installation, build, inference, fit, speed or quality measurement was performed.
- Dense Llama architecture: 80 layers, hidden size 8,192, 64 attention heads, eight KV heads, head dimension 128 and Llama 3.1 rope scaling. Full 70B weights load; no active-parameter memory discount.
- The exact native template is passed separately. Unsloth advertises template fixes, but their embedded template is not assumed identical to the native file. Both sources are pinned independently.
- thinking=false selects a standard system prompt. Hermes remains hybrid reasoning-capable; any reasoning shares the 512-token cap with the final answer. Raw output preserves <think> tags; no separate reasoning_content is promised.
- Native template system messages can override its standard/thinking prompt. This single-turn request supplies no system message or tools. Native thinking=true, preserved-chain history, tool calling and structured JSON are useful separate workflows that remain unqualified here.
- The model card recommends temperature 0.6, top_p 0.95 and top_k 20. The generation config instead says top_p 0.9; this guide explicitly uses the card preset.
- Both native and Unsloth metadata declare llama3, while the native card identifies Llama 3.1 as the base. The native root LICENSE is absent (404). Retain this discrepancy: this guide does not replace the publisher label or claim the two licenses equivalent. Read and comply with the Meta Llama 3 and Llama 3.1 Community License Agreements and both incorporated acceptable-use policies, including applicable attribution/notice, Built with branding, redistribution/model-naming, prohibited-use, other-model training restrictions and 700-million monthly-active-user commercial-license conditions. Both provide conditional use grants; this is restricted open weights, not Apache or unrestricted open source. Stop if your use cannot satisfy the applicable terms. No legal-clearance claim is made.
- The Unsloth derivative names Hermes 4 but does not establish an exact native conversion revision. The binary digest and independent native template pin are authoritative for this recipe.
- System packages resolve at installation; retain versions/build logs. GGML_NATIVE requires building on the CPU that will run the binary.
- 64 GiB RAM, 80 GiB disk and eight threads are planning allocations, not measured minima or fit guarantees. Loopback/bearer/SSH access assumes a trusted host; public multiuser serving needs separate operations.
- These two guides do not establish exhaustive model coverage. Full context, reasoning, tools, other runtimes and accelerators remain unqualified.
- Checksum or template error
- Stop and verify both independent revisions and hashes. Use the pinned native template with --jinja; do not substitute generic chat formatting.
- Truncated answer or unclosed reasoning
- Treat the smoke check as failed. Standard-template mode is not a no-reasoning guarantee. A larger output/context allocation is a distinct workload and must be recorded.
- Memory pressure
- Stop; inspect actual resources. File size is not working RAM. Increase resources or explicitly qualify a different workload/quantization; do not infer fit.
- HTTP 401 or connection refused
- Check foreground initialization and matching private key. For cloud, check the SSH tunnel to the intended VM; keep public 8080 ingress closed.
Stop the model
1. Stop the service
Press Ctrl+C in server terminal. Unset key in each shell. Confirm this desktop localhost:8080 no longer serves the model.
Commandunset HERMES4_SERVICE_KEYExpected result: Server stops and localhost:8080 stops serving.
Uninstall
1. Remove dedicated model, build and credential files
Back up wanted logs/files first. Remove only this walkthrough directory after confirming its path. Shared apt packages can remain; do not remove other workloads.
Commandrm -r -- "$HOME/hermes4-70b-hosting"Expected result: Dedicated files and local service credential removed; shared system dependencies remain.
Sources and verification
Sources checked Oct 16, 2026. Verification source
- https://www.intel.com/content/www/us/en/products/sku/134586/intel-core-i512400-processor-18m-cache-up-to-4-40-ghz/specifications.htmlmanufacturer · retrieved Oct 16, 2026
- https://raw.githubusercontent.com/ggml-org/llama.cpp/620d2225cc436ab0b001e3200e590e3b286ef9ab/docs/build.mdruntime maintainer · retrieved Oct 16, 2026 · revision 620d2225cc436ab0b001e3200e590e3b286ef9ab
- https://raw.githubusercontent.com/ggml-org/llama.cpp/620d2225cc436ab0b001e3200e590e3b286ef9ab/ggml/src/ggml-cpu/CMakeLists.txtruntime maintainer · retrieved Oct 16, 2026 · revision 620d2225cc436ab0b001e3200e590e3b286ef9ab
- https://docs.liquid.ai/lfm/inference/llama-cppruntime maintainer · retrieved Oct 16, 2026
- https://raw.githubusercontent.com/ggml-org/llama.cpp/620d2225cc436ab0b001e3200e590e3b286ef9ab/tools/server/README.mdruntime maintainer · retrieved Oct 16, 2026 · revision 620d2225cc436ab0b001e3200e590e3b286ef9ab
- https://raw.githubusercontent.com/ggml-org/llama.cpp/620d2225cc436ab0b001e3200e590e3b286ef9ab/common/arg.cppruntime maintainer · retrieved Oct 16, 2026 · revision 620d2225cc436ab0b001e3200e590e3b286ef9ab
- https://api.github.com/repos/ggml-org/llama.cpp/releases/latestruntime maintainer · retrieved Oct 16, 2026
- https://huggingface.co/api/models/NousResearch/Hermes-4-70Bpublisher · retrieved Oct 16, 2026
- https://huggingface.co/api/models/unsloth/Hermes-4-70B-GGUFpublisher · retrieved Oct 16, 2026
- https://huggingface.co/NousResearch/Hermes-4-70B/raw/d5dec2bd6b3930a09ddefd0b7fc6523fe0720d09/README.mdpublisher · retrieved Oct 16, 2026 · revision d5dec2bd6b3930a09ddefd0b7fc6523fe0720d09
- https://huggingface.co/NousResearch/Hermes-4-70B/raw/d5dec2bd6b3930a09ddefd0b7fc6523fe0720d09/config.jsonpublisher · retrieved Oct 16, 2026 · revision d5dec2bd6b3930a09ddefd0b7fc6523fe0720d09
- https://huggingface.co/NousResearch/Hermes-4-70B/raw/d5dec2bd6b3930a09ddefd0b7fc6523fe0720d09/tokenizer_config.jsonpublisher · retrieved Oct 16, 2026 · revision d5dec2bd6b3930a09ddefd0b7fc6523fe0720d09
- https://huggingface.co/NousResearch/Hermes-4-70B/raw/d5dec2bd6b3930a09ddefd0b7fc6523fe0720d09/chat_template.jinjapublisher · retrieved Oct 16, 2026 · revision d5dec2bd6b3930a09ddefd0b7fc6523fe0720d09
- https://huggingface.co/NousResearch/Hermes-4-70B/raw/d5dec2bd6b3930a09ddefd0b7fc6523fe0720d09/generation_config.jsonpublisher · retrieved Oct 16, 2026 · revision d5dec2bd6b3930a09ddefd0b7fc6523fe0720d09
- https://huggingface.co/api/models/NousResearch/Hermes-4-70B/tree/d5dec2bd6b3930a09ddefd0b7fc6523fe0720d09?recursive=false&expand=falsepublisher · retrieved Oct 16, 2026 · revision d5dec2bd6b3930a09ddefd0b7fc6523fe0720d09
- https://huggingface.co/unsloth/Hermes-4-70B-GGUF/raw/b5483741203956fbc0557a26429ee73bf4cb7944/README.mdpublisher · retrieved Oct 16, 2026 · revision b5483741203956fbc0557a26429ee73bf4cb7944
- https://huggingface.co/api/models/unsloth/Hermes-4-70B-GGUF/tree/b5483741203956fbc0557a26429ee73bf4cb7944?recursive=false&expand=falsepublisher · retrieved Oct 16, 2026 · revision b5483741203956fbc0557a26429ee73bf4cb7944
- https://api.github.com/repos/meta-llama/llama-models/commits/mainpublisher · retrieved Oct 16, 2026 · revision 0e0b8c519242d5833d8c11bffc1232b77ad7f301
- https://raw.githubusercontent.com/meta-llama/llama-models/0e0b8c519242d5833d8c11bffc1232b77ad7f301/models/llama3_1/LICENSEpublisher · retrieved Oct 16, 2026 · revision 0e0b8c519242d5833d8c11bffc1232b77ad7f301
- https://raw.githubusercontent.com/meta-llama/llama-models/0e0b8c519242d5833d8c11bffc1232b77ad7f301/models/llama3_1/USE_POLICY.mdpublisher · retrieved Oct 16, 2026 · revision 0e0b8c519242d5833d8c11bffc1232b77ad7f301
- https://raw.githubusercontent.com/ggml-org/llama.cpp/620d2225cc436ab0b001e3200e590e3b286ef9ab/src/models/llama.cppruntime maintainer · retrieved Oct 16, 2026 · revision 620d2225cc436ab0b001e3200e590e3b286ef9ab
- https://raw.githubusercontent.com/ggml-org/llama.cpp/620d2225cc436ab0b001e3200e590e3b286ef9ab/convert_hf_to_gguf.pyruntime maintainer · retrieved Oct 16, 2026 · revision 620d2225cc436ab0b001e3200e590e3b286ef9ab
- https://raw.githubusercontent.com/meta-llama/llama-models/0e0b8c519242d5833d8c11bffc1232b77ad7f301/models/llama3/LICENSEpublisher · retrieved Oct 16, 2026 · revision 0e0b8c519242d5833d8c11bffc1232b77ad7f301
- https://raw.githubusercontent.com/meta-llama/llama-models/0e0b8c519242d5833d8c11bffc1232b77ad7f301/models/llama3/USE_POLICY.mdpublisher · retrieved Oct 16, 2026 · revision 0e0b8c519242d5833d8c11bffc1232b77ad7f301
- https://raw.githubusercontent.com/ggml-org/llama.cpp/620d2225cc436ab0b001e3200e590e3b286ef9ab/conversion/llama.pyruntime maintainer · retrieved Oct 16, 2026 · revision 620d2225cc436ab0b001e3200e590e3b286ef9ab