Retrato de Santiago Fernández

CubeLabs

IA · Fintech · Agentes · Automatización
🧠 IA

nanobot: Construye tu Agente Personal de IA con Python

Un agente ultraligero, auto-gestionado y open-source que corre en tu terminal, WebUI o Telegram

⏱ 45 min 📊 Principiante 📝 10 lecciones

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 - Agente Personal de IA
nanobot · Framework de agente personal IA ultraligero (HKUDS)

Contenido

  1. ¿Qué es nanobot y por qué es diferente?
  2. Instalación en 3 minutos
  3. Tu primera conversación: WebUI y terminal
  4. Configuración de modelos y proveedores
  5. Herramientas: web, archivos, shell y MCP
  6. Memoria persistente con Dream
  7. Multi-agente: subagentes y delegación
  8. Automatizaciones programadas (cron-style)
  9. Conectar nanobot a Telegram y Discord
  10. Despliegue, API y Python SDK

1. ¿Qué es nanobot y por qué es diferente?

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.

nanobot vs. otras plataformas de agentes

CaracterísticananobotDifyLangChain
PesoUltraligero (~pip install) Docker pesadoBiblioteca
Core legible✅ Python simple y documentado❌ Monolito complejo❌ Abstracciones densas
WebUI incluida✅ Integrada en el wheel✅❌
Chat apps nativas Telegram, Discord, Slack, WeChatSolo APIVía integraciones
Memoria persistente Dream (memoria a largo plazo)SesionesMódulo separado
Automatizaciones✅ Cron-style integrado❌❌
MCP✅ Nativo✅ NativoVía adapter
Python SDK✅ NativoAPI RESTSDK principal
💡 Tip

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.

2. Instalación en 3 minutos

nanobot se instala con un solo comando. Necesitas Python 3.11+.

Opción 1: Instalador automático (recomendado)

# 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

Opción 2: Con uv (rápido y limpio)

uv tool install nanobot-ai

Opción 3: Con pip

python -m pip install nanobot-ai

Opción 4: Desde fuente (para desarrolladores)

git clone https://github.com/HKUDS/nanobot.git
cd nanobot
python -m pip install .
⚠️ Error común

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

3. Tu primera conversación: WebUI y terminal

nanobot ofrece tres formas de interactuar. Empieza con la WebUI:

WebUI (recomendado para empezar)

nanobot webui

Esto abre http://127.0.0.1:8765 en tu navegador. Desde ahí:

Terminal interactivo

nanobot agent

Modo chat en terminal. Type exit o Ctrl+C para salir.

Consulta rápida (one-shot)

nanobot agent -m "¿Qué puedes hacer?"
💡 Tip

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.

4. Configuración de modelos y proveedores

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.

Proveedores soportados

ProveedorComando de configuraciónModelos típicos
OpenAIAPI key en Settings → ModelsGPT-4o, GPT-4, GPT-3.5
AnthropicAPI key en Settings → ModelsClaude 3.5 Sonnet, Haiku
Ollama (local)ollama pull llama3.1Llama 3.1, Mistral, Qwen
GroqAPI key gratuitaLlama 3 (70B), Mixtral
OpenAI-compatibleURL + API keyvLLM, 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
💡 Tip

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.

5. Herramientas: web, archivos, shell y MCP

nanobot viene con un conjunto de herramientas integradas que el agente puede invocar automáticamente según la tarea.

Herramientas nativas

HerramientaQué hace
web_searchBusca en Google/Bing y extrae resultados
web_fetchDescarga y parsea el contenido de una URL
shellEjecuta comandos del sistema
filesLee y escribe archivos en el workspace
image_genGenera imágenes con DALL·E o Stable Diffusion
cronPrograma tareas periódicas
mcpConecta cualquier servidor MCP
subagentDelega tareas a subagentes

Conectar un servidor MCP

# 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_...
⚠️ Seguridad

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.

6. Memoria persistente con Dream

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.

Cómo funciona Dream

# 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
💡 Tip

Dream es ideal para construir un asistente personal que te conoce: preferencias, proyectos activos, contactos frecuentes. Cuanto más interactúas, mejor te entiende.

7. Multi-agente: subagentes y delegación

nanobot permite crear subagentes: agentes especializados a los que el agente principal puede delegar tareas específicas.

Casos de uso

# 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.
⚠️ Error común

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.

8. Automatizaciones programadas (cron-style)

nanobot incluye un sistema de automatizaciones integrado que te permite programar tareas periódicas sin necesidad de cron externo.

Crear una automatización

# 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
💡 Tip

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.

9. Conectar nanobot a Telegram y Discord

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.

Conexión a Telegram

# 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

Conexión a Discord

# Configuración para Discord
channels:
  discord:
    bot_token: "tu_token_discord"
    server_id: "123456789"
    channel_ids:
      - "987654321"
    commands:
      - /ask: "Pregunta a nanobot: {query}"
💡 Tip

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.

10. Despliegue, API y Python SDK

nanobot expone una API compatible con OpenAI y un Python SDK para integrarlo en tus propias aplicaciones.

API REST (OpenAI-compatible)

# 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"]
  }'

Python SDK

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"
)

Despliegue como servicio

# Docker
docker run -d \
  --name nanobot \
  -v ~/.nanobot:/home/nanobot/.nanobot \
  -p 8765:8765 \
  hkuds/nanobot

# O como servicio systemd (Linux)
nanobot deploy --service
⚠️ Importante

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.

¿nanobot funciona sin conexión a Internet?

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.

¿Cuánto consume nanobot en memoria RAM?

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).

¿Puedo tener varios agentes con diferentes personalidades?

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.

¿nanobot es gratis?

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.