Agent Hardware Sizer
Pick a local LLM and speed target. Get the exact mini PC, GPU, and RAM combo tested by Mission Freedom.
Recommended Build
Frequently Asked
How much VRAM do I need for a 7B LLM?
A 7B model at Q4_K_M needs about 4.5–6 GB of VRAM. Most modern AMD Ryzen mini PCs with RDNA 3 iGPU can run it.
Can I run local LLMs without a GPU?
Yes on CPU-only inference, but it is much slower. Mini PCs like the Beelink SER7 run 7B models at ~42 tok/s using integrated graphics.
Is 32GB RAM enough for local AI agents?
32GB is the sweet spot for 7B models. For 13B models or running several models at once, upgrade to 64GB.
🤖 Use this tool in your agent
✓ Agent-ready codeCopy the snippet below into your agent, newsletter, or script. The tool page at hermesdispatch.dev/tools/agent-hardware-sizer/ is the canonical contract: inputs, outputs, and formulas.
# Hermes Dispatch Tool — Agent Hardware Sizer
# Source: https://hermesdispatch.dev/tools/agent-hardware-sizer/
# Description: Recommend mini PC, GPU, and RAM config for a local LLM agent.
# License: MIT (generated by hermesdispatch.dev)
#
# INSTALL:
# 1. Save this file as ~/.hermes/hermes-agent/tools/agent_hardware_sizer.py
# 2. Restart Hermes or run /reset in a session
# 3. The tool auto-registers if Hermes uses auto-discovery of tools/*.py
#
# MANUAL REGISTRY (if auto-discovery is off):
# from tools.agent_hardware_sizer import register
# register()
import json
DATA = {}
def _ok(result):
return json.dumps({"success": True, "data": result}, indent=2)
def _err(message):
return json.dumps({"success": False, "error": message}, indent=2)
TOOL_NAME = "agent_hardware_sizer"
TOOLSET = "hardware"
SCHEMA = {
"type": "function",
"function": {
"name": "agent_hardware_sizer",
"description": "Recommend mini PC, GPU, and RAM config for a local LLM agent.",
"parameters": {
"type": "object",
"properties": {
"parameters_b": {
"type": "number",
"description": "Model parameter count in billions."
},
"quantization_bits": {
"type": "number",
"description": "Quantization bits per parameter (e.g. 4, 8, 16)."
},
"want_speed": {
"type": "string",
"description": "Speed priority: economy, comfortable, fast."
}
},
"required": []
}
}
}
def _run(args):
params_b = float(args.get("parameters_b", 8))
quantization_bits = float(args.get("quantization_bits", 4))
want_speed = args.get("want_speed", "comfortable").lower()
base_vram = (params_b * quantization_bits / 8) * 1.1
recs = []
if base_vram <= 8:
recs.append({"type": "mini-pc", "name": "Beelink SER7 Pro (Ryzen 7 7840HS, 32GB)", "slug": "beelink-ser7"})
if base_vram <= 12:
recs.append({"type": "mini-pc", "name": "Geekom A8 (Ryzen 9 8945HS, 64GB)", "slug": "geekom-a8"})
if base_vram > 12:
recs.append({"type": "gpu", "name": "NVIDIA RTX 4090 24GB", "slug": "rtx-4090"})
if base_vram > 24:
recs.append({"type": "note", "name": "Consider multi-GPU or cloud inference for this model.", "slug": ""})
return _ok({
"estimated_vram_gb": round(base_vram, 1),
"speed_target": want_speed,
"recommendations": recs,
"ram_recommendation": "32GB" if base_vram <= 12 else "64GB+",
"note": "These are tested recommendations from The Hermes Dispatch Rig directory."
})
def HANDLER(args):
try:
return _run(args)
except Exception as e:
return _err(str(e))
def register():
"""Manual registry hook. Import and call this to register with Hermes."""
try:
from tools.registry import registry
registry.register(
name=TOOL_NAME,
toolset=TOOLSET,
schema=SCHEMA,
handler=HANDLER,
)
except ImportError:
print("Hermes registry not found; skipping manual registration.")
if __name__ == "__main__":
# CLI smoke test
print(HANDLER({}))
Want early access to the next locked tool? Subscribe to The Hermes Dispatch.