@johpaz/hive-agents 0.0.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md ADDED
@@ -0,0 +1,905 @@
1
+ # Hive 🐝
2
+
3
+ > Tu colmena de agentes IA. Local-first. Multi-canal. Open source. Construido desde Colombia para el mundo.
4
+
5
+ [![npm version](https://img.shields.io/npm/v/@johpaz/hive)](https://www.npmjs.com/package/@johpaz/hive)
6
+ [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
7
+ [![npm downloads](https://img.shields.io/npm/dm/@johpaz/hive)](https://www.npmjs.com/package/@johpaz/hive)
8
+ [![Hecho en Colombia 🇨🇴](https://img.shields.io/badge/Hecho%20en-Colombia-brightgreen)](https://github.com/johpaz/hive)
9
+
10
+ ---
11
+
12
+ ## ¿Qué es Hive?
13
+
14
+ Hive es un Gateway de IA Orquestado — un Enjambre de Agentes Especializados que trabajan juntos bajo la coordinación de un gateway central. A diferencia de un asistente personal único, Hive implementa una arquitectura de enjambre donde múltiples agentes especializados trabajan en equipo.
15
+
16
+ **El problema que resolvemos**: Necesitas un asistente de IA que funcione en múltiples canales (Telegram, Discord, WhatsApp), que pueda ejecutar tareas automáticamente, que respete tu privacidad con datos locales, y que sea extensible con herramientas propias.
17
+
18
+ ---
19
+
20
+ ## Por dentro
21
+
22
+ 51.937 líneas de TypeScript. Sin frameworks de agentes. Sin LangChain. Sin abstracciones intermedias. Todo construido desde cero sobre Bun + SQLite.
23
+
24
+ ```
25
+ Language files blank comment code
26
+ ─────────────────────────────────────────────────────
27
+ TypeScript 434 7671 2683 51937 ← motor, gateway, canales, UI
28
+ Markdown 45 2225 0 8233
29
+ JSON 15 5 0 575
30
+ CSS 1 141 29 450
31
+ YAML 2 35 11 197
32
+ Shell 2 14 5 61
33
+ Dockerfile 1 19 10 38
34
+ ─────────────────────────────────────────────────────
35
+ TOTAL 504 10119 2741 61546
36
+ ```
37
+
38
+ La imagen Docker pesa ~120 MB. El bundle npm pesa ~12 MB. El binario standalone ~50 MB. Todo el runtime cabe en una Raspberry Pi Zero 2W con 512 MB de RAM.
39
+
40
+ ---
41
+
42
+ ## Instalación
43
+
44
+ ### Prerequisito — Bun
45
+
46
+ Hive requiere [Bun](https://bun.sh) como runtime para las opciones de binario y npm. Docker no lo requiere.
47
+
48
+ ```bash
49
+ curl -fsSL https://bun.sh/install | bash
50
+ source ~/.bashrc # o reinicia la terminal
51
+ bun --version # verifica que quedó instalado
52
+ ```
53
+
54
+ ---
55
+
56
+ Elige la opción que mejor se adapte a tu caso:
57
+
58
+ | | Docker | Binario | npm / bun |
59
+ |---|---|---|---|
60
+ | Requiere | Docker | Bun | Bun |
61
+ | Setup | 1 comando | descarga + ejecuta | `bun install -g @johpaz/hive` |
62
+ | Actualizar | `docker compose pull` | descarga nueva versión | `bun install -g @johpaz/hive` |
63
+ | Ideal para | Raspberry Pi, VPS, laptop vieja, VM | uso personal, USB | desarrolladores |
64
+ | Abre navegador | automático (con GUI) / por IP (headless) | automático | automático |
65
+ | Tamaño | ~120 MB imagen | ~50 MB | ~12 MB bundle |
66
+
67
+ ---
68
+
69
+ ### Opción 1 — Docker (Recomendada para servidores y VPS)
70
+
71
+ La forma más rápida. Sin instalar Node, Bun ni dependencias. Solo necesitas Docker.
72
+
73
+ #### Laptop, PC o VM con interfaz gráfica
74
+
75
+ Un solo comando que levanta todo y abre el navegador automáticamente:
76
+
77
+ ```bash
78
+ curl -O https://raw.githubusercontent.com/johpaz/hive/master/docker-compose.yml
79
+ curl -O https://raw.githubusercontent.com/johpaz/hive/master/hive-docker.sh
80
+ chmod +x hive-docker.sh
81
+ ./hive-docker.sh
82
+ ```
83
+
84
+ El script levanta el contenedor, espera a que el gateway esté listo y abre el navegador directamente en `/setup` (primera vez) o en el dashboard (si ya está configurado).
85
+
86
+ #### Raspberry Pi, VPS o servidor headless
87
+
88
+ Sin interfaz gráfica, usa Docker Compose directamente:
89
+
90
+ ```bash
91
+ curl -O https://raw.githubusercontent.com/johpaz/hive/master/docker-compose.yml
92
+ docker compose up -d
93
+ ```
94
+
95
+ Luego accede desde cualquier equipo en la misma red usando la IP del servidor:
96
+
97
+ ```
98
+ http://<ip-del-servidor>:18790
99
+ ```
100
+
101
+ Para conocer la IP del servidor:
102
+
103
+ ```bash
104
+ ip a | grep "inet " | grep -v 127.0.0.1
105
+ ```
106
+
107
+ > **Raspberry Pi tip:** si usas el mismo Pi para todo, `http://raspberrypi.local:18790` suele funcionar sin necesitar la IP.
108
+
109
+ **Con un solo comando** (sin Compose):
110
+
111
+ ```bash
112
+ docker run -d \
113
+ -p 18790:18790 \
114
+ -v hive-data:/root/.hive \
115
+ --name hive \
116
+ --restart unless-stopped \
117
+ johpaz/hive:0.0.3
118
+ ```
119
+
120
+ **Variables de entorno disponibles:**
121
+
122
+ | Variable | Default | Descripción |
123
+ |----------|---------|-------------|
124
+ | `HIVE_HOST` | `0.0.0.0` | Interfaz de red donde escucha el gateway |
125
+ | `HIVE_PORT` | `18790` | Puerto del gateway |
126
+ | `HIVE_AUTH_TOKEN` | — | Token de autenticación (opcional) |
127
+ | `HIVE_LOG_LEVEL` | `info` | Nivel de logs (`debug`, `info`, `warn`, `error`) |
128
+
129
+ **Actualizar a la última versión:**
130
+
131
+ ```bash
132
+ docker compose pull # descarga la imagen más reciente de Docker Hub
133
+ docker compose up -d # reinicia el contenedor con la nueva imagen
134
+ ```
135
+
136
+ Los datos (BD, config, logs) se persisten en el volumen `hive-data` — actualizar no borra tu configuración.
137
+
138
+ **Ver logs en tiempo real:**
139
+
140
+ ```bash
141
+ docker compose logs -f hive
142
+ ```
143
+
144
+ ---
145
+
146
+ #### Acceso a archivos del sistema desde Docker
147
+
148
+ El `docker-compose.yml` monta automáticamente tu home completo dentro del contenedor — sin configuración adicional ni variables de entorno:
149
+
150
+ | Sistema | Path del host | Path dentro del contenedor |
151
+ |---------|--------------|---------------------------|
152
+ | **Linux** | `/home/tu_usuario` | `/host/home` |
153
+ | **macOS** | `/Users/tu_usuario` | `/host/home` |
154
+ | **Windows** | `C:\Users\tu_usuario` | `/host/home` |
155
+
156
+ La variable `${HOME}` la detecta el shell automáticamente al hacer `docker compose up`.
157
+
158
+ **Configurar el workspace en la UI**
159
+
160
+ 1. Abre la UI: `http://localhost:18790`
161
+ 2. Ve a **Configuración del Agente** (o crea tu agente si es la primera vez)
162
+ 3. En el campo **Workspace**, configura el subdirectorio que quieres:
163
+ - `/host/home` — todo tu home
164
+ - `/host/home/Documentos` — solo carpeta Documentos
165
+ - `/host/home/Proyectos` — solo carpeta Proyectos
166
+
167
+ El path se guarda en la base de datos SQLite (`agents.workspace`). A partir de ese momento, todas las operaciones de filesystem del agente están restringidas a ese directorio por seguridad.
168
+
169
+ **Ejemplo de uso:**
170
+
171
+ ```
172
+ Usuario: "Crea un archivo README.md en mi carpeta Proyectos"
173
+ Agente: → Escribe en: /host/home/Proyectos/README.md
174
+ → Que se traduce a: ~/Proyectos/README.md (en tu host)
175
+ ```
176
+
177
+ > **Nota de seguridad:** El agente solo puede acceder al path que configures como workspace. Si configuras `/host/home/Documentos`, no podrá leer `/host/home/Proyectos`.
178
+
179
+ ---
180
+
181
+ #### Docker portable — USB o disco externo
182
+
183
+ Docker también puede viajar en una USB. La clave es exportar la imagen como archivo `.tar` y montar el volumen de datos desde la USB en vez de un volumen gestionado por Docker.
184
+
185
+ **Paso 1 — Exportar la imagen a un archivo**
186
+
187
+ En el equipo donde tienes conexión a internet:
188
+
189
+ ```bash
190
+ # Descargar la imagen si no la tienes
191
+ docker pull johpaz/hive:0.0.3
192
+
193
+ # Exportar a archivo tar (cabe en cualquier USB de 512 MB+)
194
+ docker save johpaz/hive:0.0.3 -o /media/usb/hive-image.tar
195
+ ```
196
+
197
+ **Paso 2 — Crear la estructura en la USB**
198
+
199
+ ```
200
+ /usb/
201
+ ├── hive-image.tar ← imagen Docker exportada (~120 MB)
202
+ ├── docker-compose.yml ← archivo de configuración
203
+ └── datos/ ← directorio de datos de Hive (se crea al primer arranque)
204
+ └── hive.db
205
+ ```
206
+
207
+ Crea el `docker-compose.yml` en la USB con el volumen apuntando a la USB:
208
+
209
+ ```yaml
210
+ services:
211
+ hive:
212
+ image: johpaz/hive:0.0.3
213
+ ports:
214
+ - "18790:18790"
215
+ volumes:
216
+ - ./datos:/root/.hive
217
+ restart: unless-stopped
218
+ ```
219
+
220
+ > La clave es `./datos:/root/.hive` — monta la carpeta `datos/` relativa al `docker-compose.yml`, que está en la USB. Así los datos viajan con la USB, no quedan en el equipo.
221
+
222
+ **Paso 3 — Cargar y ejecutar en cualquier equipo con Docker**
223
+
224
+ ```bash
225
+ # 1. Cargar la imagen desde el archivo (sin internet)
226
+ docker load -i /media/usb/hive-image.tar
227
+
228
+ # 2. Ir al directorio de la USB
229
+ cd /media/usb
230
+
231
+ # 3. Levantar
232
+ docker compose up -d
233
+ ```
234
+
235
+ Abre `http://localhost:18790` en el navegador. Si es la primera vez en ese equipo, muestra el wizard de setup. Si la USB ya tiene datos, carga tu agente directamente.
236
+
237
+ **Detener y llevar la USB a otro equipo:**
238
+
239
+ ```bash
240
+ # Detener el contenedor
241
+ docker compose down
242
+
243
+ # En el otro equipo, volver al Paso 3
244
+ ```
245
+
246
+ > **Nota para Windows:** Docker Desktop usa rutas como `D:\` para la USB. Ajusta el volumen en el `docker-compose.yml` a la letra de tu unidad:
247
+ > ```yaml
248
+ > volumes:
249
+ > - D:\datos:/root/.hive
250
+ > ```
251
+
252
+ **Backup de los datos del contenedor:**
253
+
254
+ ```bash
255
+ # Copiar la BD desde la USB a tu máquina
256
+ cp /media/usb/datos/hive.db ~/backup-hive-$(date +%Y%m%d).db
257
+
258
+ # Restaurar
259
+ cp ~/backup-hive-20260312.db /media/usb/datos/hive.db
260
+ ```
261
+
262
+ **Actualizar la imagen en la USB:**
263
+
264
+ ```bash
265
+ # En un equipo con internet
266
+ docker pull johpaz/hive:latest
267
+ docker save johpaz/hive:latest -o /media/usb/hive-image.tar
268
+
269
+ # Actualizar el tag en docker-compose.yml
270
+ # Luego en cualquier equipo:
271
+ docker load -i /media/usb/hive-image.tar
272
+ docker compose up -d
273
+ ```
274
+
275
+ ---
276
+
277
+ ### Opción 2 — Binario standalone (Sin dependencias)
278
+
279
+ Descarga un ejecutable único para tu plataforma. No requiere Node, Bun ni Docker. Al ejecutarlo, **el navegador se abre automáticamente** en `/setup` (primera vez) o en el dashboard.
280
+
281
+ #### Dónde descargar
282
+
283
+ **Desde la web** — [hiveagents.io](https://www.hiveagents.io/#installation)
284
+ La página detecta tu sistema operativo automáticamente y muestra el botón de descarga correcto. También puedes seleccionar otra plataforma desde el selector.
285
+
286
+ **Desde GitHub Releases** — [github.com/johpaz/hive/releases/latest](https://github.com/johpaz/hive/releases/latest)
287
+ Descarga manual de cualquier plataforma o versión específica.
288
+
289
+ | Plataforma | Archivo | Descarga directa |
290
+ |------------|---------|------------------|
291
+ | Linux x64 | `hive-v0.0.3-linux-x64` | [Descargar](https://github.com/johpaz/hive/releases/latest/download/hive-v0.0.3-linux-x64) |
292
+ | Linux ARM64 (Raspberry Pi, etc.) | `hive-v0.0.3-linux-arm64` | [Descargar](https://github.com/johpaz/hive/releases/latest/download/hive-v0.0.3-linux-arm64) |
293
+ | macOS Apple Silicon (M1/M2/M3/M4) | `hive-v0.0.3-macos-arm64` | [Descargar](https://github.com/johpaz/hive/releases/latest/download/hive-v0.0.3-macos-arm64) |
294
+ | macOS Intel | `hive-v0.0.3-macos-x64` | [Descargar](https://github.com/johpaz/hive/releases/latest/download/hive-v0.0.3-macos-x64) |
295
+ | Windows x64 | `hive-v0.0.3-windows-x64.exe` | [Descargar](https://github.com/johpaz/hive/releases/latest/download/hive-v0.0.3-windows-x64.exe) |
296
+
297
+ > Los links anteriores siempre apuntan a la última versión publicada. Si necesitas una versión específica, visita la [página de releases](https://github.com/johpaz/hive/releases).
298
+
299
+ ---
300
+
301
+ #### Linux x64 / ARM64
302
+
303
+ ```bash
304
+ # 1. Descargar el binario (reemplaza "linux-x64" por "linux-arm64" si es ARM)
305
+ curl -L -o hive https://github.com/johpaz/hive/releases/latest/download/hive-v0.0.3-linux-x64
306
+
307
+ # 2. Dar permisos de ejecución
308
+ chmod +x hive
309
+
310
+ # 3. Descargar la UI web
311
+ curl -L https://github.com/johpaz/hive/releases/latest/download/ui-dist.tar.gz \
312
+ | tar -xz --one-top-level=ui-dist
313
+
314
+ # 4. Colocar la UI donde Hive la espera
315
+ mkdir -p ~/.hive/ui
316
+ cp -r ui-dist/* ~/.hive/ui/
317
+
318
+ # 5. Ejecutar
319
+ ./hive start
320
+ ```
321
+
322
+ El gateway levanta en `http://localhost:18790`. El navegador se abre automáticamente.
323
+
324
+ **Agregar al PATH (opcional)** para ejecutar `hive` desde cualquier directorio:
325
+
326
+ ```bash
327
+ sudo mv hive /usr/local/bin/hive
328
+ hive start
329
+ ```
330
+
331
+ ---
332
+
333
+ #### macOS — Apple Silicon (M1/M2/M3/M4)
334
+
335
+ ```bash
336
+ # 1. Descargar
337
+ curl -L -o hive https://github.com/johpaz/hive/releases/latest/download/hive-v0.0.3-macos-arm64
338
+
339
+ # 2. Dar permisos de ejecución
340
+ chmod +x hive
341
+
342
+ # 3. Quitar la cuarentena de Gatekeeper (necesario en todos los binarios descargados)
343
+ xattr -d com.apple.quarantine hive
344
+
345
+ # 4. Descargar la UI
346
+ curl -L https://github.com/johpaz/hive/releases/latest/download/ui-dist.tar.gz \
347
+ | tar -xz --one-top-level=ui-dist
348
+ mkdir -p ~/.hive/ui && cp -r ui-dist/* ~/.hive/ui/
349
+
350
+ # 5. Ejecutar
351
+ ./hive start
352
+ ```
353
+
354
+ > **¿Por qué el paso `xattr`?** macOS bloquea binarios descargados de internet que no tienen firma de Apple. El comando `xattr -d com.apple.quarantine` elimina esa restricción. Si lo omites, verás el error: _"hive no se puede abrir porque Apple no puede comprobar que no contiene software malicioso"_.
355
+ >
356
+ > Alternativa: en Finder, haz clic derecho sobre el archivo → **Abrir** → **Abrir** de nuevo en el diálogo. Esto también lo desbloquea.
357
+
358
+ > **Error "there is no application set to open this document"**
359
+ > El binario es un ejecutable de terminal — **no se puede abrir con doble clic desde Finder**. Siempre se ejecuta desde Terminal con `./hive start`. Si aparece ese mensaje al hacer doble clic, ignóralo y usa Terminal.
360
+ >
361
+ > Si después del `xattr` el error persiste, ve a **Ajustes del Sistema → Privacidad y Seguridad** y haz clic en **"Abrir de todas formas"**.
362
+
363
+ **Agregar al PATH:**
364
+
365
+ ```bash
366
+ sudo mv hive /usr/local/bin/hive
367
+ hive start
368
+ ```
369
+
370
+ ---
371
+
372
+ #### macOS — Intel
373
+
374
+ Igual que Apple Silicon pero descarga `macos-x64`:
375
+
376
+ ```bash
377
+ curl -L -o hive https://github.com/johpaz/hive/releases/latest/download/hive-v0.0.3-macos-x64
378
+ chmod +x hive
379
+ xattr -d com.apple.quarantine hive
380
+ curl -L https://github.com/johpaz/hive/releases/latest/download/ui-dist.tar.gz \
381
+ | tar -xz --one-top-level=ui-dist
382
+ mkdir -p ~/.hive/ui && cp -r ui-dist/* ~/.hive/ui/
383
+ ./hive start
384
+ ```
385
+
386
+ ---
387
+
388
+ #### Windows x64
389
+
390
+ **Paso 1 — Descargar el binario**
391
+
392
+ Descarga [`hive-v0.0.3-windows-x64.exe`](https://github.com/johpaz/hive/releases/latest/download/hive-v0.0.3-windows-x64.exe) desde GitHub o desde [hiveagents.io](https://www.hiveagents.io/#installation).
393
+
394
+ **Paso 2 — Windows SmartScreen**
395
+
396
+ Al ejecutar por primera vez, Windows puede mostrar _"Windows protegió tu PC"_. Es normal para binarios sin firma de código.
397
+
398
+ 1. Haz clic en **"Más información"**
399
+ 2. Luego en **"Ejecutar de todas formas"**
400
+
401
+ **Paso 3 — Descargar la UI**
402
+
403
+ Descarga [`ui-dist.tar.gz`](https://github.com/johpaz/hive/releases/latest/download/ui-dist.tar.gz) y extrae su contenido en:
404
+
405
+ ```
406
+ C:\Users\TU_USUARIO\.hive\ui\
407
+ ```
408
+
409
+ Puedes usar [7-Zip](https://www.7-zip.org/) o WSL para extraer el `.tar.gz`. Con PowerShell 5+:
410
+
411
+ ```powershell
412
+ # Crear la carpeta de destino
413
+ New-Item -ItemType Directory -Force -Path "$env:USERPROFILE\.hive\ui"
414
+
415
+ # Extraer (requiere PowerShell 5+ o Windows 11)
416
+ tar -xzf ui-dist.tar.gz -C "$env:USERPROFILE\.hive\ui"
417
+ ```
418
+
419
+ **Paso 4 — Ejecutar**
420
+
421
+ ```powershell
422
+ .\hive-v0.0.3-windows-x64.exe start
423
+ ```
424
+
425
+ El navegador se abre automáticamente en `http://localhost:18790`.
426
+
427
+ **Agregar al PATH (opcional):**
428
+
429
+ ```powershell
430
+ # Mover a una carpeta ya en el PATH, por ejemplo:
431
+ Move-Item .\hive-v0.0.3-windows-x64.exe C:\Windows\System32\hive.exe
432
+
433
+ # Luego ejecutar desde cualquier lugar:
434
+ hive start
435
+ ```
436
+
437
+ ---
438
+
439
+ #### ¿Dónde se guardan los datos?
440
+
441
+ Todos los datos (base de datos, configuración, logs) se guardan en `~/.hive/`:
442
+
443
+ ```
444
+ ~/.hive/ # Windows: C:\Users\TU_USUARIO\.hive\
445
+ ├── data/
446
+ │ └── hive.db ← SQLite (agentes, conversaciones, config)
447
+ ├── ui/ ← archivos de la interfaz web
448
+ ├── logs/
449
+ │ └── gateway.log
450
+ └── gateway.pid
451
+ ```
452
+
453
+ **Variables de entorno disponibles:**
454
+
455
+ | Variable | Default | Descripción |
456
+ |----------|---------|-------------|
457
+ | `HIVE_HOME` | `~/.hive` | Directorio raíz de datos |
458
+ | `HIVE_PORT` | `18790` | Puerto del gateway |
459
+ | `HIVE_HOST` | `127.0.0.1` | Interfaz de red |
460
+ | `HIVE_UI_DIR` | `~/.hive/ui` | Ruta alternativa para la UI |
461
+
462
+ ---
463
+
464
+ #### Uso portable — USB o disco externo
465
+
466
+ El binario standalone es ideal para llevarlo en una USB. Tu agente viaja contigo con toda su memoria, historial y configuración.
467
+
468
+ **Estructura recomendada en la USB:**
469
+
470
+ ```
471
+ /usb/
472
+ ├── hive ← binario ejecutable
473
+ ├── ui/ ← archivos de la UI (extraídos de ui-dist.tar.gz)
474
+ └── datos/ ← directorio de datos (se crea automáticamente)
475
+ ├── data/hive.db
476
+ └── ...
477
+ ```
478
+
479
+ **Preparar la USB:**
480
+
481
+ ```bash
482
+ cp hive-v0.0.3-linux-x64 /media/usb/hive
483
+ chmod +x /media/usb/hive
484
+ cp -r ui-dist/* /media/usb/ui/
485
+
486
+ # (Opcional) llevar los datos existentes
487
+ cp -r ~/.hive/data /media/usb/datos/
488
+ ```
489
+
490
+ **Ejecutar desde la USB:**
491
+
492
+ ```bash
493
+ # Linux
494
+ HIVE_HOME=/media/usb/datos HIVE_UI_DIR=/media/usb/ui /media/usb/hive start
495
+
496
+ # macOS
497
+ HIVE_HOME=/Volumes/USB/datos HIVE_UI_DIR=/Volumes/USB/ui /Volumes/USB/hive start
498
+ ```
499
+
500
+ **Backup de datos:**
501
+
502
+ ```bash
503
+ cp ~/.hive/data/hive.db ~/backup-hive-$(date +%Y%m%d).db
504
+ ```
505
+
506
+ ---
507
+
508
+ ### Opción 3 — bun (Para desarrolladores)
509
+
510
+ > Requiere Bun instalado — ver prerequisito al inicio de esta sección.
511
+
512
+ **Instalación global:**
513
+
514
+ ```bash
515
+ bun install -g @johpaz/hive
516
+ ```
517
+
518
+ > Si instalas con `npm install -g @johpaz/hive` también funciona, pero igualmente necesitas Bun instalado — el CLI lo usa como runtime.
519
+
520
+ **Iniciar:**
521
+
522
+ ```bash
523
+ hive start
524
+ ```
525
+
526
+ El navegador se abre automáticamente en `http://localhost:18790`. Si es la primera vez, redirige a `/setup` para configurar tu agente.
527
+
528
+ **Configurar desde terminal** (sin browser):
529
+
530
+ ```bash
531
+ hive onboard
532
+ ```
533
+
534
+ **Comandos útiles:**
535
+
536
+ ```bash
537
+ hive status # estado del gateway
538
+ hive logs --follow # logs en tiempo real
539
+ hive stop # detener el gateway
540
+ hive doctor # diagnóstico del sistema
541
+ ```
542
+
543
+ **Actualizar a la última versión:**
544
+
545
+ ```bash
546
+ bun install -g @johpaz/hive # instala la versión más reciente
547
+ hive stop && hive start # reinicia el gateway
548
+ ```
549
+
550
+ **Modo desarrollo** (hot-reload + Vite, para contribuir al proyecto):
551
+
552
+ ```bash
553
+ git clone https://github.com/johpaz/hive.git && cd hive
554
+ bun install
555
+ bun run dev
556
+ ```
557
+
558
+ **Migrar datos a otro equipo (portable):**
559
+
560
+ El ejecutable de Hive queda instalado globalmente en el sistema, pero **todos los datos viven en `~/.hive/`** — agentes, conversaciones, configuración, API keys. Para llevarlos a otro equipo basta con copiar esa carpeta:
561
+
562
+ ```bash
563
+ # En el equipo origen — comprimir los datos
564
+ tar -czf hive-datos.tar.gz -C ~ .hive
565
+
566
+ # Copiar a USB, disco externo o transferir por red
567
+ cp hive-datos.tar.gz /media/usb/
568
+
569
+ # En el equipo destino — instalar Hive y restaurar datos
570
+ bun install -g @johpaz/hive
571
+ tar -xzf /media/usb/hive-datos.tar.gz -C ~
572
+
573
+ # Arrancar — carga tu agente con toda su memoria
574
+ hive start
575
+ ```
576
+
577
+ > La carpeta `.hive` contiene la BD SQLite (`data/hive.db`), la UI web (`ui/`) y los logs. No contiene el binario de Hive — ese se reinstala con `bun install -g`.
578
+
579
+ **Backup rápido solo de la BD:**
580
+
581
+ ```bash
582
+ cp ~/.hive/data/hive.db ~/backup-hive-$(date +%Y%m%d).db
583
+ ```
584
+
585
+ ---
586
+
587
+ ## Los Cuatro Pilares
588
+
589
+ | Pilar | Descripción |
590
+ |-------|-------------|
591
+ | **Tools** | Herramientas nativas: navegador, sistema de archivos, cron, canvas. |
592
+ | **Skills** | Habilidades incluidas: búsqueda web, shell, memoria, HTTP client, file manager. |
593
+ | **MCP** | Compatible con Model Context Protocol para extender funcionalidades. |
594
+ | **Ética** | Límites claros definidos en ETHICS.md — tu agente siempre sabe qué puede y qué no puede hacer. |
595
+
596
+ ---
597
+
598
+ ## Arquitectura técnica
599
+
600
+ Hive usa un **Native Agent Loop** propio — sin dependencias de LangGraph ni LangChain. Todo corre sobre Bun + SQLite con cero abstracciones intermedias.
601
+
602
+ ![Arquitectura Hive](public/arquitectura.png)
603
+
604
+ ### Loop principal
605
+
606
+ ```
607
+ mensaje entrante
608
+ → Context Compiler (compileContext)
609
+ → callLLM()
610
+ → [executeTool() → callLLM()]*
611
+ → respuesta al usuario
612
+ ```
613
+
614
+ ---
615
+
616
+ ### FASE 3 — Context Compiler
617
+
618
+ El Context Compiler es el componente central del motor. Se ejecuta antes de cada llamada al modelo y ensambla una "vista mínima" del contexto consultando SQLite directamente. Implementa cuatro estrategias de Context Engineering:
619
+
620
+ **3.1 — Selección de historial (SELECCIONAR)**
621
+ - Conversaciones cortas (< 20 mensajes): pasa todos los mensajes
622
+ - Conversaciones largas: usa el resumen de la tabla `summaries` + los últimos N mensajes recientes
623
+ - Nunca pasa la conversación cruda completa a modelos con ventana chica
624
+
625
+ **3.2 — Scratchpad (ESCRIBIR)**
626
+ - Carga las notas persistentes del thread actual desde la tabla `scratchpad`
627
+ - Las inyecta en el system prompt como "Información conocida sobre esta conversación"
628
+ - El agente puede escribir al scratchpad usando la tool `save_note(key, value)`
629
+
630
+ **3.3 — Playbook del ACE (SELECCIONAR)**
631
+ - Busca con FTS5 en la tabla `playbook` usando keywords del mensaje del usuario
632
+ - Inyecta máximo 5 reglas relevantes (`active=1`, `helpful_count > harmful_count`)
633
+ - Las reglas son aprendidas automáticamente por el Curator del ACE
634
+
635
+ **3.4 — Selección de tools en tres niveles (SELECCIONAR)**
636
+
637
+ | Nivel | Operación |
638
+ |-------|-----------|
639
+ | 1 — Catálogo | `collectNativeTools()` + tools de MCP activos |
640
+ | 2 — Agente | `filterToolsByAgent()` — filtra por `tools_json` del agente. `NULL` = todas permitidas |
641
+ | 3 — Turno | `selectToolLoadout()` — ALWAYS_INCLUDE + scoring por keywords del mensaje (máx. 20) |
642
+
643
+ El límite de 20 tools por turno es crítico para modelos locales con recursos limitados. Las tools del `ALWAYS_INCLUDE` siempre están disponibles sin consumir slots opcionales: `cron_add/list/remove/edit`, `project_create/task_create/task_update`, `read/write/edit`, `save_note`, `notify`, `report_progress`, `create_agent`.
644
+
645
+ **3.5 — Ética (capa constitucional)**
646
+ - Carga todas las reglas de la tabla `ethics` — sin filtrar, sin comprimir
647
+ - Siempre es el primer bloque del system prompt, en toda llamada al modelo
648
+
649
+ **Orden de ensamblaje del contexto:**
650
+
651
+ ```
652
+ [system prompt]
653
+ 1. Reglas de ética (completas, siempre)
654
+ 2. Identidad del agente (agents.system_prompt + description)
655
+ 3. Hive Capabilities Manifest (hive_capabilities table)
656
+ 4. Perfil del usuario (users table)
657
+ 5. Reglas del playbook relevantes (FTS5, máx. 5)
658
+ 6. Notas del scratchpad (filtradas por thread_id)
659
+ 7. Entorno (agent_id, thread_id, fecha/hora local)
660
+
661
+ [messages]
662
+ 8. Resumen del historial (si la conversación es larga)
663
+ 9. Mensajes recientes (últimos N)
664
+
665
+ [tools]
666
+ 10. Tools filtradas en tres niveles
667
+ ```
668
+
669
+ ---
670
+
671
+ ### FASE 4 — Proyectos, Tareas y Workers
672
+
673
+ El Coordinador puede descomponer problemas complejos en proyectos con tareas paralelas ejecutadas por workers autónomos.
674
+
675
+ **4.1 — Decisión simple vs proyecto**
676
+
677
+ El modelo decide en su system prompt:
678
+ - **Tarea simple** → el Coordinador la resuelve directamente o despacha a un worker existente
679
+ - **Tarea compleja** → crea un proyecto con subtareas y dependencias
680
+
681
+ **4.2 — Creación de proyecto y asignación de workers**
682
+
683
+ 1. `project_create` — registra el objetivo del proyecto
684
+ 2. `task_create` — crea cada subtarea con dependencias
685
+ 3. `find_agent` — busca por FTS5 sobre `name+description` del agente vs la tarea
686
+ - Si existe un worker compatible → `assign_task`
687
+ - Si no → `create_agent` con system prompt y tools necesarios, luego `assign_task`
688
+
689
+ **4.3 — Ejecución respetando dependencias**
690
+
691
+ - Tareas sin dependencias (o con dependencias ya `completed`) se ejecutan primero
692
+ - Tareas independientes entre sí corren en paralelo (`Promise.all`)
693
+ - Si una tarea falla: el Coordinador puede reintentar, reasignar a otro agente, o marcar el proyecto como `failed`
694
+
695
+ **4.4 — Contexto aislado por worker (AISLAR)**
696
+
697
+ Cada worker recibe **solo** lo necesario para su tarea:
698
+ - Reglas de ética + su system prompt propio
699
+ - Descripción de la tarea asignada
700
+ - Resultados de las tareas de las que depende
701
+
702
+ El worker **no** recibe la conversación completa del usuario. Esto mantiene el contexto mínimo y evita contaminación entre agentes.
703
+
704
+ ---
705
+
706
+ ### FASE 5 — ACE (Adaptive Context Engine)
707
+
708
+ El ACE convierte a Hive en un sistema que aprende automáticamente de sus propias ejecuciones.
709
+
710
+ **5.1 — Tracer (Generator)**
711
+
712
+ Después de cada ejecución se guarda automáticamente en la tabla `traces`:
713
+ - Qué agente, qué tool, qué recibió, qué produjo
714
+ - Si fue exitoso, cuánto tardó, cuántos tokens consumió
715
+
716
+ Pasivo — no agrega latencia al usuario.
717
+
718
+ **5.2 — Reflector (análisis periódico)**
719
+
720
+ Se ejecuta en segundo plano, nunca en el flujo del usuario:
721
+ - Trigger: cada 20 trazas nuevas, o por cron periódico
722
+ - Le pide al modelo que analice las trazas: patrones de éxito, fallos repetidos, oportunidades de mejora
723
+ - Guarda los insights en la tabla `reflections` (incluyendo `ethics_violation` con prioridad máxima)
724
+
725
+ **5.3 — Curator (playbook + poda de agentes)**
726
+
727
+ Transforma insights en reglas operativas:
728
+ - Si ya existe una regla similar → incrementa `helpful_count` o `harmful_count`
729
+ - Si es nueva → la inserta con `confidence` proporcional a cuántas trazas la respaldan
730
+ - Si `harmful_count > helpful_count` → marca la regla como `active=0`
731
+ - Si hay reglas duplicadas o contradictorias → fusiona o poda
732
+
733
+ Poda de agentes:
734
+ - Workers sin actividad por más de 14 días → `status='archived'`
735
+ - Workers con tasa de fallo alta → `archived` + regla en playbook explicando por qué fallaba
736
+ - Workers duplicados (skills similares) → archiva el menos exitoso
737
+
738
+ **Ciclo completo del ACE:**
739
+
740
+ ```
741
+ Agentes ejecutan tareas
742
+ → trazas en SQLite
743
+ → Reflector analiza periódicamente
744
+ → Curator actualiza playbook + poda agentes
745
+ → Context Compiler inyecta reglas
746
+ → Agentes ejecutan mejor la próxima vez
747
+ ```
748
+
749
+ ---
750
+
751
+ ### FASE 6 — Compaction (compresión de historial)
752
+
753
+ Mantiene el contexto dentro del presupuesto de tokens del modelo.
754
+
755
+ **Compresión de conversación (COMPRIMIR)**
756
+ - Trigger: cuando el token count acumulado del thread supera el 60% de la ventana del modelo
757
+ - Toma todos los mensajes excepto los últimos 5
758
+ - El modelo los resume preservando: datos del usuario, decisiones tomadas, resultados de tools, contexto para continuar
759
+ - El resumen se guarda en la tabla `summaries`; los mensajes originales permanecen como historial
760
+
761
+ **Tool result clearing**
762
+ - Resultados de tools con más de N turnos de antigüedad → reemplazados por un resumen corto
763
+ - Reduce tokens sin perder el registro de que la tool se ejecutó
764
+
765
+ ---
766
+
767
+ ### Providers LLM soportados
768
+
769
+ Hive llama directamente a los SDKs oficiales de cada provider:
770
+
771
+ | Provider | SDK | Modelos ejemplo |
772
+ |----------|-----|-----------------|
773
+ | Google Gemini | `@google/genai` | gemini-2.5-flash, gemini-2.0-flash |
774
+ | Anthropic | `@anthropic-ai/sdk` | claude-sonnet-4-6, claude-opus-4-6 |
775
+ | OpenAI | `openai` | gpt-4o, gpt-4.1 |
776
+ | Groq | `openai` (compat) | llama-3.3-70b, mixtral-8x7b |
777
+ | Mistral AI | `openai` (compat) | mistral-large, codestral |
778
+ | DeepSeek | `openai` (compat) | deepseek-chat, deepseek-reasoner |
779
+ | Kimi (Moonshot) | `openai` (compat) | moonshot-v1-8k, moonshot-v1-128k |
780
+ | Ollama | `openai` (compat) | llama3, qwen2.5, etc. |
781
+ | OpenRouter | `openai` (compat) | cualquier modelo de la plataforma |
782
+
783
+ ### Onboarding → System Prompt
784
+
785
+ Al completar el onboarding, el campo `agents.system_prompt` se genera automáticamente con el nombre, descripción y tono del agente. El tono puede ser: `friendly`, `professional`, `direct` o `casual`.
786
+
787
+ ---
788
+
789
+ ## Browser Automation
790
+
791
+ Hive incluye 7 tools de browser automation para navegar, extraer datos, interactuar y automatizar sitios web con JavaScript rendering completo.
792
+
793
+ Usa **Puppeteer + Chromium** — el browser se descarga y gestiona automáticamente al primer uso. No requiere instalación manual ni configuración extra.
794
+
795
+ ### Tools disponibles
796
+
797
+ | Tool | Descripción |
798
+ |------|-------------|
799
+ | `browser_navigate` | Navegar a URL y obtener contenido renderizado (soporta JS) |
800
+ | `browser_screenshot` | Capturar screenshot de la página (base64 PNG) |
801
+ | `browser_click` | Hacer click en elemento (CSS selector) |
802
+ | `browser_type` | Escribir texto en campos de formulario |
803
+ | `browser_extract` | Extraer datos con selectores CSS o XPath |
804
+ | `browser_script` | Ejecutar JavaScript arbitrario en el contexto de la página |
805
+ | `browser_wait` | Esperar por elemento o condición antes de continuar |
806
+
807
+ Todas las tools de browser están **activadas por defecto**. Si el browser no está disponible, las tools fallan gracefully sin afectar el resto de Hive.
808
+
809
+ ### Sin configuración
810
+
811
+ Al primer uso, Puppeteer descarga automáticamente Chromium en el directorio de caché del sistema. No requiere instalar Chrome, Chromium ni ningún browser externo.
812
+
813
+ - ✅ **Primera ejecución**: Puppeteer descarga Chromium (~170 MB) automáticamente
814
+ - ✅ **Siguientes ejecuciones**: reutiliza el Chromium ya descargado (instantáneo)
815
+ - ⚠️ **Sin internet al primer uso**: las browser tools fallan gracefully hasta que el browser esté disponible
816
+
817
+ ### Ejemplo de uso
818
+
819
+ ```typescript
820
+ // Navegar a una página con JavaScript rendering
821
+ const result = await browser_navigate({
822
+ url: "https://example.com",
823
+ waitFor: ".content-loaded",
824
+ timeout: 30000,
825
+ });
826
+
827
+ // Extraer datos con selector CSS
828
+ const links = await browser_extract({
829
+ url: "https://example.com",
830
+ selector: "a[href]",
831
+ attribute: "href",
832
+ all: true,
833
+ });
834
+
835
+ // Tomar screenshot
836
+ const screenshot = await browser_screenshot({
837
+ url: "https://example.com",
838
+ fullPage: true,
839
+ });
840
+
841
+ // Ejecutar JavaScript
842
+ const data = await browser_script({
843
+ script: `document.querySelector('.price').textContent`,
844
+ });
845
+ ```
846
+
847
+ ---
848
+
849
+ ## Seguridad
850
+
851
+ | Tema | Resumen |
852
+ |------|---------|
853
+ | **Autenticación** | Define `HIVE_AUTH_TOKEN` siempre en producción. Sin él, cualquiera que alcance el puerto puede usar el dashboard. |
854
+ | **Red** | En VPS o servidores, pon Hive detrás de un reverse proxy con HTTPS y abre solo el puerto `18790`. |
855
+ | **Container** | El proceso corre como `root` dentro del contenedor (sin `--privileged`). Migración a usuario no-root pendiente en versiones futuras. |
856
+ | **Datos** | Todo se almacena en el volumen `hive-data` / `~/.hive/`. No se envía telemetría a servidores externos. Las API keys se guardan cifradas. |
857
+
858
+ Consulta [SECURITY.md](SECURITY.md) para instrucciones detalladas de configuración, backup y hardening.
859
+
860
+ ---
861
+
862
+ ## Desarrollo
863
+
864
+ ```bash
865
+ # Clonar el repo
866
+ git clone https://github.com/johpaz/hive.git
867
+ cd hive
868
+
869
+ # Instalar dependencias
870
+ bun install
871
+
872
+ # Modo desarrollo
873
+ bun run dev
874
+ ```
875
+
876
+ ---
877
+
878
+ ## Contribuir
879
+
880
+ ¿Quieres agregar una nueva funcionalidad? Consulta [CONTRIBUTING.md](CONTRIBUTING.md) para saber exactamente dónde hacer tu cambio.
881
+
882
+ | Tipo de cambio | Ubicación |
883
+ |---------------|-----------|
884
+ | Canal nuevo | `packages/core/src/channels/` + registrar en `manager.ts` |
885
+ | Tool nativa | `packages/core/src/tools/` + registrar en `native-tools.ts` |
886
+ | Skill nueva | `packages/skills/src/` |
887
+ | MCP nuevo | `packages/core/src/mcp/` |
888
+ | Capability en el manifest | tabla `hive_capabilities` vía `seed.ts` |
889
+ | Mejora al CLI | `packages/cli/src/commands/` |
890
+
891
+ Todo en un PR. Una revisión. Un merge.
892
+
893
+ ---
894
+
895
+ ## Links
896
+
897
+ - 🌐 [hiveagents.io](https://hiveagents.io)
898
+ - 💬 [Discord](https://discord.gg/hive)
899
+ - 📱 [Telegram](https://t.me/hive_agents)
900
+
901
+ ---
902
+
903
+ ## Licencia
904
+
905
+ MIT © 2024-2026 Hive Team — Construido con ❤️ desde Colombia