Same workflow. Same output. Much lower cost.
Point Claude Code at a recurring headless workload — a scheduled job, a skill, a prompt. It comes back a local replica that runs for free on your hardware — with the receipts to trust it.
/plugin marketplace add ahwurm/localshift
/plugin install localshift@localshift How it works
Claude Code explores, designs the eval, and judges each seat 1v1. Then you cut over — the frontier calls deleted, not proxied — and the migrated job runs claude-free.
- 1
Explore the workflow
Goal, dataflow, tools, context footprint.
/localshift:explore → WORKLOAD.md
- 2
Design the eval
Quality dimensions, the good-enough bar, a feasibility verdict.
/localshift:design-eval → EVAL.md
- 3
Build the framework
The task, its hard checks, the judging rubric.
/localshift:build → task.yaml + checks.yaml + judge.md
- 4
Replicate locally
The claude-free runner executes on your local endpoint.
/localshift:replicate → runs + traces + artifacts
- 5
Evaluate 1v1
Blind local-vs-frontier judging ends in a verdict.
/localshift:evaluate → EVAL-REPORT.md
Honest verdicts are the product
The bar is not frontier parity — it's good enough, and works, proven not assumed. Every seat earns one of three verdicts:
Passes every check and judged dimension. Cut over.
Specific, fixable gaps. Migrate after the fix list.
Local can't meet it yet — said plainly. A first-class outcome, not a failure.
Two ways to shift
Same eval underneath — your call on how fast the frontier calls go away.
Cut over now, optimize after
Move the whole workload local in one pass. Honest-fail seams catch what breaks, and the optimize-on-receipts loop closes the gap to frontier on your schedule. Least effort upfront, free from day one.
Migrate seat by seat
Judge each component blind 1v1 and flip only what passes — the rest stays frontier until it's ready. Higher day-one fidelity, more deliberate.
Runs on local_harness
Migrated jobs run claude-free on LocalHarness — vLLM, Ollama, llama.cpp.