Skip to content

ahwurm/localshift

Repository files navigation

LocalShift

CI

Point Claude Code at any headless AI workload — a cron job, a skill, a bare prompt — and migrate it to a local LLM with a derived, per-workload quality eval.

The bar is not frontier parity. It's good enough, and works — proven, not assumed.

Receipts. Two production report pipelines (~15 LLM seats) migrated end-to-end on a 27B local model and cut over with no frontier fallback — what broke and what held is in docs/receipts/DOGFOOD-REPORT.md; the recipe is docs/CUTOVER.md.

Pipeline

Stage Skill Output
1. Explore the workflow /localshift:explore WORKLOAD.md — goal, dataflow, tools, context footprint
2. Design the eval /localshift:design-eval EVAL.md — quality dimensions, measurement apparatus, good-enough bar, feasibility verdict
3. Build the framework /localshift:build task.yaml + checks.yaml + judge.md
4. Replicate locally /localshift:replicate Local runs + traces + artifacts via the claude-free runner
5. Evaluate 1v1 /localshift:evaluate EVAL-REPORT.md — blind local-vs-frontier judging → migrate / conditional / keep-frontier
6. Cut over /localshift:shift <fast|slow> CUTOVER-<mode>.md — the no-fallback cutover plan: fast (whole pipeline at once, optimize after) or slow (seat-by-seat, verdict-gated). Recipe: docs/CUTOVER.md
Receipts (anytime) /localshift:savings Aggregates runs/ledger.jsonl into a receipts table — calls/day moved off frontier, token volume, honest API-equivalent dollars (cost floor at posted rates)

Claude Code does the exploring, eval design, and judging (interactive). The migrated job runs claude-free in cron via bin/localshift on the LocalHarness runtime — any OpenAI-compatible local endpoint (vLLM, Ollama, llama.cpp). LocalHarness is the load-bearing dependency, not just the executor: the eval frameworks Claude designs are built around LocalHarness's measurement apparatus — its tool surface, JSONL event traces, token accounting, and budget enforcement are what every check, bar, and feasibility verdict is grounded in.

Honest verdicts are the product: workloads that don't fit local hardware (context window, memory, missing tools) or miss the quality bar get keep-frontier, with receipts.

New here? Walk the whole journey on one example workload: docs/JOURNEY.md.

Why not a router?

  • Routers keep frontier in the loop by design; LocalShift ends in a no-fallback cutover — the frontier calls are deleted, not proxied.
  • The bars are derived from your own workload's traces and artifacts, not transferable benchmarks — a routing threshold tuned on someone else's distribution says nothing about your cron job.
  • keep-frontier is a first-class verdict with receipts, not a silent fallback path.

Install

/plugin marketplace add ahwurm/localshift
/plugin install localshift@localshift

Dev: claude --plugin-dir /path/to/localshift

Runner prerequisites: Python 3.12+ and uv; run uv sync inside the plugin dir. Local runs need an OpenAI-compatible endpoint — see docs/LOCAL-ENDPOINTS.md.

LocalShift pins its LocalHarness runtime by commit; to move the pin, use bin/bump_localharness.sh and read docs/UPDATING.md — upstream is pre-1.0 and the doc carries the honest break history (every bump so far changed something).

Status

v0.1 — launching alongside LocalHarness. Part of the Local__ family. MIT.

Working today: the claude-free runner (validate / run / check / ledger / budgets / sandbox, honest exit codes, append-only run ledger with endpoint-sourced model identity, bounded endpoint-readiness wait for cron cold starts, single retry on the instant-completion transient class), the deterministic check engine (structure/forbid/ diff/size-band rules, per-file glob coverage), substance gates that structure checks can't replace (content-count gate; a chart value gate — every plotted numeric must exist in the source data — validated against a real judged fabrication), a quarantined web-researcher subagent (self-hosted SearXNG, search+fetch only, parent never sees raw pages), blind 1v1 staging, full-pipeline chain runners with per-seat receipts, and the six pipeline skills (including shift — the fast/slow cutover).

Dogfood receipts: two real production report pipelines (≈15 LLM seats — research sweep, thesis-lens reasoning, QA, per-ticker market research, chart generation, writer, review gate) taken end-to-end on a 27B local model: backtested against captured frontier answer keys, judged per seat, then cut over with no frontier fallback. Every seat's verdict, the failures included, is in the workload EVAL-REPORTs — keep-frontier and conditional verdicts are receipts, not embarrassments. Run records are honest by construction: stale artifacts, budget-killed turns, and lost token counts are recorded as exactly that, never as green.

About

Migrate headless Claude/AI workloads to local LLMs with a derived, per-workload quality eval — cron job in, zero-marginal-cost replica out, with receipts.

Topics

Resources

License

Contributing

Stars

3 stars

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors