One interface for every local LLM runtime
Ollama, LM Studio, and llama.cpp behind a single SDK and CLI. Write your call once; Loomcast routes it to the right runtime.
pip install loomcast$ loomcast compare "Explain recursion in one sentence."
┌── OLLAMA (llama3) ──┐ ┌─ LMSTUDIO (qwen) ─┐ ┌─ LLAMACPP (gemma) ─┐
│ A function that │ │ When a function │ │ Calling a func- │
│ calls itself... │ │ calls itself... │ │ tion from itself. │
└─────────────────────┘ └───────────────────┘ └────────────────────┘Everything you need to run local models
A thin, dependable layer over the runtimes you already run — not a server, not an inference engine.
Unified Interface
Write manager.chat(model, messages) once. Loomcast routes it to the right runtime — no per-runtime ports, routes, or payload formats to learn.
Three Local Runtimes
Ollama, LM Studio, and llama.cpp supported from day one, each behind the same RuntimePort contract.
Catalog & Recommendations
Search and filter models by task (code, math, vision) with a dynamic catalog and offline static fallback.
SHA-256 Verification
Verify installed model integrity against SHA-256 digests and update models seamlessly.
Resilient by Design
The dynamic catalog automatically falls back to a checksum-verified static catalog when the network misbehaves.
Side-by-Side Comparison
Send one prompt to every runtime at once and compare responses in parallel panels.
CLI and SDK
Drive it from the terminal with loomcast ..., or import loomcast and call the same operations from Python.
Clean Architecture
Ports and adapters throughout: the domain never imports the network. Add a new runtime in a single file.
LoomCast Features & Actions Reference
Explore all 13 operations available across the CLI terminal interface and the LoomCast Python SDK.
Side-by-Side Comparison
Sends the same prompt concurrently to Ollama, LM Studio, and llama.cpp, displaying outputs side-by-side in parallel panels to evaluate speed and output quality.
loomcast compare "Explain recursion in one sentence."Options & Arguments
| Option / Flag | Type | Description |
|---|---|---|
| prompt | argument | Prompt sent to all selected runtimes |
| --model, -m | option | Force specific model across all runtimes |
| --backend, -b | repeatable | Restrict comparison to specific backends |
Simulated Terminal Output
Querying runtimes...
┌── OLLAMA (llama3) ────────┐ ┌── LMSTUDIO (qwen) ────────┐ ┌── LLAMACPP (gemma) ───────┐
│ A function calling itself │ │ When a program function │ │ Self-referencing function │
│ until reaching a base │ │ repeatedly invokes itself │ │ execution until base step │
│ condition. │ │ to solve sub-problems. │ │ is reached. │
└───────────────────────────┘ └───────────────────────────┘ └────────────────────────────┘Multi-Runtime Comparison Simulator
The loomcast compare command queries all your active local runtimes in parallel. Test the interactive preview below:
Prompt sent
"Explain recursion in one sentence."
Generated response
Prompt sent
"Explain recursion in one sentence."
Generated response
Prompt sent
"Explain recursion in one sentence."
Generated response
Automated System Diagnostics
LoomCast includes an automated self-diagnostic suite. Validate your configuration, runtime HTTP connectivity, and catalog integrity in a single command.
$ loomcast doctor
Loomcast System Diagnostics
✓ Configuration: loaded successfully from C:\Users\User\.config\loomcast\config.json
✓ Environment variables: none set, using defaults
✓ Runtime OLLAMA: available (http://127.0.0.1:11434)
✓ Runtime LMSTUDIO: available (http://127.0.0.1:1234)
⚠ Runtime LLAMACPP: unavailable (not default backend)
✓ Catalog: dynamic catalog reachable
✓ Static catalog integrity: SHA-256 check passed
0 problem(s) found, 1 warning(s)The same operations, two ways
Everything the CLI does is available from the Python SDK, backed by the same manager.
# Check which runtimes are up
loomcast status
# Send one prompt to every runtime, side by side
loomcast compare "Explain recursion in one sentence."
# Chat with a specific model on a specific backend
loomcast chat llama3 "Hello world!" --backend ollamaimport loomcast
# Search the catalog
for model in loomcast.search("code"):
print(model.name, model.description)
# Send a chat prompt
reply = loomcast.chat(
"llama3",
[{"role": "user", "content": "Hello!"}],
runtime_type="ollama",
)
# Compare the same prompt across runtimes
for r in loomcast.compare("Explain recursion in one sentence."):
print(r.runtime_type.value, "->", r.response or r.error)