gate: add kunchenguid/no-mistakes for all Nix harnesses

- home.nix: add home.activation.noMistakes (declarative install to
  ~/.no-mistakes/bin + daemon via launchd, global config fallback
  agent: [pi, opencode, grok, claude, codex] covering every harness
  declared in Nix; fix shadowing of jonathanong npm no-mistakes)
- ~/.no-mistakes/config.yaml: switched from auto to ordered fallback,
  pi first (firstmate crewmates), then opencode/grok
- home/.pi/agent/*, home/.grok/config.toml, home/.config/opencode2:
  align to oMLX/qwen3.6-35b local model (was mixed Talos/genesis)
- rebuild.sh: ensure grok-build upgrade and OpenCode 1.x install on
  rebuild (stable CLI for free-tier, opencode2 beta is 426 there)
- dotfiles repo: no-mistakes init (gate at
  ~/.no-mistakes/repos/916cb6ded81b.git, remote no-mistakes)
This commit is contained in:
Lap Tran
2026-09-21 17:38:35 -04:00
parent 8bcc11c108
commit ab3b67af92
6 changed files with 91 additions and 181 deletions
+37
View File
@@ -227,5 +227,42 @@ in
fi
"$npm" install -g --allow-scripts=@opencode-ai/cli @opencode-ai/cli@beta
'';
# kunchenguid/no-mistakes gate (git push no-mistakes) - declarative install + daemon + global config
# Covers every harness declared in Nix: pi (pi-coding-agent), opencode (oc2/fm), grok (grok-build),
# plus claude/codex aspirational (aliases cc/co). Binary lives in ~/.no-mistakes/bin
# with symlink ~/.local/bin/no-mistakes (installer default). Do NOT npm install -g no-mistakes
# - that npm name is jonathanong's static-analysis tool (shadowing bug fixed 2026-09-21).
home.activation.noMistakes = lib.hm.dag.entryAfter [ "writeBoundary" ] ''
set -euo pipefail
bin="$HOME/.no-mistakes/bin/no-mistakes"
link="$HOME/.local/bin/no-mistakes"
# Install/refresh via upstream installer if missing or not kunchenguid build
if [ ! -x "$bin" ] || ! "$bin" --version 2>/dev/null | grep -q "kunchenguid\|v1\."; then
if [ -x "$bin" ]; then
echo "no-mistakes: replacing unexpected binary at $bin" >&2
fi
curl -fsSL https://raw.githubusercontent.com/kunchenguid/no-mistakes/main/docs/install.sh | sh
fi
# Ensure global config covers all Nix harnesses (idempotent - only writes if missing or still `agent: auto`)
cfg="$HOME/.no-mistakes/config.yaml"
if [ -f "$cfg" ] && grep -qE '^\s*agent:\s*auto\s*$' "$cfg"; then
tmp="$(mktemp)"
awk '
/^\s*agent:\s*auto\s*$/ {
print "# Managed by dotfiles/home.nix home.activation.noMistakes";
print "agent: [pi, opencode, grok, claude, codex]";
next
}
{ print }
' "$cfg" > "$tmp" && mv "$tmp" "$cfg"
fi
if [ ! -f "$cfg" ]; then
mkdir -p "$(dirname "$cfg")"
printf 'agent: [pi, opencode, grok, claude, codex]\n' > "$cfg"
fi
# Ensure daemon running (launchd on macOS)
"$bin" daemon restart >/dev/null 2>&1 || "$bin" daemon start >/dev/null 2>&1 || true
'';
}
+4 -87
View File
@@ -1,52 +1,8 @@
{
"$schema": "https://opencode.ai/config.json",
"model": "talos/ornith-worker-1",
"model": "omlx/qwen3.6-35b",
"autoupdate": false,
"providers": {
"talos": {
"name": "Talos Cluster",
"package": "@opencode-ai/ai/providers/openai-compatible",
"settings": {
"baseURL": "http://10.37.0.165:30081/v1"
},
"models": {
"ornith-worker-1": {
"modelID": "ornith-worker-1",
"name": "Ornith Worker 1 (RTX 4070 Super)",
"capabilities": {
"tools": true,
"input": ["text"],
"output": ["text"]
},
"limit": {
"context": 132768,
"output": 65536
}
}
}
},
"talos-worker-2": {
"name": "Talos Worker 2",
"package": "@opencode-ai/ai/providers/openai-compatible",
"settings": {
"baseURL": "http://10.37.0.219:30082/v1"
},
"models": {
"genesis-hermes-worker-2": {
"modelID": "/models/Hermes3.6-35B-A3B-Uncensored-Genesis-V6-APEX.gguf",
"name": "Genesis Hermes V6 APEX (RTX 3080 12GB, vision)",
"capabilities": {
"tools": true,
"input": ["text"],
"output": ["text"]
},
"limit": {
"context": 131072,
"output": 65536
}
}
}
},
"omlx": {
"name": "oMLX (Local)",
"package": "@opencode-ai/ai/providers/openai-compatible",
@@ -54,48 +10,9 @@
"baseURL": "http://localhost:8000/v1"
},
"models": {
"ornith-35b": {
"modelID": "Ornith-35B",
"name": "Ornith 35B (Qwen3.5 MoE, 4-bit, 131K ctx)",
"capabilities": {
"tools": true,
"input": ["text"],
"output": ["text"]
},
"limit": {
"context": 131072,
"output": 65536
}
},
"ornith-5bit": {
"modelID": "Ornith-1.0-35B-5bit-mlx",
"name": "Ornith 35B (5-bit, 262K ctx)",
"capabilities": {
"tools": true,
"input": ["text"],
"output": ["text"]
},
"limit": {
"context": 262144,
"output": 65536
}
},
"ternary-bonsai": {
"modelID": "Ternary-Bonsai-27B-mlx-2bit",
"name": "Ternary Bonsai 27B (2-bit, ternary weights)",
"capabilities": {
"tools": true,
"input": ["text"],
"output": ["text"]
},
"limit": {
"context": 131072,
"output": 65536
}
},
"dagger-qwen36-27b": {
"modelID": "Dagger-Qwen3.6-27B-MLX",
"name": "Dagger Qwen3.6 27B MLX (M5, 32GB)",
"qwen3.6-35b": {
"modelID": "Jundot/Qwen3.6-35B-A3B-oQ4-mtp",
"name": "Qwen 3.6 35B (o4-mtp)",
"capabilities": {
"tools": true,
"input": ["text"],
+12 -22
View File
@@ -1,37 +1,24 @@
# Grok Build user config - managed via home-manager (edit here, then rebuild if needed).
# Source of truth: home/.grok/config.toml in dotfiles.
[marketplace]
official_marketplace_auto_installed = true
default_skills_installs_purged = true
[[marketplace.sources]]
name = "xAI Official"
git = "https://github.com/xai-org/plugin-marketplace.git"
[models]
default = "ornith"
default = "qwen"
[model.ornith]
model = "/models/ornith-1.0-35b-Q6_K.gguf"
base_url = "http://10.37.0.165:30081/v1"
name = "Ornith 1.0 35B (Talos)"
description = "Local Ornith-1.0-35B Q6_K via llama.cpp on Talos worker 1 (RTX 4070 Super)"
[model.qwen]
model = "Jundot/Qwen3.6-35B-A3B-oQ4-mtp"
base_url = "http://localhost:8000/v1"
name = "Qwen 3.6 35B (o4-mtp)"
description = "Qwen3.6-35B-A3B with o4-mtp on oMLX"
api_backend = "chat_completions"
temperature = 0.7
top_p = 0.95
context_window = 132768
max_completion_tokens = 16384
[model.genesis]
model = "/models/Hermes3.6-35B-A3B-Uncensored-Genesis-V6-APEX.gguf"
base_url = "http://10.37.0.219:30082/v1"
name = "Genesis Hermes V6 (Talos W2)"
description = "Local Qwen3.6-35B-A3B Genesis Hermes V6 APEX + vision via llama.cpp on Talos worker 2 (RTX 3080)"
api_backend = "chat_completions"
temperature = 0.7
top_p = 0.95
context_window = 131072
max_completion_tokens = 16384
context_window = 65536
max_completion_tokens = 65536
[ui]
theme = "rosepine"
@@ -43,3 +30,6 @@ compact_mode = false
[cli]
installer = "internal"
[privacy]
privacy_banner_acked = "2026-09-21T16:02:21Z"
+7 -57
View File
@@ -1,57 +1,5 @@
{
"providers": {
"genesis": {
"baseUrl": "http://10.37.0.219:30082/v1",
"api": "openai-completions",
"apiKey": "none",
"compat": {
"maxTokensField": "max_tokens"
},
"models": [
{
"id": "genesis",
"name": "Hermes3.6-35B-A3B-Uncensored-Genesis-V6-APEX (Local)",
"reasoning": false,
"input": [
"text"
],
"contextWindow": 132864,
"maxTokens": 32768,
"cost": {
"input": 0,
"output": 0,
"cacheRead": 0,
"cacheWrite": 0
}
}
]
},
"ornith": {
"baseUrl": "http://10.37.0.165:30081/v1",
"api": "openai-completions",
"apiKey": "none",
"compat": {
"maxTokensField": "max_tokens"
},
"models": [
{
"id": "ornith",
"name": "Ornith 1.0 35B (Local)",
"reasoning": false,
"input": [
"text"
],
"contextWindow": 132864,
"maxTokens": 32768,
"cost": {
"input": 0,
"output": 0,
"cacheRead": 0,
"cacheWrite": 0
}
}
]
},
"omlx": {
"baseUrl": "http://localhost:8000/v1",
"api": "openai-completions",
@@ -61,12 +9,14 @@
},
"models": [
{
"id": "Dagger-Qwen3.6-27B-MLX",
"name": "Dagger Qwen3.6 27B MLX (M5, 32GB)",
"reasoning": true,
"input": ["text"],
"id": "Jundot/Qwen3.6-35B-A3B-oQ4-mtp",
"name": "Qwen 3.6 35B (o4-mtp)",
"reasoning": false,
"input": [
"text"
],
"contextWindow": 65536,
"maxTokens": 32768,
"maxTokens": 65536,
"cost": {
"input": 0,
"output": 0,
+4 -14
View File
@@ -1,23 +1,13 @@
{
"lastChangelogVersion": "0.84.1",
"theme": "rose-pine-moon",
"defaultProvider": "ornith",
"defaultModel": "ornith",
"defaultProvider": "omlx",
"defaultModel": "qwen3.6-35b",
"models": [
{
"name": "Genesis (Local)",
"provider": "genesis",
"model": "/models/Hermes3.6-35B-A3B-Uncensored-Genesis-V6-APEX.gguf"
},
{
"name": "Ornith 1.0 35B (Local)",
"provider": "ornith",
"model": "/models/ornith-1.0-35b-Q6_K.gguf"
},
{
"name": "Dagger Qwen3.6 27B MLX (M5)",
"name": "Qwen 3.6 35B (o4-mtp)",
"provider": "omlx",
"model": "Dagger-Qwen3.6-27B-MLX"
"model": "Jundot/Qwen3.6-35B-A3B-oQ4-mtp"
}
],
"compaction": {
+26
View File
@@ -1,10 +1,36 @@
#!/usr/bin/env bash
# Rebuild nix-darwin + home-manager. Rotates stale home-manager *.backup files
# so a second switch never fails with "would be clobbered".
# Also upgrades grok-build and installs OpenCode 1.x (stable CLI for free-tier).
set -euo pipefail
DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd -P)"
ln -sfn "$DIR" ~/.dotfiles
# Upgrade grok-build to latest (Homebrew cask).
# Skip if Homebrew API is unreachable (DNS/network issues).
echo "==> Upgrading grok-build..."
if brew upgrade grok-build 2>&1; then
echo "==> grok-build upgrade complete"
else
echo "==> WARNING: grok-build upgrade failed (network issue). Skipping."
fi
# Install OpenCode 1.x (stable CLI, binary "opencode") if absent.
# Required for free-tier models; opencode2 beta returns HTTP 426 on those endpoints.
# Uses Homebrew's npm (not Nix's npm) to avoid EACCES on the store.
# Skip if npm is unavailable (e.g., network issues preventing fetch).
OPENCODE_BIN=/opt/homebrew/bin/opencode
if [ ! -x "$OPENCODE_BIN" ]; then
echo "==> Installing OpenCode 1.x (stable) via Homebrew npm..."
if /opt/homebrew/bin/npm install -g --allow-scripts=opencode-ai opencode-ai@1.18 2>&1; then
echo "==> OpenCode 1.x installed successfully"
else
echo "==> WARNING: OpenCode 1.x installation failed (network issue). Skipping."
fi
else
echo "==> OpenCode 1.x already installed: $(${OPENCODE_BIN} --version)"
fi
stamp="$(date +%Y%m%d-%H%M%S)"
# Paths home-manager manages via home.file (regular files become out-of-store symlinks).
managed=(