# Step 1: Two Separate Servers The initial setup for running both model servers as persistent macOS services via `launchd`. ## Launchd Plist for 35B Chat Model ```xml KeepAlive ProgramArguments /opt/homebrew/bin/llama-server -m /Users/jimmyg/models/Qwen3.6-35B-A3B-Q8_0.gguf --host0.0.0.0 --port8085 -ngl99 -c262144 --mlock RunAtLoad StandardOutPath /Users/jimmyg/.hermes/logs/llama-server-qwen35b.log StandardErrorPath /Users/jimmyg/.hermes/logs/llama-server-qwen35b.log ``` ## Launchd Plist for 27B Coding Model ```xml KeepAlive ProgramArguments /opt/homebrew/bin/llama-server -m /Users/jimmyg/models/Qwen3.6-27B-Q8_0.gguf --host0.0.0.0 --port8080 -ngl99 -c131072 RunAtLoad ``` ## Initial Flags Explained | Flag | Value | Purpose | |------|-------|---------| | `-ngl 99` | All layers on GPU | Full Metal acceleration | | `-c` | 262K / 131K | Context window size | | `--mlock` | - | Prevent model from being swapped | | `--spec-type draft-mtp` | - | Multi-Token Prediction speculation | ## Loading the Services ```bash launchctl load ~/Library/LaunchAgents/com.jimmyg.llama-server-qwen35b.plist launchctl load ~/Library/LaunchAgents/com.jimmyg.llama-server.plist ``` ## Hermes Agent Integration Two custom providers in `~/.hermes/config.yaml`: ```yaml custom_providers: - base_url: http://localhost:8085/v1 model: /Users/jimmyg/models/Qwen3.6-35B-A3B-Q8_0.gguf name: qwen35b - base_url: http://localhost:8080/v1 model: Qwen3.6-27B-Q8_0 name: qwen27b ``` ## Baseline Performance At this point with default settings: - 35B MoE: ~20 t/s - 27B dense: ~12 t/s Plenty of room for optimization.