AI Cost Optimization¶
This dotfiles framework ships an opinionated AI-cost layer designed to keep token spend predictable and low while still using the smartest model for orchestration. Two ideas drive it:
- Delegate the grunt work. Have the expensive smart model
orchestrate, and a cheap fast model do the file reads, edits, and
verification. The smart model sees one tool call and the final
git diffinstead of every intermediate read. - Account every call. Every invocation through
dot ai <provider>appends a JSONL entry so you can see spend across all providers in one report, not just per-tool dashboards.
Quick reference¶
dot ai delegate "rename every UserService method that starts with get to fetch"
dot ai cost # all-time overview
dot ai cost --since 7 # last 7 days
dot ai cost --fails # only failures + breakdown by failure type
Inside Claude Code: /vibe, /vibe-report, /vibeon, /vibeoff,
/vibestatus, /vibe-model-pick, /vibe-model-clear.
The delegator pattern¶
The pattern comes from pcx-wave/vibe-skill. Mistral Vibe is the default delegate but the same wrapper accepts any model Vibe knows about (DeepSeek V4 Flash, Gemini Flash, etc.).
Cost comparison (May 2026 list prices, blended 85 in / 15 out typical of coding tasks):
| Task | Claude Sonnet 4.6 ($3 / $15) | Mistral Medium 3.5 ($1.50 / $7.50) | DeepSeek V4 Flash ($0.14 / $0.28) |
|---|---|---|---|
| 1-file tweak (800 tok) | ~$0.004 | ~$0.002 | ~$0.0001 |
| 6-read task (4,800 tok) | ~$0.023 | ~$0.012 | ~$0.0008 |
| Multi-file refactor (12,000 tok) | ~$0.058 | ~$0.029 | ~$0.002 |
Real-world stats from 254 vibe-skill runs over 10 days (May 2026):
| Amount | |
|---|---|
| Actually paid (Mistral Pro prorated + DeepSeek pay-as-you-go) | $10.35 |
| Same workload pay-as-you-go via Mistral API | $46.61 |
| Same workload on Claude Sonnet 4.6 | $179.91 |
| Saved vs Claude | $169.56 (17.4× cheaper) |
Claude itself contributes ~500-1500 tokens per delegation as orchestration overhead. Even with that overhead the savings dominate for anything beyond a one-line edit.
Pieces deployed by this repo¶
| Component | Source path | Deployed to | Role |
|---|---|---|---|
vibe skill |
defaults/dot_claude/skills/vibe/ |
~/.claude/skills/vibe/ |
Claude Code slash commands (/vibe, /vibe-report, etc.) |
| Delegator binary | defaults/dot_claude/skills/vibe/tools/executable_vibe-delegate |
~/.claude/skills/vibe/tools/vibe-delegate |
Runs the cheap-model task in a pseudo-TTY, parses streaming JSON, syntax-checks changes, logs the run |
| Reporter | defaults/dot_claude/skills/vibe/tools/executable_delegate-report |
~/.claude/skills/vibe/tools/delegate-report |
Reads the JSONL log, prints overview / by-model / by-project / failure tables |
| CLI shim | scripts/dot/commands/ai.sh |
bin/dot ai delegate / bin/dot ai cost |
Same delegator + reporter, callable from the terminal without Claude Code |
| Unified log hook | _ai_log_run in ai.sh |
runs inside run_ai_with_context |
Appends one JSONL line per dot ai <provider> invocation |
| Log file | runtime-managed | ~/.local/share/delegate-runs.jsonl |
One line per run; dot ai cost reads it |
State files¶
| File | Owner | Purpose |
|---|---|---|
~/.local/share/delegate-runs.jsonl |
runtime | One JSONL entry per AI invocation (vibe + every other provider) |
~/.local/share/vibe-auto.flag |
/vibeon / /vibeoff |
When present, Claude auto-delegates coding tasks to Vibe |
~/.local/share/vibe-model.flag |
/vibe-model-pick |
Override the Vibe model for the next runs; cleared by /vibe-model-clear |
~/.vibe/config.toml |
user | Vibe's own provider / model configuration |
Reading the report¶
DELEGATE REPORT 2026-05-17 → 2026-05-24
Runs : 27 (ok: 25, failed: 2, timeout: 0)
Success rate : 92%
Avg duration : 18.4s
Tokens total : 4,231,082
Delegate cost : $1.4711
Claude equiv : $14.8294
Saved : $13.3583 (90% cheaper than Claude)
Claude equiv is what the same workload would have cost on Claude
Sonnet 4.6 ($3 / $15 per M tokens, blended at the same in/out ratio).
The savings line is the difference. Failure types are broken out per
model so you can see which delegate is most reliable for your repo.
Provider coverage¶
Every provider exposed via dot ai <provider> is logged best-effort.
For providers that don't surface token counts in their CLI output, the
report still tracks: timestamp, project, exit code, duration, prompt
word count. Token / cost fields stay zero for those providers — the
report tolerates the gap and aggregates by model regardless.
Providers tracked today:
| Provider | Binary | Logged | Tokens surfaced? |
|---|---|---|---|
| Claude Code | claude |
yes | no (CLI doesn't expose) |
| Codex | codex |
yes | no |
| Copilot CLI | copilot |
yes | no |
| Gemini CLI | gemini |
yes | no |
| Goose | goose |
yes | no |
| Kimi CLI | kimi |
yes | no |
| Aider | aider |
yes | no |
| OpenCode | opencode |
yes | no |
| Autohand | autohand |
yes | no |
| Mistral Vibe | vibe |
yes | yes (via delegator) |
| Qwen | qwen |
yes | no |
| ZAI | zai |
yes | no |
| Shell-GPT | sgpt |
yes | no |
| Ollama (local) | ollama |
yes | n/a (no cost) |
| Kiro CLI | kiro-cli |
yes | no |
Future work¶
Not implemented yet, ordered roughly by likely impact:
- Provider-level budget guard.
dot ai budget --set 50/monthwould warn at 80% and refuse new requests at 100% (overridable). Needs per-provider cost estimation hooks beyond what each CLI surfaces today. - Prompt response cache. Many coding-helper queries are deterministic ("syntax for X in Y"). A local cache keyed on prompt hash + provider could short-circuit repeat queries.
- Per-task-class model routing.
dot ai delegate --class refactorwould pick the cheapest model that meets the quality bar for the task class. Today the user picks the model. - Rate-limit awareness. Track API rate limits from response
headers, queue requests, surface a
dot ai cost --limitsview that shows time-to-reset for every provider with an active limit.