Mini PC Recommender for Local AI

Pick the right compact AI workstation for your model size, budget, and noise tolerance.

Choose your preferences to see a ranked recommendation.

Get a quote

Need help with your mini PC setup? Send a request and a partner will reply within 24 hours.

๐Ÿค– Use this tool in your agent

โœ“ Agent-ready code

Copy the snippet below into your agent, newsletter, or script. The tool page at hermesdispatch.dev/tools/mini-pc-recommender/ is the canonical contract: inputs, outputs, and formulas.

python
# Hermes Dispatch Tool โ€” Mini PC Recommender for Local AI
# Source: https://hermesdispatch.dev/tools/mini-pc-recommender/
# Description: Recommend mini PCs for local AI inference within budget and VRAM constraints.
# License: MIT (generated by hermesdispatch.dev)
#
# INSTALL:
#   1. Save this file as ~/.hermes/hermes-agent/tools/mini_pc_recommender.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.mini_pc_recommender import register
#   register()

import json

DATA = [{"slug": "mac-mini-m4-pro-64gb", "name": "Mac mini M4 Pro 64GB", "brand": "Apple", "cpu": "Apple M4 Pro 12-core", "gpu": "14-core Neural Engine", "ram_gb": 64, "memory_type": "LPDDR5X unified", "bandwidth_gbps": 273, "tdp_w": 30, "price_usd": 2199, "max_model_q4": "32B", "ollama_tps": {"8B": 20, "14B": 11, "32B": 12, "70B": 0}, "noise_db": 20, "ports": "Thunderbolt 4 x3, HDMI, GbE", "upgrade": "Soldered RAM, no eGPU", "os": "macOS", "source": "https://www.apple.com/mac-mini/", "agent_score": 82, "notes": "Silent, efficient, best bandwidth-per-watt. 70B models do not fit.", "sponsored": false, "sponsor_badge": ""}, {"slug": "beelink-gtr9-pro-128gb", "name": "Beelink GTR9 Pro 128GB", "brand": "Beelink", "cpu": "AMD Ryzen AI Max+ 395 (16-core Zen 5)", "gpu": "RDNA 3.5 40 CU", "ram_gb": 128, "memory_type": "LPDDR5X", "bandwidth_gbps": 200, "tdp_w": 100, "price_usd": 2299, "max_model_q4": "70B", "ollama_tps": {"8B": 28, "14B": 18, "32B": 12, "70B": 7}, "noise_db": 35, "ports": "Dual 10GbE, USB4, HDMI", "upgrade": "Soldered RAM, no eGPU", "os": "Windows / Linux", "source": "https://www.bee-link.com/", "agent_score": 94, "notes": "Highest RAM ceiling + dual 10GbE. Best for 70B on a mini PC.", "sponsored": false, "sponsor_badge": ""}, {"slug": "gmktec-evo-x2-128gb", "name": "GMKtec EVO-X2 128GB", "brand": "GMKtec", "cpu": "AMD Ryzen AI Max+ 395 (16-core Zen 5)", "gpu": "RDNA 3.5 40 CU", "ram_gb": 128, "memory_type": "LPDDR5X", "bandwidth_gbps": 200, "tdp_w": 80, "price_usd": 1899, "max_model_q4": "70B", "ollama_tps": {"8B": 28, "14B": 18, "32B": 12, "70B": 7}, "noise_db": 35, "ports": "OCuLink, USB4, 2.5GbE, HDMI", "upgrade": "Soldered RAM, OCuLink eGPU", "os": "Windows / Linux", "source": "https://www.gmktec.com/", "agent_score": 93, "notes": "Cheapest 128GB AI mini PC; OCuLink allows future NVIDIA eGPU.", "sponsored": false, "sponsor_badge": ""}, {"slug": "geekom-a8-32gb", "name": "GEEKOM A8 32GB", "brand": "GEEKOM", "cpu": "AMD Ryzen 9 8945HS", "gpu": "Radeon 780M RDNA 3", "ram_gb": 32, "memory_type": "DDR5-5600", "bandwidth_gbps": 90, "tdp_w": 45, "price_usd": 599, "max_model_q4": "13B", "ollama_tps": {"8B": 15, "14B": 8, "32B": 0, "70B": 0}, "noise_db": 32, "ports": "USB4, HDMI, 2.5GbE", "upgrade": "SO-DIMM upgradeable, USB4 eGPU", "os": "Windows / Linux", "source": "https://www.geekompc.com/", "agent_score": 70, "notes": "Best budget entry for 7B-13B models. RAM limit prevents 30B+.", "sponsored": false, "sponsor_badge": ""}, {"slug": "minisforum-ai-x1-pro-64gb", "name": "Minisforum AI X1 Pro 64GB", "brand": "Minisforum", "cpu": "AMD Ryzen AI 9 HX 370", "gpu": "Radeon 890M RDNA 3.5", "ram_gb": 64, "memory_type": "LPDDR5X", "bandwidth_gbps": 160, "tdp_w": 65, "price_usd": 1299, "max_model_q4": "32B", "ollama_tps": {"8B": 22, "14B": 14, "32B": 10, "70B": 0}, "noise_db": 33, "ports": "OCuLink, USB4, HDMI", "upgrade": "Soldered RAM, OCuLink eGPU", "os": "Windows / Linux", "source": "https://www.minisforum.com/", "agent_score": 85, "notes": "Strong mid-range balance. 64GB handles 30B class models.", "sponsored": false, "sponsor_badge": ""}, {"slug": "intel-nuc-13-pro-64gb", "name": "Intel NUC 13 Pro 64GB", "brand": "Intel", "cpu": "Intel Core i7-1360P", "gpu": "Intel Iris Xe", "ram_gb": 64, "memory_type": "DDR4", "bandwidth_gbps": 60, "tdp_w": 40, "price_usd": 850, "max_model_q4": "8B", "ollama_tps": {"8B": 5, "14B": 0, "32B": 0, "70B": 0}, "noise_db": 28, "ports": "Thunderbolt 4, HDMI, 2.5GbE", "upgrade": "SO-DIMM upgradeable, Thunderbolt eGPU", "os": "Windows / Linux", "source": "https://www.intel.com/nuc/", "agent_score": 52, "notes": "Flexible but DDR4 bandwidth chokes LLM performance. Good for homelab, not AI.", "sponsored": false, "sponsor_badge": ""}]

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 = "mini_pc_recommender"
TOOLSET = "hardware"

SCHEMA = {
  "type": "function",
  "function": {
    "name": "mini_pc_recommender",
    "description": "Recommend mini PCs for local AI inference within budget and VRAM constraints.",
    "parameters": {
      "type": "object",
      "properties": {
        "budget": {
          "type": "number",
          "description": "Maximum budget in USD."
        },
        "min_vram": {
          "type": "integer",
          "description": "Minimum VRAM in GB."
        }
      },
      "required": []
    }
  }
}

def _run(args):
    budget = float(args.get("budget", 1000))
    min_vram = int(args.get("min_vram", 16))
    matches = []
    for pc in DATA:
        cost = pc.get("price_usd", 9999)
        vram = pc.get("vram_gb", 0)
        if cost <= budget and vram >= min_vram:
            matches.append({
                "name": pc.get("name"),
                "price_usd": cost,
                "vram_gb": vram,
                "cpu": pc.get("cpu"),
                "notes": pc.get("notes", "")
            })
    matches.sort(key=lambda x: x["price_usd"])
    return _ok({"matches": matches[:3], "budget": budget, "min_vram": min_vram})

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.

๐Ÿš€ Get AI automation insights daily

15:00 MST. One-click unsubscribe.

Subscribe