Fully Local LM Studio Agent (No Cloud)
This playbook builds an agent that runs entirely on a local LM Studio provider through the Pi SDK runtime, with lite-tier (FTS-only) memory and no outbound network. No cloud API keys, no outbound calls, no second local tool required. An optional upgrade to journal-tier semantic recall — using LM Studio’s own embeddings endpoint, still no second tool — is documented at the end.
Who this is for
Section titled “Who this is for”A privacy-focused user who prefers LM Studio’s GUI-driven local server over Ollama’s CLI daemon and wants the whole stack — chat model and recall — to stay on their own machine.
An agent that runs entirely on a local LM Studio provider via the Pi SDK runtime, with lite-tier memory and no outbound network.
Features used
Section titled “Features used”runtime.local-providers— register LM Studio and reference it aslmstudio:<model>runtime.multi-backend— the Pi SDK bridge that drives the local providermemory.lite— FTS-only recall, no embeddings or chat LLM required
Configuration
Section titled “Configuration”Every key below is verified against the config blueprint. The providers map registers LM Studio; runtime.model references it as lmstudio:qwen3.6-32b. type: "lmstudio" defaults to baseUrl: "http://localhost:1234" when omitted — LM Studio’s default local-server port — shown explicitly here for clarity.
{ "runtime": { "model": "lmstudio:qwen3.6-32b" }, "providers": { "lmstudio": { "type": "lmstudio", "baseUrl": "http://localhost:1234", "enabled": true } }, "memory": { "mode": "lite", "path": "./.mono-agent/memory", "writeMode": "append-host-summary" }, "webhook": { "enabled": true }}- Open LM Studio, load a model, and start the local server from the Developer tab (default port
1234). - Scaffold the agent:
mono-agent init --model lmstudio:<your-model-id> --memory lite— almstudio:*model auto-adds the LM Studio provider block. (There is no LM Studio preset; thelocal-privatepreset is Ollama-based.) - If your loaded model’s id differs from
qwen3.6-32b, updateruntime.modelto match exactly what LM Studio reports for the loaded model. - Run
mono-agent validateto confirm LM Studio’s local server is reachable. - Run
mono-agent start— keep the webhook channel as the zero-credential smoke channel. curlthe webhook endpoint and confirm a response generated by the local model.
Smoke test
Section titled “Smoke test”Upgrade to semantic recall (journal tier)
Section titled “Upgrade to semantic recall (journal tier)”LM Studio is a first-class embeddings provider. Journal-tier hybrid (BM25 + vector) recall
uses the same local server’s /v1/embeddings endpoint and never sends an Ollama request or
requires an OpenAI/dummy key. Add it deliberately after the base agent is working:
- In LM Studio, load an embedding model too (e.g. a Nomic Embed Text v1.5 GGUF) alongside your chat model — LM Studio serves both from the same local server concurrently.
- Rerun guided
mono-agent initin a fresh folder and choose Journal → LM Studio, or add the equivalent explicit block and switchmodetojournal:{"memory": {"mode": "journal","path": "./.mono-agent/memory","embeddings": {"provider": "lmstudio","model": "text-embedding-nomic-embed-text-v1.5","endpoint": "http://localhost:1234","dim": 768}}} - Keep
apiKeyEnvabsent for LM Studio’s default keyless server. If you enabled LM Studio authentication, add"apiKeyEnv": "LM_STUDIO_API_KEY"and populate that variable in the agent’s owner-only.env; a declared but missing value reportswaitingand does not retry keyless. - Run
mono-agent memory rebuild --jsonfor an existing Journal/BuJo root, thenmono-agent validate. A provider/model/dimension change is a new managed index identity; never reuse or relabel old vectors.
Related
Section titled “Related”- Local providers
- Runtime backends
- Embeddings
- Capture and recall
- Webhook channel
- Artifacts and traces — confirm no outbound network in the run artifact
- Fully Local Ollama Agent — the Ollama-embeddings variant, and an option if you’d rather not load two models in LM Studio at once
- Skills and the mono-agent-composer — scaffold this config end to end