- Rename tiers: opus/sonnet/haiku → frontier/mid-tier/lightweight - Align with industry benchmarks (MMLU, GPQA, Chatbot Arena) - Add /external command for LLM mode control - Fix invoke.py timeout passthrough (now 600s default) Tier changes: - Promote gemini-2.5-pro to frontier (benchmark-validated) - Demote glm-4.7 to mid-tier then removed (unreliable) - Promote gemini-2.5-flash to mid-tier New models added: - gpt-5-mini, gpt-5-nano (GPT family coverage) - grok-code (Grok/X family) - glm-4.5-air (lightweight GLM) Removed (redundant/unreliable): - o3 (not available) - glm-4.7 (timeouts) - gpt-4o, big-pickle, glm-4.5-flash (redundant) Final: 11 models across 3 tiers, 4 model families Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
172 lines
7.4 KiB
JSON
172 lines
7.4 KiB
JSON
{
|
|
"infra": {
|
|
"cluster": "k0s",
|
|
"nodes": 3,
|
|
"arch": "arm64",
|
|
"storage": "longhorn",
|
|
"storage_class": "longhorn",
|
|
"backup": "longhorn-backup + minio-to-mega"
|
|
},
|
|
"hw": {
|
|
"pi5_8gb": 2,
|
|
"pi3_1gb": 1,
|
|
"roles": {
|
|
"control_plane": "pi5",
|
|
"workers": ["pi5", "pi3"]
|
|
}
|
|
},
|
|
"net": {
|
|
"metallb_pool": "192.168.153.240-192.168.153.254",
|
|
"ingress_nginx_ip": "192.168.153.240",
|
|
"ingress_haproxy_ip": "192.168.153.241",
|
|
"tailnet": "taildb3494.ts.net",
|
|
"dns_pattern": "<app>.<ns>.<ip>.nip.io"
|
|
},
|
|
"svc": {
|
|
"gitops": "argocd",
|
|
"monitoring": {
|
|
"metrics": "kube-prometheus-stack",
|
|
"logs": "loki-stack",
|
|
"alerts": "alertmanager",
|
|
"dashboards": "grafana"
|
|
},
|
|
"ingress": ["nginx-ingress-controller", "haproxy-ingress"],
|
|
"storage": ["longhorn", "local-path-storage", "minio"],
|
|
"networking": ["metallb", "tailscale-operator"]
|
|
},
|
|
"apps": {
|
|
"ai_stack": {
|
|
"namespace": "ai-stack",
|
|
"components": ["open-webui", "ollama", "litellm", "searxng", "n8n", "vllm"],
|
|
"models": ["gpt-oss:120b", "qwen3-coder"],
|
|
"ollama_host": "100.85.116.57:11434"
|
|
},
|
|
"home": ["home-assistant", "pihole", "plex"],
|
|
"infra": ["gitea", "docker-registry", "kubernetes-dashboard"],
|
|
"other": ["ghost", "tor-controller", "speedtest-tracker"]
|
|
},
|
|
"namespaces": [
|
|
"ai-stack", "argocd", "monitoring", "loki-system", "longhorn-system",
|
|
"metallb-system", "minio", "nginx-ingress-controller", "tailscale-operator",
|
|
"gitea", "home-assistant", "pihole", "pihole2", "plex", "ghost",
|
|
"kubernetes-dashboard", "docker-registry", "k8s-agent", "tools", "vpa"
|
|
],
|
|
"urls": {
|
|
"grafana": "grafana.monitoring.192.168.153.240.nip.io",
|
|
"longhorn": "ui.longhorn-system.192.168.153.240.nip.io",
|
|
"open_webui": "oi.ai-stack.192.168.153.240.nip.io",
|
|
"searxng": "sx.ai-stack.192.168.153.240.nip.io",
|
|
"n8n": "n8n.ai-stack.192.168.153.240.nip.io",
|
|
"minio_console": "console.minio.192.168.153.240.nip.io",
|
|
"pihole": "pihole.192.168.153.240.nip.io",
|
|
"k8s_dashboard": "dashboard.kubernetes-dashboards.192.168.153.240.nip.io",
|
|
"home_assistant": "ha.home-assistant.192.168.153.241.nip.io",
|
|
"plex": "player.plex.192.168.153.246.nip.io"
|
|
},
|
|
"external_llm": {
|
|
"description": "Route requests to external LLMs via opencode or gemini CLI",
|
|
"state_file": "~/.claude/state/external-mode.json",
|
|
"router_dir": "~/.claude/mcp/llm-router/",
|
|
"commands": {
|
|
"toggle_on": "~/.claude/mcp/llm-router/toggle.py on --reason 'reason'",
|
|
"toggle_off": "~/.claude/mcp/llm-router/toggle.py off",
|
|
"status": "~/.claude/mcp/llm-router/toggle.py status",
|
|
"invoke": "~/.claude/mcp/llm-router/invoke.py --model MODEL -p 'prompt'"
|
|
},
|
|
"providers": ["opencode", "gemini"],
|
|
"tiers": {
|
|
"frontier": ["github-copilot/gpt-5.2", "github-copilot/gemini-3-pro-preview", "gemini/gemini-2.5-pro"],
|
|
"mid-tier": ["github-copilot/gpt-5-mini", "github-copilot/claude-sonnet-4.5", "github-copilot/gemini-3-flash-preview", "opencode/grok-code", "gemini/gemini-2.5-flash"],
|
|
"lightweight": ["opencode/gpt-5-nano", "zai-coding-plan/glm-4.5-air", "github-copilot/claude-haiku-4.5"]
|
|
},
|
|
"task_routing": {
|
|
"reasoning": "github-copilot/gpt-5.2",
|
|
"code-generation": "github-copilot/gemini-3-pro-preview",
|
|
"long-context": "gemini/gemini-2.5-pro",
|
|
"fast": "github-copilot/gemini-3-flash-preview",
|
|
"default": "github-copilot/claude-sonnet-4.5"
|
|
},
|
|
"notes": {
|
|
"opencode_path": "/home/linuxbrew/.linuxbrew/bin/opencode (NOT /usr/bin/opencode which crashes)",
|
|
"o3_removed": "github-copilot/o3 not available via GitHub Copilot"
|
|
}
|
|
},
|
|
"workstation": {
|
|
"hostname": "willlaptop",
|
|
"ip": "192.168.153.117",
|
|
"os": "Arch Linux",
|
|
"desktop": "GNOME",
|
|
"shell": "fish",
|
|
"terminal": ["ghostty", "alacritty", "gnome-console"],
|
|
"network": "systemd-networkd + iwd",
|
|
"theme": "Dracula",
|
|
"editors": ["vscode", "zed", "vim"],
|
|
"browsers": ["firefox", "chromium", "google-chrome", "zen-browser", "epiphany"],
|
|
"virtualization": ["docker", "podman", "distrobox", "virt-manager", "virtualbox", "gnome-boxes"],
|
|
"k8s_tools": ["k9s", "k0s-bin", "k0sctl-bin", "argocd", "krew", "kubecolor"],
|
|
"dev_langs": ["go", "rust", "python", "typescript", "zig", "bun", "node/npm/pnpm"],
|
|
"ai_local": {
|
|
"ollama": true,
|
|
"llama_swap": true,
|
|
"models": ["Qwen3-4b", "Gemma3-4b"]
|
|
},
|
|
"backup": ["restic", "timeshift", "btrbk", "chezmoi"],
|
|
"dotfiles": "chezmoi"
|
|
},
|
|
"repos": {
|
|
"willlaptop": {
|
|
"path": "~/Code/active/devops/willlaptop",
|
|
"remote": "git@gitea-gitea-ssh.taildb3494.ts.net:will/willlaptop.git",
|
|
"purpose": "Workstation provisioning and config",
|
|
"structure": {
|
|
"ansible/": "Machine provisioning playbooks",
|
|
"ansible/roles/common/": "Hostname, network, users, SSH config",
|
|
"ansible/roles/packages/": "Package installation (pacman, AUR, flatpak, appimage)",
|
|
"ansible/roles/packages/files/": "Package lists (pkglist.txt, aur_pkglist.txt, etc)",
|
|
"docker/": "Local Docker stacks",
|
|
"scripts/": "Utility scripts (backup, sync, networking)",
|
|
"MCP/": "MCP server configs",
|
|
"local_ollama/": "Local Ollama data"
|
|
},
|
|
"ansible_tags": ["network", "wifi", "ethernet", "users", "sshd", "pacman", "aur", "flatpak", "appimage"],
|
|
"docker_stacks": ["file_browser", "minio-longhorn-backup", "rancher-cleanup"],
|
|
"scripts": ["bridge-up.sh", "chezmoi-sync.sh", "curl-s3.sh", "kvm-bridge-setup.sh",
|
|
"rclone-sync.sh", "restic-backup.sh", "restic-clean.sh"]
|
|
},
|
|
"homelab": {
|
|
"path": "~/Code/active/devops/homelab/homelab",
|
|
"remote": "git@github.com:will666/homelab.git",
|
|
"symlink": "~/.claude/repos/homelab",
|
|
"structure": {
|
|
"ansible/": "Ansible playbooks and templates for node provisioning",
|
|
"argocd/": "ArgoCD Application manifests (one per service)",
|
|
"charts/": "Helm values and raw manifests per service",
|
|
"charts/<svc>/values.yaml": "Helm chart values override",
|
|
"charts/<svc>/manifests/": "Raw K8s manifests (non-Helm resources)",
|
|
"docker/": "Docker Compose stacks for non-K8s workloads"
|
|
},
|
|
"charts": [
|
|
"ai-stack", "argocd", "argo-workflow", "cdi-operator",
|
|
"cloudflare-tunnel-ingress-controller", "docker-registry", "ghost",
|
|
"gitea", "haproxy-ingress", "harbor", "home-assistant", "k0s-backup",
|
|
"k8s-agent-dashboard", "kube-prometheus-stack", "kubernetes-dashboard",
|
|
"kubevirt", "local-path-storage", "loki-stack", "longhorn",
|
|
"longhorn-backup", "metallb", "minio", "minio-to-mega-backup",
|
|
"nfs-server-longhorn", "nginx-ingress-controller", "pihole", "pihole2",
|
|
"plex", "speedtest-tracker", "squareffect", "squareserver",
|
|
"tailscale-operator", "tools", "tor-controller", "traefik-ingress-controller",
|
|
"willlaptop-backup", "willlaptop-monitoring", "wills-portal"
|
|
],
|
|
"docker_stacks": [
|
|
"protonvpn-proxy", "squareffect", "squareserver", "stable-diffusion-webui"
|
|
],
|
|
"conventions": {
|
|
"argocd_app": "argocd/<name>.yaml points to charts/<name>/",
|
|
"helm_values": "charts/<name>/values.yaml for Helm overrides",
|
|
"raw_manifests": "charts/<name>/manifests/ for non-Helm K8s resources",
|
|
"naming": "ArgoCD app name = namespace name (usually)"
|
|
}
|
|
}
|
|
}
|
|
}
|