# Lm Studio Tier

> Use for mechanical, non-interactive work that can run on a local model instead of burning subscription tokens — bulk classification, mechanical code edits, screenshot/UI description, long-text summarization. Not for anything needing MCP servers, subagents, vault memory, or judgment calls; the local tier has none of that and is slow (seconds to minutes per call, not real-time).

- Skill: `presidenteog/lm-studio-tier` (Agent Skill)
- Install (CLI): `npx skillmds@latest add presidenteog/lm-studio-tier`
- Raw SKILL.md: https://api.skillmd.com/api/skills/presidenteog/lm-studio-tier/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: AI & ML
- Author: PresidenteOG (https://skillmd.com/u/presidenteog)
- Updated: 2026-09-22
- Page: https://skillmd.com/skills/presidenteog/lm-studio-tier

---


# lm-studio-tier

LM Studio's own skills, MCP servers and plugins are **confirmed invisible** to any
API client — they fire only on the GUI's Send button or the native `/api/v1/chat`
endpoint. A session bridged to LM Studio, or a script calling it directly, sees
none of that. The only two things that actually reach `/v1/chat/completions` are
the **model** and the **preset** (system prompt + sampling params) — everything
below routes through those two levers only.

## Lanes, models, presets

| Lane | Model | Preset file |
|---|---|---|
| `mechanical-edit` | `qwen2.5-coder-7b-instruct` | `mechanical-edit.preset.json` |
| `classify` | `qwen2.5-coder-7b-instruct` | `classify.preset.json` |
| `vision-describe` | `google/gemma-3-12b` | `vision-describe.preset.json` |
| `bulk-summarize` | `mistralai/mistral-nemo-instruct-2407` | `bulk-summarize.preset.json` |

Assignment is measured, not guessed — see `Documents/Local Model Roster.md`.
`bulk-summarize`'s model is the one exception: provisional, chosen only to avoid
the reasoning-budget failure `qwen3.5-9b` hit on the classify task, not itself
benchmarked yet.

Presets live in `~/.lmstudio/config-presets/<lane>.preset.json` — real LM Studio
preset format (`operation.fields` keyed `llm.prediction.*`), so they're also
visible from LM Studio's own GUI, not just from scripts.

## Two ways to use this tier

**Interactive session** — `Tools/local-tier/claude-local.ps1`:
```powershell
. .\claude-local.ps1
Start-LocalTier                    # idempotent, reuses server + model if already up
claude --bare --strict-mcp-config  # required, see below
```

**Batch job** — `Tools/local-tier/lms-batch.ps1`, for a list of items instead of a
conversation:
```powershell
pwsh .\lms-batch.ps1 -Preset classify -JobFile .\jobs\nodes.json -OutDir .\out\nodes
```
3-attempt cap per item, resumable (skips items already written), never marks an
item done before its output file is confirmed on disk.

## `--bare --strict-mcp-config` is required, not optional

Confirmed by reproduction (2026-08-20): running with the vault's full MCP config —
`roblox-studio`'s `user_mouse_input` tool schema in particular — breaks LM
Studio's llama.cpp grammar compiler outright: `Failed to initialize samplers:
failed to parse grammar`, a hard 400, not a slowdown. Both flags together, always.

## Copy data into the isolated workspace — never `--add-dir`

`claude-local.ps1` always `cd`s into `Tools/local-tier/workspace/` before starting
the session. Work from inside that workspace; copy in whatever files the task
needs rather than reaching out to the rest of the vault with `--add-dir`. The
point of the isolated workspace is that nothing outside it can reintroduce the
MCP-schema crash above or leak unrelated project context into a model with no
judgment to filter it.

## The honest latency ceiling

Local inference is slow, not fast — this is the tradeoff for zero token cost, not
a bug to fix. Measured: `qwen2.5-coder-7b-instruct` at 7.90s for a short
classification; `gemma-3-12b` at 47s for one image description; a 17GB MoE model
at over 5 minutes just to load. Fine for a batch job left running in the
background; wrong fit for anything wanting a quick turnaround or a back-and-forth
conversation. Between runs, `lms unload --all`, and never retry a timed-out call
without checking `lms ps` first — a killed call can end up competing with its own
retry for the same compute.

## What this tier cannot do

No tool use beyond what a model's own `tool_use` capability supports (check
`GET /api/v0/models`, never assume from the model name —
`qwen2.5-coder-7b-instruct` has none despite being a coder model). No MCP, no
subagents, no vault memory, no multi-turn task tracking. If the job needs any of
that, it stays on Claude Code proper.

