Avanzado 11 minServidores

LocalAI: API completa de OpenAI, 100 % autoalojada

Respuesta directa

LocalAI (proyecto open-source mudler/LocalAI, licencia MIT) es un servidor de inferencia autoalojado que replica las API de OpenAI, y ahora también las de Anthropic y ElevenLabs, en más de 60 backends (llama.cpp, vLLM, MLX, whisper.cpp, diffusers…). Una sola instancia de Docker sirve texto, embeddings, audio, imágenes y vídeo, con agentes de IA integrados (RAG, MCP, herramientas). Calcula unos 30 minutos para un primer despliegue funcional en una GPU NVIDIA.

LocalAI es un servidor de inferencia de código abierto que expone exactamente las mismas rutas que la API de OpenAI, pero todo funciona en tu máquina. Mientras que Ollama se centra en el chat de texto, LocalAI cubre en una sola API el texto, los embeddings, la transcripción y la síntesis de audio, así como la generación de imágenes. Esta guía muestra cómo desplegarlo en Docker, instalar modelos desde su galería y conectar una aplicación OpenAI existente a LocalAI sin tocar el código.

Por Mohamed Meguedmi·Actualización 2026-09-28·Probado en Windows, macOS y Linux

#¿Por qué LocalAI?

LocalAI (el proyecto mudler/LocalAI en GitHub, bajo licencia MIT, creado y mantenido por Ettore Di Giacinto y el equipo LocalAI) se presenta como un « reemplazo directo » de la API de OpenAI. Concretamente, tus solicitudes hacia /v1/chat/completions, /v1/embeddings, /v1/audio/transcriptions, /v1/audio/speech o /v1/images/generations van hacia un servidor que tú alojas, en lugar de los servidores de OpenAI. Ningún token abandona tu red, no hay facturación por uso, no hay límites de uso.

El interés real de LocalAI no es ejecutar un chat más: es unificar varias modalidades detrás de un único endpoint compatible. Una misma instancia sirve un LLM para texto, un modelo de embeddings para tu RAG, Whisper para la transcripción, Stable Diffusion para imágenes, y ahora modelos de video. Para una aplicación que necesita varias piezas, evita ensamblar y mantener tres o cuatro servidores separados, cada uno con su propia API que aprender.

API compatible con OpenAI
Las mismas rutas, los mismos payloads JSON. Tus SDK oficiales (openai-python, openai-node) funcionan cambiando únicamente la URL base.
Multi-backend
LocalAI se basa en llama.cpp (GGUF), whisper.cpp, diffusers, piper y otros según el modelo. No necesitas instalarlos uno a uno.
Multimodal
Texto, embeddings, audio (STT + TTS) e imágenes en la misma instancia, cada uno en su ruta de la API de OpenAI.
100 % local
Funciona sin conexión una vez descargados los modelos. Sin telemetría de inferencia ni dependencia de la nube.
i
Pesos abiertos, no magia
LocalAI es un servidor, no un modelo. La calidad de salida depende completamente de los modelos de pesos abiertos que cargues en él y de tu VRAM. Un GGUF Q4_K_M de 7B sigue siendo un 7B, tanto si lo sirves mediante Ollama como mediante llama.cpp o LocalAI.

El proyecto se ha ampliado significativamente a lo largo de las versiones desde su descripción inicial como simple clon de la API de OpenAI. Su compatibilidad 'drop-in' cubre ahora también las API de Anthropic y ElevenLabs, en cada uno de sus backends. Es compatible con más de 60 backends —llama.cpp, vLLM, SGLang, transformers, whisper.cpp, diffusers, MLX y MLX-VLM para Apple Silicon, entre otros—, que se pueden instalar sobre la marcha desde una galería de backends, sin necesidad de incluirlos todos de antemano en una sola imagen.

LocalAI también integra agentes de IA autónomos con uso de herramientas, RAG y soporte del protocolo MCP, así como un modo multiusuario con autenticación mediante clave API, cuotas y control de acceso por rol. La versión 4.1.0 (abril de 2026) añadió un modo de clúster distribuido con enrutamiento inteligente según la VRAM disponible y autoescalado; la 4.2.0 (mayo de 2026) añadió reconocimiento de voz y facial, diarización de hablantes, una API compatible con Ollama y generación de vídeo.


#LocalAI o Ollama, según la necesidad

El kit de IA Local

Tu ChatGPT privado y gratuito en tu máquina en 1 hora — LM Studio, Ollama, Open WebUI, tus documentos, sin nube.

  • Espacio en línea de por vida
  • PDF + archivos
  • Reembolsado 30 j

Los dos ejecutan GGUF a través de llama.cpp y exponen una API compatible con OpenAI para texto. La diferencia está en el alcance y la filosofía. Ollama busca la simplicidad para el texto (y algo de visión) con una CLI sencilla; LocalAI busca una cobertura amplia —varias modalidades, más backends, más ajustes y agentes integrados— a costa de tener que preparar una configuración considerablemente más extensa.

LocalAI o Ollama, comparativo rápido
CriterioOllamaLocalAI
Primeros pasosInmediata (« ollama run »)Mayor verbosidad, YAML del modelo
ModalidadesTexto (y un poco de visión)Texto, embeddings, audio, imágenes, video
API compatiblesOpenAIOpenAI, Anthropic, ElevenLabs
Backendsllama.cpp principalmente60+ backends (llama.cpp, vLLM, SGLang, MLX…)
Agentes / MCPNo nativoAgentes integrados con RAG y MCP
Multi-utilisateursNo nativoClave API, cuotas, roles
Ecosistema de interfacesMuy completoMás restringido
Buena opción siChat de texto simple y rápidoVarias modalidades en una misma API

No hay nada que impida ejecutar los dos en la misma máquina: Ollama para el chat interactivo diario, LocalAI como puente multimodal para tus aplicaciones que necesiten embeddings, audio o imágenes a través de la misma API.

→
Lo recomendable
Si lo único que necesitas es «conversar con un LLM local», quédate con Ollama: es más sencillo. Pásate a LocalAI en cuanto «embeddings», «transcripción» o «generación de imágenes» figuren entre los requisitos.

#Prerrequisitos

La forma más limpia de desplegar LocalAI es mediante Docker, con una imagen específica para tu hardware. Prevé la memoria necesaria según los modelos que quieras usar: al final, la VRAM (o la RAM si utilizas solo la CPU) determina qué modelos podrás servir realmente.

Docker
Docker Engine o Docker Desktop reciente. Docker Compose se recomienda para un despliegue reproducible.
GPU (opcional)
NVIDIA con el NVIDIA Container Toolkit para la aceleración CUDA 12 o 13. LocalAI también ofrece aceleración con AMD (ROCm), Intel (oneAPI/SYCL) y Apple Silicon (Metal), con Vulkan como alternativa genérica cuando ninguna de estas vías es aplicable. Sin GPU, todo se ejecuta en la CPU, más lentamente.
VRAM por tamaño (Q4)
3B ≈ 2 GB · 7B ≈ 5 GB · 14B ≈ 9 GB · 32B ≈ 19 GB · 70B ≈ 40 GB. Añade margen para un modelo de embeddings y/o Whisper si los sirves en paralelo.
Referencias de GPU
Una RTX 3060 de 12 GB (gama de entrada) o una RTX 4070 de 12 GB permiten ejecutar cómodamente un modelo de 7-14B; una RTX 4090 de 24 GB o un Mac M4 Pro con 24-48 GB de memoria unificada permiten aspirar a modelos más grandes.
Espacio en disco
Cada modelo pesa varios GB, a veces más para imágenes o vídeo. Prevé un volumen dedicado para no tener que volver a descargar nada cada vez que se reinicie el contenedor.

#Desplegar LocalAI en Docker

  1. 01
    Iniciar un contenedor de prueba
    La orden más rápida arranca LocalAI y expone la API en el puerto 8080. Usa la imagen « -gpu-nvidia-cuda-12 » (o « -cuda-13 » en los controladores más recientes) si tienes una tarjeta NVIDIA, o la imagen CPU por defecto en caso contrario.
  2. 02
    Verificar que la API responde
    Una vez que el contenedor esté listo, la ruta /v1/models debe devolver la lista (vacía al principio) en formato OpenAI. Es el indicio de que el servidor está bien conectado al puerto 8080.
  3. 03
    Guardar los modelos de forma persistente
    Monta un volumen en /models (o /build/models según la imagen) para que los modelos descargados se conserven tras el reinicio. Sin volumen, todo se vuelve a descargar cada vez que se ejecuta «docker run».
  4. 04
    Migrar a Docker Compose
    Para un uso duradero, describe el servicio en un docker-compose.yml: imagen, puertos, volumen y reserva de GPU. Lo reinicias todo con un «docker compose up -d».
Terminal — arranque rápido (CPU)
# Lance LocalAI, API OpenAI-compatible sur le port 8080
docker run -p 8080:8080 --name localai \
  -v $PWD/models:/models \
  localai/localai:latest

# Version GPU NVIDIA (CUDA 12) :
# docker run -p 8080:8080 --gpus all \
#   -v $PWD/models:/models \
#   localai/localai:latest-gpu-nvidia-cuda-12

# Version GPU NVIDIA (CUDA 13, plus récente) :
# docker run -p 8080:8080 --gpus all \
#   -v $PWD/models:/models \
#   localai/localai:latest-gpu-nvidia-cuda-13
docker-compose.yml
services:
  localai:
    image: localai/localai:latest-gpu-nvidia-cuda-12
    container_name: localai
    ports:
      - "8080:8080"
    volumes:
      - ./models:/models
    environment:
      - DEBUG=true
    deploy:
      resources:
        reservations:
          devices:
            - driver: nvidia
              count: all
              capabilities: [gpu]
    restart: unless-stopped
Terminal — verificar
# La route est identique à celle d'OpenAI
curl http://localhost:8080/v1/models
!
No lo expongas sin protección en Internet
Por defecto, LocalAI escucha sin autenticación. Si necesitas acceder a él a distancia, colócalo detrás de un proxy inverso (autenticación + TLS) o una VPN y activa una clave de API. Una API de inferencia abierta ofrece recursos de cálculo a cualquiera.

#Instalar un modelo desde la galería

LocalAI ofrece una galería de modelos preconfigurados, accesible también mediante «local-ai models list» en línea de comandos o en models.localai.io: cada entrada incluye el backend adecuado, la plantilla del prompt y los parámetros por defecto. Puedes instalar un modelo por su nombre a través de la API, sin tener que escribir YAML manualmente.

Terminal — instalar mediante la API
# Installe un modèle de la galerie (nom d'exemple)
curl http://localhost:8080/models/apply -H "Content-Type: application/json" -d '{
  "id": "[email protected]"
}'

# Suivre l'avancement du téléchargement
curl http://localhost:8080/models/jobs

Para un control total, también puedes definir manualmente un modelo en un archivo YAML colocado en el directorio /models. Este archivo describe el nombre expuesto por la API, el backend y el archivo de pesos a cargar.

models/qwen.yaml
name: qwen2.5-7b
backend: llama-cpp
parameters:
  model: qwen2.5-7b-instruct-q4_k_m.gguf
context_size: 8192
template:
  chat: |
    <|im_start|>system
    {{.SystemPrompt}}<|im_end|>
    {{.Input}}
→
El nombre = el campo «model»
El «name» de tu YAML (o de la entrada de la galería) es exactamente el valor que debes introducir en el campo «model» de tus solicitudes. Es lo que sustituye a «gpt-4o-mini» cuando migras una aplicación.

#Una sola API para texto, embeddings, audio e imágenes

Es aquí donde LocalAI se destaca. Cada modalidad sigue su ruta estándar de OpenAI; basta con haber instalado el modelo adecuado para cada una. Aquí tienes las cuatro piezas más útiles.

Terminal — chat (texto)
curl http://localhost:8080/v1/chat/completions -H "Content-Type: application/json" -d '{
  "model": "qwen2.5-7b",
  "messages": [{"role": "user", "content": "Explique le RAG en une phrase."}]
}'
Terminal — embeddings (RAG)
curl http://localhost:8080/v1/embeddings -H "Content-Type: application/json" -d '{
  "model": "bert-embeddings",
  "input": "Texte à vectoriser pour ma base vectorielle"
}'
Terminal — transcripción (Whisper)
curl http://localhost:8080/v1/audio/transcriptions \
  -H "Content-Type: multipart/form-data" \
  -F file="@reunion.wav" \
  -F model="whisper-1"
Terminal — generación de imagen
curl http://localhost:8080/v1/images/generations -H "Content-Type: application/json" -d '{
  "model": "stablediffusion",
  "prompt": "un phare breton sous la pluie, aquarelle",
  "size": "512x512"
}'
i
Cargar modelos consume VRAM
Servir texto + embeddings + Whisper + Stable Diffusion al mismo tiempo suma sus necesidades de memoria. LocalAI puede retirar de la memoria los modelos inactivos (idle timeout) para liberar VRAM, pero en una tarjeta de 12 GB, alterna las cargas pesadas en lugar de mantenerlo todo en memoria.

#Migrar una app OpenAI sin cambiar el código

Como las rutas y los payloads son idénticos, migrar una aplicación consiste en cambiar la URL base a la que apunta y sustituir los nombres de los modelos. Los SDK oficiales aceptan una base_url personalizada: es el único parámetro que hay que modificar, tanto si la aplicación apunta a la API de OpenAI como a la de Anthropic o a la de ElevenLabs.

Python — SDK de OpenAI conectado a LocalAI
from openai import OpenAI

client = OpenAI(
    base_url="http://localhost:8080/v1",  # au lieu de l'endpoint OpenAI
    api_key="sk-localai",                 # ignorée si l'auth n'est pas activée
)

resp = client.chat.completions.create(
    model="qwen2.5-7b",                    # au lieu de "gpt-4o-mini"
    messages=[{"role": "user", "content": "Bonjour !"}],
)
print(resp.choices[0].message.content)
Node.js — mismo principio
import OpenAI from "openai";

const client = new OpenAI({
  baseURL: "http://localhost:8080/v1",
  apiKey: "sk-localai",
});

const resp = await client.chat.completions.create({
  model: "qwen2.5-7b",
  messages: [{ role: "user", content: "Bonjour !" }],
});
console.log(resp.choices[0].message.content);
URL base
Reemplaza el endpoint OpenAI por http://votre-hote:8080/v1. A menudo solo una variable de entorno OPENAI_BASE_URL.
Nombres de modelos
« gpt-4o » → el nombre de tu modelo local. Es el principal ajuste que debes hacer en el código o en la configuración.
Clave de API
Opcional en local; introduce cualquier valor si el SDK lo exige, o configura una clave real en LocalAI.
Diferencias de comportamiento
Un modelo local de 7B no razona como GPT-4. Ajusta tus prompts y expectativas en lugar de asumir una paridad de calidad.

#Solución de problemas

El contenedor se inicia lentamente en el primer lanzamiento
Las imágenes de LocalAI y la primera descarga del modelo son voluminosas. Es normal; los siguientes arranques son rápidos si el volumen /models es persistente.
« model not found »
El campo «model» de la solicitud debe coincidir exactamente con el «name» de la galería o del YAML. Revísalo con «curl /v1/models».
Sin aceleración GPU
Asegúrate de usar una imagen « -gpu-nvidia-cuda-12 » (o « -cuda-13 »), instala el NVIDIA Container Toolkit y pasa « --gpus all ». Activa DEBUG=true para ver el backend realmente seleccionado.
Respuestas lentas o OOM
El modelo supera la capacidad de tu VRAM y pasa a ejecutarse parcialmente en la CPU con la RAM del sistema. Baja un nivel (Q4_K_M en lugar de Q8_0, o un modelo más pequeño) o reduce context_size.
Una modalidad no responde
Cada ruta requiere su modelo: no hay embeddings sin modelo de embeddings instalado, no hay /audio sin modelo Whisper. Instala la pieza faltante desde la galería.

#Para ir más allá

LocalAI es solo uno de los servidores de inferencia para modelos de pesos abiertos del ecosistema. Para elegir con conocimiento de causa, compáralo con llama-server (el servidor HTTP de llama.cpp) y con el enfoque de Ollama, y afina el equilibrio entre memoria y calidad de tus modelos con la guía sobre cuantización. Después, conecta una interfaz o una aplicación a LocalAI mediante su endpoint OpenAI.


#FAQ

¿Es LocalAI gratuito?+
Sí, es de código abierto bajo licencia MIT y se puede auto-hospedar sin costo de licencia, incluso para uso profesional o comercial. Los únicos costos reales son el hardware que ejecuta los modelos y la electricidad consumida, como en cualquier servidor de inferencia local que estés ejecutando tú mismo.
¿LocalAI gestiona otras API además de la de OpenAI?+
Sí, desde sus versiones recientes. Su compatibilidad «drop-in» cubre ahora también las API de Anthropic y ElevenLabs en cada backend, además de OpenAI, lo que amplía significativamente el número de aplicaciones que se pueden conectar a LocalAI sin reescribir su código cliente existente, incluidas herramientas diseñadas originalmente para esos proveedores específicos de servicios en la nube.
¿Qué diferencia hay entre LocalAI y Ollama?+
Ambos exponen una API compatible con OpenAI para texto mediante llama.cpp y son fáciles de empezar a usar. LocalAI va mucho más allá: más de 60 backends, embeddings, audio, imágenes, video, agentes con MCP y RAG, y un modo multiusuario, a cambio de una configuración más extensa que la de Ollama.
¿Es LocalAI seguro por defecto si se expone en Internet?+
No, tras la instalación, la API escucha sin autenticación obligatoria de forma predeterminada. El proyecto ofrece ahora autenticación mediante clave API, cuotas y control de acceso por rol, pero debes activarlos explícitamente; sin ello, coloca siempre LocalAI detrás de un proxy inverso o una VPN.
¿Se necesita una GPU para LocalAI?+
No, LocalAI también funciona solo con CPU, aunque la inferencia es más lenta. Una GPU de NVIDIA, AMD, Intel o Apple Silicon (a través de Metal) acelera considerablemente el proceso; el proyecto admite estas cuatro familias de hardware, además de Vulkan como alternativa genérica compatible con varios fabricantes, y Jetson L4T para los sistemas embebidos de NVIDIA.

¿Esta guía te ha ayudado?

¿Un comentario, un error, una precisión? Avísanos, eso mejora la guía para todos.