Reemplaza el scaffold del echobot por la plataforma completa de bots traida desde ~/DataProyects/Github/agents_and_robots tras la operacion Matrix-out: los bots ya no hablan por Matrix sino por el bus unibus (modelo todo-rooms + E2E via shell/transportunibus sobre github.com/enmanuel/unibus/pkg/client). - go.mod: replace de unibus -> ../unibus y de fn-registry -> ../../../.. (paths relativos reajustados a la nueva ubicacion dentro de fn_registry). - app.md: bump a 0.2.0, descripcion + arquitectura + comandos + gotchas reales. - modulo Go conservado como github.com/enmanuel/agents (sin reescribir imports). agents_and_robots queda archivado como museo de la era Matrix.
6.5 KiB
name, lang, domain, version, description, tags, uses_functions, uses_types, framework, entry_point, dir_path, repo_url, e2e_checks
| name | lang | domain | version | description | tags | uses_functions | uses_types | framework | entry_point | dir_path | repo_url | e2e_checks | ||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| unibots | go | infra | 0.2.0 | Plataforma de bots en Go (core puro + shell impuro: LLM, memoria, tools, crons, dashboard TUI) que hablan por el bus unibus. Migrada desde agents_and_robots con Matrix-out: el transporte ya no es Matrix sino unibus (rooms + E2E). |
|
cmd/dashboard | projects/message_bus/apps/unibots | https://gitea-dgg044oo04woo4ggcsws4gk0.organic-machine.com/dataforge/unibots |
|
Qué es
unibots es la plataforma de bots que consumen el bus de mensajería
unibus. Es la evolución de agents_and_robots: el mismo cerebro
(personalidad, reglas de decisión, memoria, tools, crons, LLM) pero con el
transporte migrado de Matrix a unibus (operación "Matrix-out", 07/06/2026).
Un bot es todo peer automatizado del bus, con o sin LLM. Un bot agente es un bot que contiene un LLM. El término único en código, nombres y docs es bot. Ver convencion-bot-vs-agente.
Arquitectura
Cada bot combina un core puro (pkg/: transformaciones, reglas de decisión,
personalidad — determinista, sin I/O) con un shell impuro (shell/: LLM, SSH,
base de datos, tools, side effects). El acoplamiento a Matrix se eliminó de raíz;
en su lugar hay un seam neutral:
pkg/transport— interfazTransport+ tipoInboundMessageagnósticos del transporte. El core (agents/handler.go::handleInbound) no sabe si detrás hay Matrix, unibus o un mock.shell/transportunibus/— implementación deTransportsobre la librería cliente de unibus (github.com/enmanuel/unibus/pkg/client). Modelo "todo son rooms" + E2E (room.ModeMatrix): el bot descubre las rooms a las que pertenece por polling declient.ListMyRooms()(endpointGET /members/{endpoint}/roomsde unibus ≥ v0.4.0), haceJoin+Subscribe, descifra y responde en la misma room.busSenderadapta runner / cron / tools a ese transporte.
Comandos (cmd/)
| Comando | Qué hace |
|---|---|
cmd/dashboard |
TUI interactiva de gestión de bots (entry point principal) |
cmd/launcher |
Supervisa y relanza los bots cuando salen sin cancelación |
cmd/agentctl |
CLI de control: arrancar/parar/estado de bots, HTTP API + SSE |
cmd/register |
Alta de un bot nuevo |
Configuración de un bot
Cada bot declara un bloque bus: (sustituye al antiguo matrix:):
bus:
nats_url: nats://127.0.0.1:4250
ctrl_url: http://127.0.0.1:8470
identity_path: local_files/<bot>.id
handle: <nombre-publico>
command_prefix: "!"
threads: true
unibots es código de aplicación, no funciones del registry: orquesta la
librería cliente de unibus y no reimplementa protocolo ni cripto. Por eso
uses_functions está vacío — el crypto/transporte lo aporta unibus, que a su
vez importa las primitivas del dominio cybersecurity del registry.
Nota de módulo Go: el
moduleinterno sigue siendogithub.com/enmanuel/agents(heredado de agents_and_robots) para no reescribir ~100 imports durante el move. El repositorio Gitea esdataforge/unibots. El desajuste nombre-módulo/repo es cosmético y no afecta al build; renombrar el módulo agithub.com/enmanuel/unibotsqueda como tarea futura opcional.
Ejemplo
Levantar el bus y lanzar la plataforma de bots contra él:
# 1. Bus de membresía/claves (NATS embebido :4250, control plane HTTP :8470)
cd projects/message_bus/apps/unibus
go run ./cmd/membershipd
# 2. En otra terminal: la TUI de gestión de bots
cd projects/message_bus/apps/unibots
go run ./cmd/dashboard
# Alternativa headless: supervisor que mantiene los bots vivos
go run ./cmd/launcher
Cuando usarla
- Cuando quieras correr bots autónomos (con o sin LLM) que conversen por el bus unibus en vez de Matrix.
- Como plataforma destino del ecosistema de bots: a partir de ahora se trabaja
aquí, no en
agents_and_robots(archivado como museo de la era Matrix). - Para añadir un bot nuevo:
cmd/register+ un bloquebus:en su config; el core es transport-agnóstico, así que solo escribes la lógica del handler (regla.claude/rules/create_agent.md).
Gotchas
- Matrix-out total. Se borraron
shell/matrix/,tools/matrix/,cmd/verify/(cross-signing) y la dependenciamaunium.net/go/mautrix. El build esCGO_ENABLED=0 go build ./...a secas, sin-tags goolmnilibolm. Presencia, typing y avatares desaparecieron: no existen en unibus. - Imports relativos a unibus y al registry.
go.modusareplace github.com/enmanuel/unibus => ../unibusyreplace fn-registry => ../../../... Ambos son paths relativos a la ubicación de la app: si se mueve, hay que reajustarlos o el build rompe. (Se ajustaron al traer la app desde~/DataProyects/Github/agents_and_robots.) - Identidad = secreto crítico. Cada
local_files/<bot>.idlleva las claves privadas del bot (Ed25519 + X25519), 0600, gitignorado. Perderlo cambia la identidad pública del bot en el bus. - El bot descubre rooms por polling. No hay push de invitaciones: el transporte
unibus hace polling de
ListMyRooms(). La latencia de incorporación a una room ≈ el intervalo de polling. - Build sin CGO. Crypto del registry (
cybersecurity) + driver SQLite pure-Go (modernc.org/sqlite) compilan limpio singcc.
Gaps abiertos (heredados del Matrix-out)
- Directorio de bots (handle → endpoint público) para que un frontend pueda invitar a un bot por nombre.
- Orquestador multi-bot aparcado: existía atado a mautrix, aún sin recablear al bus.
- Docs internas desactualizadas:
README.mdy.claude/CLAUDE.mdtodavía describen la era Matrix (homeserver,-tags goolm,matrix:). Pendiente de reescritura para reflejar el transporte unibus.
Capability growth log
- v0.2.0 (2026-06-07) — la app deja de ser el scaffold del echobot y pasa a ser la
plataforma completa de bots importada desde
agents_and_robotscon el transporte migrado a unibus (Matrix-out). El módulo Go conserva el pathgithub.com/enmanuel/agents; losreplacede unibus y fn-registry se reajustaron a la nueva ubicación.agents_and_robotsqueda archivado; el trabajo activo continúa aquí.