Un agente ultraligero, auto-gestionado y open-source que corre en tu terminal, WebUI o Telegram
nanobot (46K ⭐ en GitHub) es un framework de agente IA personal ultraligero escrito en Python.
Este curso te enseña a instalarlo, configurarlo y extenderlo: desde tu primer nanobot webui
hasta desplegarlo en Telegram, conectarle herramientas MCP, darle memoria persistente y
crear automatizaciones programadas. Todo con un core tan pequeño que puedes leerlo entero.
nanobot es un framework de agente de IA personal, ultraligero, auto-gestionado y 100% open-source, creado por el equipo de HKUDS. Está escrito en Python puro y su core es tan pequeño y legible que puedes entenderlo completo en una tarde.
| Característica | nanobot | Dify | LangChain |
|---|---|---|---|
| Peso | Ultraligero (~pip install) | Docker pesado | Biblioteca |
| Core legible | ✅ Python simple y documentado | ❌ Monolito complejo | ❌ Abstracciones densas |
| WebUI incluida | ✅ Integrada en el wheel | ✅ | ❌ |
| Chat apps nativas | Telegram, Discord, Slack, WeChat | Solo API | Vía integraciones |
| Memoria persistente | Dream (memoria a largo plazo) | Sesiones | Módulo separado |
| Automatizaciones | ✅ Cron-style integrado | ❌ | ❌ |
| MCP | ✅ Nativo | ✅ Nativo | Vía adapter |
| Python SDK | ✅ Nativo | API REST | SDK principal |
nanobot es ideal si quieres un agente personal que corra en tu máquina, sin Docker, sin infraestructura cloud, y con total control sobre tu código y datos. Es como tener tu propio ChatGPT pero corriendo localmente, con herramientas y memoria.
nanobot se instala con un solo comando. Necesitas Python 3.11+.
# macOS / Linux
curl -fsSL https://raw.githubusercontent.com/HKUDS/nanobot/main/scripts/install.sh | sh
# Windows PowerShell
irm https://raw.githubusercontent.com/HKUDS/nanobot/main/scripts/install.ps1 | iex
uv tool install nanobot-ai
python -m pip install nanobot-ai
git clone https://github.com/HKUDS/nanobot.git
cd nanobot
python -m pip install .
Si pip te da externally-managed-environment, usa el instalador automático, uv tool install o crea un virtualenv primero: python -m venv .venv && source .venv/bin/activate.
Verifica la instalación:
nanobot --version
nanobot ofrece tres formas de interactuar. Empieza con la WebUI:
nanobot webui
Esto abre http://127.0.0.1:8765 en tu navegador. Desde ahí:
Holananobot agent
Modo chat en terminal. Type exit o Ctrl+C para salir.
nanobot agent -m "¿Qué puedes hacer?"
Usa nanobot webui --background para que el agente siga corriendo después de cerrar el terminal. Así tus automatizaciones y canales de chat siguen activos 24/7.
nanobot es agnóstico de modelos. Puedes usar cualquier API compatible con OpenAI, modelos locales con Ollama, o incluso combinar varios con fallback automático.
| Proveedor | Comando de configuración | Modelos típicos |
|---|---|---|
| OpenAI | API key en Settings → Models | GPT-4o, GPT-4, GPT-3.5 |
| Anthropic | API key en Settings → Models | Claude 3.5 Sonnet, Haiku |
| Ollama (local) | ollama pull llama3.1 | Llama 3.1, Mistral, Qwen |
| Groq | API key gratuita | Llama 3 (70B), Mixtral |
| OpenAI-compatible | URL + API key | vLLM, TextGen, LocalAI |
# Ejemplo de configuración en YAML (~/.nanobot/config.yaml)
providers:
default: openai
openai:
api_key: sk-...
model: gpt-4o
ollama:
base_url: http://localhost:11434/v1
model: llama3.1
fallback:
- ollama
- groq
Configura un fallback chain para que si OpenAI falla (rate limit, caída), nanobot use automáticamente Ollama o Groq. Así tu agente nunca se queda sin respuesta.
nanobot viene con un conjunto de herramientas integradas que el agente puede invocar automáticamente según la tarea.
| Herramienta | Qué hace |
|---|---|
| web_search | Busca en Google/Bing y extrae resultados |
| web_fetch | Descarga y parsea el contenido de una URL |
| shell | Ejecuta comandos del sistema |
| files | Lee y escribe archivos en el workspace |
| image_gen | Genera imágenes con DALL·E o Stable Diffusion |
| cron | Programa tareas periódicas |
| mcp | Conecta cualquier servidor MCP |
| subagent | Delega tareas a subagentes |
# Configuración en config.yaml
mcp_servers:
filesystem:
command: npx
args: ["-y", "@modelcontextprotocol/server-filesystem", "/ruta"]
github:
command: npx
args: ["-y", "@modelcontextprotocol/server-github"]
env:
GITHUB_TOKEN: ghp_...
Las herramientas shell y files pueden ejecutar comandos en tu sistema. Por defecto nanobot restringe el shell a comandos seguros y el filesystem al workspace. No deshabilites estas restricciones en producción.
Dream es el sistema de memoria a largo plazo de nanobot. A diferencia de la memoria de contexto (que se pierde entre sesiones), Dream persiste información relevante entre conversaciones.
# Ver el estado de la memoria
nanobot memory status
# Buscar recuerdos específicos
nanobot memory search "configuración del proyecto X"
# Limpiar memoria
nanobot memory clear --confirm
Dream es ideal para construir un asistente personal que te conoce: preferencias, proyectos activos, contactos frecuentes. Cuanto más interactúas, mejor te entiende.
nanobot permite crear subagentes: agentes especializados a los que el agente principal puede delegar tareas específicas.
# Configurar subagente en config.yaml
subagents:
research:
model: gpt-4o
tools: [web_search, web_fetch]
instructions: >
Eres un investigador. Busca información verificada
y devuelve un resumen estructurado con fuentes.
coder:
model: claude-3.5-sonnet
tools: [shell, files]
instructions: >
Eres un programador experto en Python.
Escribe código limpio y bien documentado.
No crees demasiados subagentes sin pruebas. Empieza con 1-2 subagentes especializados y añade más solo cuando el flujo principal lo requiera. Demasiados subagentes pueden degradar el rendimiento y aumentar el coste en tokens.
nanobot incluye un sistema de automatizaciones integrado que te permite programar tareas periódicas sin necesidad de cron externo.
# Desde la WebUI: Settings → Automations → New Automation
# O desde config.yaml:
automations:
- name: resumen-diario
schedule: "0 9 * * 1-5" # Lunes a viernes a las 9am
prompt: >
Revisa las últimas noticias de IA y escribe un resumen
de 3 puntos clave. Guárdalo en ~/noticias/resumen-[fecha].md
workspace: personal
- name: health-check
schedule: "*/30 * * * *" # Cada 30 minutos
prompt: >
Verifica que el servidor web responde en localhost:8080.
Si no responde, ejecuta: systemctl restart nginx
workspace: admin
Usa el workspace adecuado para cada automatización. Crea un workspace admin para tareas de mantenimiento y otro personal para tu asistente diario. Así cada automatización tiene su propio contexto y herramientas.
Una de las características más potentes de nanobot es poder conectarlo a aplicaciones de chat para interactuar con tu agente desde el móvil.
# 1. Crea un bot con @BotFather en Telegram
# 2. Obtén el token del bot
# 3. Configura en config.yaml:
channels:
telegram:
bot_token: "123456:ABC-DEF1234ghIkl-zyx57W2v1u123ew11"
allowed_users:
- "tu_username"
commands:
- /resume: "Haz un resumen de los últimos 10 mensajes"
- /search: "Busca en mi memoria: {query}"
# 4. Inicia el gateway
nanobot gateway --background
# Configuración para Discord
channels:
discord:
bot_token: "tu_token_discord"
server_id: "123456789"
channel_ids:
- "987654321"
commands:
- /ask: "Pregunta a nanobot: {query}"
Usa nanobot gateway status para verificar que todos los canales están conectados. Si un canal falla, el resto sigue funcionando: nanobot aísla los errores por canal.
nanobot expone una API compatible con OpenAI y un Python SDK para integrarlo en tus propias aplicaciones.
# Una vez que el gateway corre en localhost:8765
curl http://localhost:8765/v1/chat/completions \
-H "Content-Type: application/json" \
-d '{
"model": "gpt-4o",
"messages": [
{"role": "user", "content": "¿Qué tiempo hace hoy?"}
],
"tools": ["web_search"]
}'
from nanobot import Nanobot
# Inicializar agente
bot = Nanobot(config_path="~/.nanobot/config.yaml")
# Chat simple
respuesta = bot.chat("Organiza mi agenda de hoy")
print(respuesta)
# Con herramientas
respuesta = bot.chat(
"Busca ofertas de vuelo a Londres",
tools=["web_search", "web_fetch"]
)
# Programar tarea
bot.schedule(
name="informe-semanal",
cron="0 10 * * 1",
task="Genera un informe de métricas de la semana"
)
# Docker
docker run -d \
--name nanobot \
-v ~/.nanobot:/home/nanobot/.nanobot \
-p 8765:8765 \
hkuds/nanobot
# O como servicio systemd (Linux)
nanobot deploy --service
En producción, nunca expongas el gateway a Internet sin autenticación. Usa un proxy inverso (nginx, Caddy) con autenticación básica o un firewall que solo permita conexiones desde tu IP. El WebUI por defecto solo escucha en localhost.
Sí, si usas modelos locales con Ollama o llama.cpp. Las herramientas como web_search requieren Internet, pero el core del agente, la memoria y las automatizaciones funcionan offline.
El proceso principal consume ~50-150 MB sin contar el modelo LLM. Si usas modelos locales, el consumo depende del modelo (Llama 3.1 8B: ~6 GB RAM, GPT-4o vía API: solo los ~100 MB del proceso).
Sí. Usa workspaces para separar contextos: un workspace "trabajo" con herramientas profesionales, otro "personal" con recordatorios y otro "dev" para programación. Cada uno tiene su propia memoria, herramientas y configuración de modelo.
100% open-source bajo licencia MIT. Gratis para siempre. Solo pagas por los APIs de modelos que uses (OpenAI, Anthropic) o nada si usas modelos locales.