I have a Framework Desktop that I want to put AI models on. I keep hearing that local models are getting more and more impressive. I would love to one day get off of my Claude dependence for the sake of privacy and running things in house.
I am currently trying out using pi agent with GLM-4.7-Flash Q8_0.
I don’t have much of a reference to say how it compares to other local models, but it’s definitely not something I could switch over to as a main driver instead of Claude.
What are you guys thoughts?
This is also the first time I’ve tried Pi. I’ve also been recommended hermes, which I know very little about.
▗▄▄▄ ▗▄▄▄▄ ▄▄▄▖ root@nixos
▜███▙ ▜███▙ ▟███▛ ------------
▜███▙ ▜███▙▟███▛ OS: NixOS 26.05 (Yarara) x86_64
▜███▙ ▜██████▛ Host: Desktop (AMD Ryzen AI Max)
▟█████████████████▙ ▜████▛ ▟▙ Kernel: Linux 6.18.44
▟███████████████████▙ ▜███▙ ▟██▙ Uptime: 11 days, 21 hours, 26 ms
▄▄▄▄▖ ▜███▙ ▟███▛ Packages: 500 (nix-system)
▟███▛ ▜██▛ ▟███▛ Shell: bash 5.3.9
▟███▛ ▜▛ ▟███▛ Terminal: /dev/pts/7
▟███████████▛ ▟██████████▙ CPU: AMD RYZEN AI MAX+ 395 (32)z
▜██████████▛ ▟███████████▛ GPU: AMD Radeon 8060S Graphics ]
▟███▛ ▟▙ ▟███▛ Memory: 39.81 GiB / 125.09 GiB )
▟███▛ ▟██▙ ▟███▛ Swap: 6.73 MiB / 7.45 GiB (0%)
▟███▛ ▜███▙ ▝▀▀▀▀ Disk (/): 119.94 GiB / 3.57 TiB4
▜██▛ ▜███▙ ▜██████████████████▛ Local IP (enp191s0): 192.168.0.4
▜▛ ▟████▙ ▜████████████████▛ Locale: en_US.UTF-8
▟██████▙ ▜███▙
▟███▛▜███▙ ▜███▙
▟███▛ ▜███▙ ▜███▙
▝▀▀▀ ▀▀▀▀▘ ▀▀▀▘


Hey, thanks for the reply, the speed is actually pretty good!
So it’s running on llama.cpp (llama-server) b10408, Vulkan/RADV, behind llama-swap.
Your questions made me realize i also had a mismatch in my pi model config, the contextWindow and maxTokens had drifted apart pretty significantly so I just fixed that now.
/etc/nixos/configuration.nix
services.llama-swap = { enable = true; package = pkgs.llama-swap; listenAddress = "0.0.0.0"; port = 8080; openFirewall = true; settings = { # 63 GB off NVMe cold is slow. The default 120s will time out. healthCheckTimeout = 600; logLevel = "info"; models = { "glm-flash" = { # Keep "local" as an alias so existing clients keep working # without touching their base URL or model name. aliases = [ "local" "fast" ]; ttl = 1800; cmd = '' ${lib.getExe' pkgs.llama-cpp-vulkan "llama-server"} --port ''${PORT} -m /srv/llm/models/GLM-4.7-Flash-Q8_0.gguf -ngl 999 --flash-attn on -c 131072 -np 1 --jinja --no-webui --reasoning-format auto --reasoning-preserve --temp 1.0 --top-p 0.95 --repeat-penalty 1.0 --cors-origins "http://optimus.local:8080,http://localhost:8080/" ''; }; "gpt-oss-120b" = { aliases = [ "smart" ]; ttl = 1800; cmd = '' ${lib.getExe' pkgs.llama-cpp-vulkan "llama-server"} --port ''${PORT} -m /srv/llm/models/gpt-oss-120b/gpt-oss-120b-MXFP4.gguf -ngl 999 --flash-attn on -c 65536 -np 1 --jinja --no-webui --reasoning-format auto --temp 1.0 --top-p 1.0 --top-k 0 --min-p 0.0 --cors-origins "http://optimus.local:8080,http://localhost:8080/" ''; }; }; }; };~/.pi/agent/models.json (fixed)
{ "providers": { "optimus": { "baseUrl": "http://localhost:8080/v1", "api": "openai-completions", "apiKey": "ollama", "models": [ { "id": "local", "name": "GLM-4.7-Flash Q8_0 (optimus)", "aliases": ["fast", "glm-flash"], "reasoning": true, "contextWindow": 131072, "maxTokens": 32768, "cost": { "input": 0, "output": 0, "cacheRead": 0, "cacheWrite": 0 } }, { "id": "smart", "name": "GPT-OSS-120B (optimus)", "aliases": ["gpt-oss-120b", "oss"], "reasoning": true, "contextWindow": 65536, "maxTokens": 16384, "cost": { "input": 0, "output": 0, "cacheRead": 0, "cacheWrite": 0 } } ] } } }