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:
@@ -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
|
||||
'';
|
||||
}
|
||||
|
||||
|
||||
@@ -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
@@ -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"
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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": {
|
||||
@@ -44,4 +34,4 @@
|
||||
"steeringMode": "all",
|
||||
"followUpMode": "all",
|
||||
"collapseChangelog": true
|
||||
}
|
||||
}
|
||||
|
||||
+26
@@ -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=(
|
||||
|
||||
Reference in New Issue
Block a user