Motorhead — servidor ligero de memoria de chat sobre Redis
Motorhead es un servidor Rust open source que almacena el historial de chat en Redis, ejecuta un resumidor deslizante y expone una API REST mínima. La forma más simple de añadir "recordar los últimos N turnos + un resumen" a una app LLM.
Why Motorhead
Motorhead es la opción "justo la memoria suficiente". No extrae hechos, no construye un grafo, no soporta acotado de hechos multiusuario. Lo que hace: almacenar mensajes por sesión en Redis, mantener un resumen actualizado para que el historial no explote, y exponer una API REST con dos endpoints. Eso es todo.
El proyecto fue construido originalmente por Metal (una startup de RAG) y todavía recibe mantenimiento para bug fixes pero sin grandes novedades. Úsalo cuando necesites memoria de chat hoy, no quieras operar Postgres y encuentres Zep o mem0 más pesados de lo que el problema pide.
El coste de la simplicidad: sin memoria cross-sesión. El historial de ayer de un usuario no influye en la conversación de hoy salvo que enlaces manualmente las sesiones. Para chatbots de sesión única está bien; para asistentes que acumulan conocimiento de usuario, te quedarás corto con Motorhead.
Quick Start — Docker Compose + HTTP
Motorhead ejecuta el resumen automáticamente en cuanto una sesión supera un presupuesto de Token configurable. Siempre obtienes (a) los mensajes más recientes literales y (b) una cadena de resumen que cubre todo lo más antiguo. Inyecta ambos en tu prompt LLM.
# docker-compose.yml
# services:
# redis: { image: redis/redis-stack:latest, ports: ["6379:6379"] }
# motorhead:
# image: ghcr.io/getmetal/motorhead:latest
# ports: ["8080:8080"]
# environment:
# OPENAI_API_KEY: sk-...
# REDIS_URL: redis://redis:6379
# depends_on: [redis]
# Start the stack
docker compose up -d
# Append messages to a session
curl -X POST http://localhost:8080/sessions/s1/memory \
-H "content-type: application/json" \
-d '{"messages":[
{"role":"user","content":"I want a vegan dinner recipe"},
{"role":"assistant","content":"How about a chickpea curry?"}
]}'
# Fetch memory for the next LLM call
curl http://localhost:8080/sessions/s1/memory
# => { "messages": [...last N turns...], "context": "<running summary>" }Características clave
Almacenamiento solo Redis
Sin Postgres, sin dependencia de vector DB. Redis escala horizontalmente; Motorhead escala trivialmente detrás de un load balancer.
Resumen deslizante
Cuando una sesión supera ~1K Token, Motorhead pide a un LLM resumir los turnos antiguos y conserva el resumen + los mensajes recientes. Ventana configurable.
API REST minúscula
Dos endpoints: POST messages, GET memory. Sin SDK requerido — funciona desde cualquier lenguaje con un cliente HTTP.
Agnóstico al lenguaje
Como la API es solo HTTP, la usas igual desde Python, Node, Go, Rust, Elixir. Trivial de conectar a backends de chat existentes.
Open source
Licencia Apache 2.0; self-host donde sea que corra Docker. Sin oferta gestionada (usa Upstash o el Redis gestionado de tu cloud para la infra).
Bajo overhead operativo
Un solo binario Rust + Redis. Sin workers en segundo plano, sin migraciones de esquema. Corre cómodamente en una pequeña VM para miles de sesiones concurrentes.
Comparación
| Scope | Storage | Cross-session memory | Operational complexity | |
|---|---|---|---|---|
| Motorheadesta | Per-session only | Redis | No | Very low |
| Zep | Per-session + per-user facts | Postgres + pgvector | Yes | Medium |
| mem0 | Per-user facts | Vector DB of choice | Yes | Low-medium |
| LangMem | Per-thread (LangChain) | LangChain-backed | Opt-in | Low |
Casos de uso
01. Chatbots de sesión única
Widgets de soporte al cliente, bots de onboarding o asistentes helpdesk donde cada conversación es independiente. Motorhead te da "recordar los últimos 30 minutos" barato.
02. Prototipos y MVPs
Cuando quieres memoria funcional en una tarde sin levantar Postgres y una historia de migración. Salta a Zep o mem0 una vez que el prototipo valide.
03. Despliegues edge o sensibles a privacidad
Redis + Motorhead corre en una sola VM pequeña, on-prem o en la infra de un cliente. La ausencia de dependencia de vector DB mantiene la superficie de ataque reducida.
Precios y licencia
Motorhead: open source Apache 2.0, solo self-host. Sin oferta gestionada.
Coste de infra: una instancia de Redis (un Redis gestionado en Upstash/AWS/Redis Cloud cuesta desde 10 $/mes) + una pequeña VM para el propio Motorhead. Las llamadas LLM de resumen usan tu propia clave de OpenAI/Claude.
Límites de escalado: una sola instancia de Redis maneja cientos de miles de sesiones para tráfico de chat típico. Más allá, shardea por session_id — aplican los patrones estándar de escalado de Redis.
Preguntas frecuentes
Motorhead vs Zep — ¿cuál usar?+
Motorhead cuando las sesiones son independientes y quieres el stack lo más pequeño posible. Zep cuando necesitas memoria a nivel de usuario, búsqueda híbrida o la UI web. Zep es un superconjunto de lo que hace Motorhead.
¿Motorhead soporta múltiples usuarios?+
Indirectamente — puedes usar session_id = "${user_id}:${thread_id}". No hay un concepto de usuario de primer nivel, así que los hechos de usuario cross-sesión requieren otra capa por encima.
¿Puedo correrlo sin OpenAI?+
Sí. Apunta SUMMARIZER_API_BASE a cualquier endpoint compatible con OpenAI (Ollama, vLLM, LM Studio, LiteLLM). El resumen es el único trabajo LLM que hace Motorhead, y es configurable.
¿Sigue manteniéndose Motorhead?+
Recibe bug fixes ocasionales pero está efectivamente feature-frozen. El foco del equipo ha cambiado. Para proyectos nuevos considera Zep o mem0, pero Motorhead sigue siendo una opción sólida de stack pequeño si valoras su minimalismo.
¿Cómo migrar fuera de Motorhead después?+
Como los datos son solo claves de Redis ({session_id}:messages y {session_id}:context), la exportación es directa: SCAN + GET. Importa en Zep o mem0 reproduciendo los mensajes a través de sus APIs de ingesta respectivas.