About Portfolio Services Blog Contact
EN DE RU
Let's talk →
July 13, 2026 · 3 min read

How to Run Any LLM, Vision, or Voice Model Without a GPU: LocalAI Open-Source Engine for Any Hardware

I'm Denis Shokhirev, an Enterprise AI architect based in Erlangen. At DennisCraft AI Studio, I ship production AI agents for DACH B2B clients on a stack of Claude, Supabase, n8n, Doppler, and self-hosted Postgres. This spring, a logistics client requested an on-prem voice+LLM assistant—no cloud, no GPU, strict latency SLA. Standard options (llama.cpp, Ollama) failed under real load: CPU-only inference was sluggish, and integrating vision or voice meant juggling multiple APIs. LocalAI solved it.

Denis Shokhirev
Denis Shokhirev
Enterprise AI Architect
Telegram LinkedIn

I'm Denis Shokhirev, an Enterprise AI architect based in Erlangen. At DennisCraft AI Studio, I ship production AI agents for DACH B2B clients on a stack of Claude, Supabase, n8n, Doppler, and self-hosted Postgres. This spring, a logistics client requested an on-prem voice+LLM assistant—no cloud, no GPU, strict latency SLA. Standard options (llama.cpp, Ollama) failed under real load: CPU-only inference was sluggish, and integrating vision or voice meant juggling multiple APIs. LocalAI solved it.

Why LocalAI? Real Constraints in European Production

If you work in regulated verticals (fintech, logistics, industrial automation), GPU access is rare. In my deployments, 70% of clients demand on-prem and airgap. Cloud LLMs (OpenAI, Anthropic) are dead on arrival. Even "lightweight" stacks like llama.cpp often choke on CPU-only servers, especially with multi-modal (text+audio+vision) flows.

What LocalAI Actually Is

LocalAI is an open-source engine (Go) that mimics the OpenAI API for local, hardware-agnostic inference of LLMs, vision, and voice models. It wraps llama.cpp, whisper.cpp, Stable Diffusion, GGUF/ggml, CLIP, and more under a single binary. No CUDA, no cloud dependencies. Drop models in a folder, start the binary, and your AI stack is ready—on x86, ARM, even Raspberry Pi.

Where LocalAI Wins

  • Unified deployment: LLM, vision, and voice models run side-by-side on a plain CPU server.
  • OpenAI-compatible API: plug into n8n, Supabase, or Postgres without refactoring pipelines.
  • Model zoo: Llama 2, Mistral, Falcon, GPT4All, Stable Diffusion, Whisper, and more.
  • Built-in quantization and fine-tuning via config—no CLI juggling.

Production Patterns: Launch, Configuration, API Usage

Quickstart: LocalAI on CPU

For a fast test on a standard CPU server (<2 vCPU, 8GB RAM), download the latest release and a GGUF model (e.g., Llama 2 7B). Example:

wget https://github.com/mudler/LocalAI/releases/download/v2.11.0/local-ai-linux-amd64
chmod +x local-ai-linux-amd64
./local-ai-linux-amd64 --models-path ./models --context-size 2048
# Drop your Llama 2 7B GGUF model in ./models

Test the API:

curl -X POST http://localhost:8080/v1/completions \
  -H "Content-Type: application/json" \
  -d '{"model": "llama-2-7b", "prompt": "What is RAG?", "max_tokens": 100}'

Integrating with n8n and Supabase

Because LocalAI mimics the OpenAI API, you can connect it to n8n using the standard OpenAI node—just point it to your endpoint. With Supabase, use an edge function to proxy requests, keeping your business logic unchanged:

// Supabase Edge Function
import { serve } from 'std/server'
serve(async (req) => {
  const resp = await fetch('http://localai:8080/v1/completions', {
    method: 'POST',
    headers: { ...req.headers },
    body: req.body
  });
  return new Response(await resp.text(), resp);
})

Performance, Compatibility, and Model Coverage

Engine RAM (7B) Token Latency API Compatibility Voice/Vision
LocalAI ~4.5GB 0.9–1.2s OpenAI 1:1 Yes (Whisper, SD)
llama.cpp ~4.2GB 0.8–1.0s Partial No
Ollama ~4.8GB 0.7–1.1s Custom API No

LocalAI is slightly slower than llama.cpp but wins on versatility: you can serve LLM, vision, and voice in one API. In a 2024 fintech deployment, my Supabase edge function routed both text and audio requests through LocalAI with zero business logic changes.

Current Limitations

  • Models above 13B parameters: expect 4–5s per token on CPU.
  • CUDA acceleration is experimental; best results are CPU-only (for now).
  • Some OpenAI features (function calling, tool use) are partially implemented.

Security and On-Prem Migration: What Actually Works

Codegen and RAG through LocalAI require the same precautions as any on-prem LLM: stateless containers, limited permissions, runtime sandboxing. I use bandit and semgrep (2024) for static analysis of generated pipelines. Concrete case: during a LocalAI pilot, I caught a prompt injection into a RAG pipeline—mitigated with stricter validation using OWASP templates (OWASP Top Ten, 2021).

For voice/vision (e.g., Whisper for transcription), don't persist audio/images to disk unencrypted: fintech and logistics audits will flag this as a compliance blocker.

FAQ

Can LocalAI host multiple models at once?

Yes—just configure multiple model entries. You can switch by model name in the API call.

Does LocalAI run on ARM (e.g., Raspberry Pi)?

Yes, there are ARM builds. Latency will be higher, but it works for demos or edge devices. For production, use quantized models.

How do I update models without downtime?

LocalAI supports hot-reloading via REST API or filesystem triggers. Swap out checkpoints without restarting the service.

Does it fully support function calling and tool use?

Partial support. Basic scenarios work, but complex function/tool chaining may require external orchestration.

What is the minimal server spec for Llama 2 7B?

CPU with AVX2, 8GB RAM, SSD. For stable production: at least 2 vCPU, 12GB RAM.

Where do you hit the hardest blocker in moving to on-prem LLMs: latency, model support, or security review? I really want to know.

I run a free 30-min stack audit for DACH founders building AI in regulated markets. DM me on LinkedIn or write to @ger_dennis_ai.

Ready to build?

Turn your process into an AI system

Fixed price. Production quality. DACH B2B focus.

Start a project → ← All articles