Stiven Ruiz
← Todos los proyectos
Automatización e IAEn producciónProyecto de GG Forge

GG Forge Ops: la operación de una empresa automatizada sobre Discord

Un equipo de ocho asistentes automáticos que llevan la oficina digital de una empresa en Discord: organizan el espacio de trabajo, lo protegen, hacen copias de seguridad, vigilan los sistemas, recuerdan pagos, dan la bienvenida al personal y a los clientes y responden dudas sobre los productos.Ecosistema de 8 bots Python (discord.py, asyncio) desplegados en 7 servicios de Railway con Docker, que cubren infraestructura como código para Discord, seguridad y anti-nuke, detección de secretos, respaldos cifrados, observabilidad de producción, onboarding/offboarding y un asistente RAG, apoyados en una librería compartida versionada.

El problema

Una empresa pequeña que usa Discord como oficina acumula trabajo manual y riesgos: permisos mal puestos que dejan ver información sensible, contraseñas pegadas por error en el chat, fallos de producción que nadie ve a tiempo, pagos que vencen sin aviso y personas que entran o salen sin un control ordenado. Además, si el servidor se borra o se ataca, no hay copia de seguridad.Discord no ofrece control de versiones de su estructura ni de sus permisos, ni protección frente a cambios maliciosos o masivos, ni detección de credenciales filtradas, ni respaldos. Las alertas de la plataforma de despliegue (Railway) llegan dispersas y sin agrupar, y los procesos de altas, bajas, vencimientos y standups dependen de la memoria de los fundadores.

La solución

Cada tarea la hace un bot especializado con un nombre que describe su oficio: el Arquitecto mantiene la organización del servidor a partir de un archivo que se puede revisar antes de aplicar; el Centinela protege las zonas privadas y frena ataques; el Sabueso retira al instante cualquier clave pegada en el chat; el Archivista hace copias de seguridad cifradas; el Capataz vigila errores, consumo, vencimientos, gastos y el standup diario; el Portero gestiona altas, bajas y un portal para clientes; y el Oráculo responde preguntas sobre los productos citando la documentación. Los bots cooperan entre sí y cada uno tiene solo los permisos que necesita.Ocho bots con permisos de Discord mínimos y exactos (solo dos tienen Administrator, y bajo la supervisión del Centinela), desplegados en siete servicios de Railway desde Docker (el Archivista como cron; el Centinela y el Sabueso comparten proceso para ahorrar memoria, cada uno con su token, sus permisos y su latido, y un supervisor que reinicia solo al que falle), con volúmenes y SQLite para su estado. La lógica de decisión es pura y vive en src/core (planificador, política de la bóveda, clasificador de auditoría, detector de secretos, agrupación de errores, BM25), separada de los adaptadores de Discord, lo que permite testearla sin red. gg-forge-kit (público, versionado por tags) centraliza configuración validada, logging, latidos a healthchecks.io, alertas por correo con Resend y un cliente de IA con respaldo Claude → Gemini → OpenAI. Los bots se coordinan por listas blancas y órdenes por mención en un canal de consola (p. ej. el Arquitecto pide al Centinela una ventana de mantenimiento o al Capataz que cierre errores).

El resultado

La empresa funciona con una oficina digital ordenada y vigilada las 24 horas: los cambios de organización se proponen, revisan y aplican solos con historial completo; los riesgos de seguridad se corrigen en segundos; hay copias de seguridad automáticas y los fundadores reciben avisos útiles en lugar de ruido.Sistema en producción: el repo de estructura acumula 86 commits en seis días (exportaciones automáticas, planes aplicados e informes), y la última aplicación registrada ejecutó 11 operaciones sin errores. Unas 11.500 líneas de Python de producción en 7 repos y unas 270 funciones de test con pytest; despliegue continuo en Railway en cada push a main.

Lo más destacado

  • Arquitecto: la organización completa del servidor (roles, canales, permisos y quién tiene qué rol) vive en un archivo. Se propone un cambio, el bot enseña qué hará, un fundador lo aprueba con un botón y queda un historial de quién cambió qué y cuándo.Infraestructura como código para Discord con ciclo export → plan → apply: un planificador puro y determinista compara el YAML deseado con la foto actual y genera operaciones mínimas (sin id se crea, lo ausente no se toca, borrar es explícito); la exportación es estable para que git log sea la auditoría; detecta deriva (cambios manuales), la conserva campo a campo y ofrece «Deshacer»; ejecuta tareas puntuales idempotentes (copiar o publicar en foros) y tolera fallos transitorios de GitHub.
  • Centinela: si alguien intenta abrir una zona privada del servidor, el bot lo deshace en menos de un segundo, aísla al autor y avisa. También frena borrados o expulsiones masivas.Bóveda autorreparable basada en reconciliación de estado (no en deshacer el último cambio): calcula las reparaciones mínimas de los permisos de cada canal protegido, es idempotente para no entrar en bucles, revierte primero y consulta el registro de auditoría después, aplica cuarentena y retira Administrator no autorizado; clasifica el audit log por severidad, anti-nuke con ventana deslizante y ventanas de mantenimiento pedidas por otros bots.
  • Sabueso: si alguien pega por error una contraseña o clave en el chat, el mensaje desaparece, la persona recibe instrucciones para cambiarla y el caso queda abierto hasta que se confirma que se cambió.Detector puro con 26 reglas inspiradas en gitleaks, ordenadas de lo específico a lo genérico, más entropía de Shannon y filtrado de placeholders; revisa mensajes nuevos y editados, embeds y adjuntos de texto; nunca almacena ni republica el secreto (solo versiones censuradas) y gestiona incidentes con recordatorio cada 24 h hasta la rotación.
  • Capataz: convierte cientos de errores técnicos repetidos en un solo aviso claro con botones para asignarlo, resolverlo o crear una tarea, y además recuerda vencimientos, lleva el control de gastos y organiza el standup diario del equipo.Observabilidad sobre la API GraphQL de Railway sin tocar las apps: agrupa trazas por huella normalizada (uuid, fechas, números, hashes), detecta regresiones y picos, censura secretos en los logs con expresiones acotadas contra backtracking, alerta por medias de CPU/memoria/disco y crea issues en GitHub; incluye vencimientos recurrentes, gastos multimoneda y standup asíncrono por MD con formularios.
  • Seguridad y privacidad pensadas desde el diseño: cada bot tiene solo los permisos que necesita, las copias de seguridad están cifradas de forma que ni el propio bot puede leerlas, y el asistente de preguntas nunca revela información de productos que quien pregunta no puede ver.Mínimo privilegio con bitmasks de permisos exactos y listas blancas de acceso gestionadas por el Centinela; Archivista con cifrado asimétrico age (solo la clave pública en el servicio), subida a Cloudflare R2 y retención de 30 días que conserva siempre los 3 últimos; Oráculo con RAG ligero (BM25 en Python puro, sin base vectorial) filtrado por los permisos de canal del usuario, citas obligatorias, límite de uso y control de gasto de tokens.

Componentes

Arquitecto

Mantiene la organización del servidor (roles, canales y permisos) a partir de un archivo que se revisa y aprueba antes de aplicarse.Infraestructura como código para Discord: exportación estable a YAML en git, planificador puro que calcula operaciones mínimas, aplicación con aprobación por botón, detección de deriva y tareas puntuales idempotentes.

Servidor (estructura)

Guarda la foto del servidor, cómo debe quedar y el resultado de cada cambio, con historial completo de quién cambió qué y cuándo.Repositorio de estado declarativo (estado actual, estado deseado, tareas, cambios manuales conservados e informe de la última aplicación) escrito por el Arquitecto y usado como registro de auditoría vía git.

Centinela

Protege las zonas privadas del servidor, deshace al instante los cambios de permisos no autorizados y frena ataques masivos.Bóveda de permisos por reconciliación idempotente, cuarentena del autor, retirada de Administrator no autorizado, clasificación del audit log por severidad, anti-nuke con ventana deslizante y resumen diario.

Sabueso

Detecta contraseñas y claves pegadas en el chat, las retira y acompaña a la persona hasta que las cambia.Detector puro con 26 reglas tipo gitleaks más entropía sobre texto, embeds y adjuntos, censura de secretos, alertas por webhook y correo e incidentes persistentes hasta la rotación.

Archivista

Hace copias de seguridad automáticas y cifradas del servidor, legibles por personas y útiles para reconstruirlo si se borra.Cron en Railway que exporta canales, hilos, adjuntos y estructura vía REST, empaqueta en tar.gz, cifra con age, sube a Cloudflare R2 con retención de 30 días y alerta por Discord, correo y healthchecks.io si falla.

Capataz

Vigila los errores y el consumo de los sistemas en producción, recuerda vencimientos y pagos, lleva los gastos y organiza el standup diario.Agrupación de errores de Railway por huella con detección de regresiones y picos, alertas de CPU/memoria/disco, creación de issues en GitHub, vencimientos recurrentes, gastos multimoneda y standup asíncrono por MD.

Portero

Gestiona quién entra y quién sale: aprueba nuevos miembros, prepara su bienvenida, da de baja accesos y ofrece a cada cliente su propio espacio privado.Onboarding con aprobación por menú y perfiles de roles que nunca asigna permisos peligrosos, registro de accesos externos para un offboarding completo, invitaciones de un solo uso y portal de clientes con avances, tickets y releases de GitHub.

Oráculo

Responde preguntas sobre los productos de la empresa usando su documentación y citando de dónde sale cada respuesta.RAG ligero: sincroniza incrementalmente las specs SDD desde GitHub, busca con BM25 en Python puro, filtra por los permisos de canal de quien pregunta, responde con IA solo con el contexto recuperado y mide aciertos con botones.

GG Forge Kit

Una caja de herramientas común que usan todos los bots para configurarse, avisar si algo falla y hablar con servicios de inteligencia artificial.Librería Python pública versionada por tags con validación de configuración con sugerencias, logging, latido a healthchecks.io con reintento, alertas por correo con Resend y cliente de IA con respaldo Claude → Gemini → OpenAI y tiempo máximo por proveedor.

Mi rol

Cofundador de GG Forge. Diseño y desarrollo end-to-end del ecosistema: arquitectura, los ocho bots, la librería compartida, tests, configuración de despliegue en Railway, documentación de puesta en marcha y operación en el servidor real. Desarrollo asistido por IA (Claude Code) en parte de los commits, con revisión propia.

Habilidades que demuestra

Stack

  • Automatización de procesos de empresa
  • Diseño de arquitectura de microservicios
  • Seguridad de la información y principio de mínimo privilegio
  • Infraestructura como código
  • Integración de APIs (Discord, GitHub, Railway, Cloudflare R2, proveedores de IA)
  • IA aplicada (búsqueda y respuestas con documentación propia)
  • Monitorización y observabilidad
  • Copias de seguridad y recuperación ante desastres
  • Testing automatizado
  • Despliegue en la nube con contenedores
  • Documentación técnica y de operación
  • Python 3.12
  • discord.py 2
  • asyncio
  • aiohttp
  • SQLite (aiosqlite)
  • PyYAML
  • age (pyrage)
  • boto3 (Cloudflare R2, API S3)
  • GitHub REST API
  • Railway GraphQL API
  • Anthropic Claude / Google Gemini / OpenAI SDKs
  • BM25
  • Docker
  • Railway
  • healthchecks.io
  • Resend
  • pytest / pytest-asyncio

Actividad

15 días trabajados en el último año · Activo hace 2 días

Pasa el mouse por un día para ver en qué se trabajó esa semana.

Cómo ha avanzado

  1. Semana del lun, 28 sept 2026Mayor robustez: el Arquitecto distingue una caída pasajera de GitHub de un error real para no dar falsas alarmas, y el servidor sigue evolucionando con nuevos canales aplicados automáticamente desde el archivo.
  2. Semana del lun, 21 sept 2026En una semana nacen los ocho bots y la caja de herramientas común: protección de zonas privadas, detector de claves filtradas, copias de seguridad cifradas, asistente de preguntas sobre los productos, vigilancia de errores con avisos de pagos y standup, altas y bajas con portal de clientes, y la organización del servidor gestionada desde un archivo. Con ello se reorganizó todo el Discord de la empresa de forma automática, se añadieron control de gastos y de consumo de los sistemas, los bots empezaron a darse órdenes entre sí y se corrigieron los puntos detectados en las primeras revisiones en producción y en una auditoría de seguridad.