Update to Skynet v7 - Complete documentation restructure
- Nueva estructura de carpetas según Skynet v7 - Añadidos schemas SQL completos - Documentación de entidades, componentes e integraciones - Modelo de seguridad actualizado - Infraestructura y operaciones reorganizadas
This commit is contained in:
@@ -1,167 +1,221 @@
|
||||
# Arquitectura Overview
|
||||
# Overview
|
||||
|
||||
**Versión:** 5.0
|
||||
**Fecha:** 2024-12-24
|
||||
**Versión:** 1.1
|
||||
**Estado:** Definición
|
||||
|
||||
---
|
||||
|
||||
## Principio Fundamental
|
||||
## Visión General
|
||||
|
||||
> **ARCHITECT es el constructor. DECK y CORP son instancias autónomas.**
|
||||
|
||||
- **ARCHITECT**: Construye, despliega, coordina. NO es dependencia runtime.
|
||||
- **DECK/CORP**: Operan independientemente. Funcionan si ARCHITECT está caído.
|
||||
Sistema de arquitecturas personales y empresariales. ARCHITECT (con Claude) construye y despliega servidores autónomos (DECK, CORP) que operan independientemente. Los componentes internos son microservicios backend, no IA. Las instancias están diseñadas para **consumir** servicios de IA externos (APIs, RunPod), no para contenerla.
|
||||
|
||||
---
|
||||
|
||||
## Diagrama General
|
||||
## Arquitectura General
|
||||
|
||||
```
|
||||
┌─────────────────────────────────────────────────────────────────────────┐
|
||||
│ CAPA DE CONSTRUCCIÓN (solo deploy/dev) │
|
||||
│ │
|
||||
│ ┌─────────────────────────────────────────────────────────────────┐ │
|
||||
│ │ ARCHITECT (69.62.126.110) │ │
|
||||
│ │ ┌──────────┐ ┌──────────┐ ┌────────────┐ ┌───────────────┐ │ │
|
||||
│ │ │PostgreSQL│ │ Gitea │ │Orchestrator│ │ Infisical │ │ │
|
||||
│ │ │ contexto │ │ 25 repos │ │ v5 │ │ (master) │ │ │
|
||||
│ │ └──────────┘ └──────────┘ └────────────┘ └───────────────┘ │ │
|
||||
│ └─────────────────────────────────────────────────────────────────┘ │
|
||||
│ │
|
||||
│ Rol: Construcción, deployment, gestión central de secretos │
|
||||
│ NO es dependencia runtime de las instancias │
|
||||
└─────────────────────────────────────────────────────────────────────────┘
|
||||
│ │ │
|
||||
deploy │ │ │ deploy
|
||||
▼ ▼ ▼
|
||||
┌─────────────────────────────────────────────────────────────────────────┐
|
||||
│ CAPA DE INSTANCIAS (autónomas) │
|
||||
│ │
|
||||
│ ┌───────────────────┐ ┌───────────────────┐ ┌───────────────────┐ │
|
||||
│ │ DECK │ │ CORP │ │ HST │ │
|
||||
│ │ 72.62.1.113 │ │ 92.112.181.188 │ │ 72.62.2.84 │ │
|
||||
│ │ │ │ │ │ │ │
|
||||
│ │ secretaria :5051 │ │ secretaria :5051 │ │ 973 tags │ │
|
||||
│ │ producción :5052 │ │ producción :5052 │ │ API pública │ │
|
||||
│ │ admin.vo :5053 │ │ admin.vo :5053 │ │ Directus :8055 │ │
|
||||
│ │ contable :5054 │ │ contable :5054 │ │ │ │
|
||||
│ │ │ │ │ │ │ │
|
||||
│ │ Vaultwarden │ │ Odoo │ │ │ │
|
||||
│ └───────────────────┘ │ Nextcloud │ └───────────────────┘ │
|
||||
│ │ └───────────────────┘ │ │
|
||||
│ │ │ │ │
|
||||
│ └─────────────────────────┼──────────────────────┘ │
|
||||
│ │ │
|
||||
└───────────────────────────────────┼─────────────────────────────────────┘
|
||||
▼
|
||||
┌─────────────────────────────────────────────────────────────────────────┐
|
||||
│ CAPA DE ALMACENAMIENTO │
|
||||
│ │
|
||||
│ ┌─────────────────────────────────────────────────────────────────┐ │
|
||||
│ │ Cloudflare R2 │ │
|
||||
│ │ ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌────────┐ │ │
|
||||
│ │ │architect │ │ deck │ │ corp │ │ hst │ │ locker │ │ │
|
||||
│ │ │ backups │ │ archivos │ │ archivos │ │ imágenes │ │ general│ │ │
|
||||
│ │ └──────────┘ └──────────┘ └──────────┘ └──────────┘ └────────┘ │ │
|
||||
│ └─────────────────────────────────────────────────────────────────┘ │
|
||||
└─────────────────────────────────────────────────────────────────────────┘
|
||||
│
|
||||
▼
|
||||
┌─────────────────────────────────────────────────────────────────────────┐
|
||||
│ CAPA GPU (RunPod) │
|
||||
│ Estado: BLOQUEADO - Workers no inician │
|
||||
│ │
|
||||
│ ┌──────────┐ ┌──────────┐ ┌──────────┐ │
|
||||
│ │ GRACE │ │ PENNY │ │ FACTORY │ │
|
||||
│ │ 18 módulos│ │ texto │ │generación│ │
|
||||
│ └──────────┘ └──────────┘ └──────────┘ │
|
||||
└─────────────────────────────────────────────────────────────────────────┘
|
||||
┌─────────────────────────────────────────────────────────────┐
|
||||
│ ARCHITECT │
|
||||
│ PostgreSQL central │ Gitea │ Orchestrator │ Infisical │
|
||||
└─────────────────────────────────────────────────────────────┘
|
||||
│ │ │
|
||||
▼ ▼ ▼
|
||||
┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐
|
||||
│ DECK │ │ CORP │ │ HST │
|
||||
│ │ │ │ │ │
|
||||
│ secretaría │ │ secretaría │ │ 973 tags │
|
||||
│ administración │ │ administración │ │ API pública │
|
||||
│ contable │ │ contable │ │ │
|
||||
│ producción │ │ producción │ │ │
|
||||
└─────────────────┘ └─────────────────┘ └─────────────────┘
|
||||
│ │
|
||||
└────────┬───────────┘
|
||||
▼
|
||||
┌─────────────────────────────────────────────────────────────┐
|
||||
│ Cloudflare R2 (buckets) │
|
||||
│ architect │ deck │ corp │ hst │ locker │
|
||||
└─────────────────────────────────────────────────────────────┘
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Flujo de Datos
|
||||
## Flujo de Datos Principal
|
||||
|
||||
El sistema tiene dos flujos según el origen y completitud de la información:
|
||||
|
||||
### Diagrama General
|
||||
|
||||
```
|
||||
PACKET (App móvil)
|
||||
│
|
||||
│ POST /ingest
|
||||
│ Content-Type: multipart/form-data
|
||||
│ X-Auth-Key: {h_instancia}
|
||||
│
|
||||
▼
|
||||
┌─────────────────────────────────────────┐
|
||||
│ secretaria (CLARA / MARGARET) │
|
||||
│ │
|
||||
│ 1. Validar h_instancia │
|
||||
│ 2. Calcular h_entrada (SHA-256) │
|
||||
│ 3. Subir archivos a R2 │
|
||||
│ 4. Insertar en log │
|
||||
│ 5. Estado: 'recibido' (inmutable) │
|
||||
└─────────────────────────────────────────┘
|
||||
│
|
||||
▼
|
||||
┌─────────────────────────────────────────┐
|
||||
│ producción (ALFRED / JARED) │
|
||||
│ │
|
||||
│ 1. Definir orden de ejecución │
|
||||
│ 2. Aplicar flujos predefinidos │
|
||||
│ 3. Enviar a administrativo │
|
||||
└─────────────────────────────────────────┘
|
||||
│
|
||||
▼
|
||||
┌─────────────────────────────────────────┐
|
||||
│ administrativo (MASON) │
|
||||
│ │
|
||||
│ 1. Recibir de producción │
|
||||
│ 2. Ventana flotante 24h │
|
||||
│ 3. Usuario enriquece datos │
|
||||
│ 4. [Futuro] GRACE extrae información │
|
||||
│ 5. Enviar a contable cuando listo │
|
||||
└─────────────────────────────────────────┘
|
||||
│
|
||||
▼
|
||||
┌─────────────────────────────────────────┐
|
||||
│ contable (FELDMAN) │
|
||||
│ │
|
||||
│ 1. Recibir en cola │
|
||||
│ 2. Validar reglas (M-001, M-002, M-003)│
|
||||
│ 3. Crear milestone o bloque │
|
||||
│ 4. Calcular hash_contenido │
|
||||
│ 5. Encadenar (hash_previo) │
|
||||
│ 6. [Futuro] Merkle tree, blockchain │
|
||||
└─────────────────────────────────────────┘
|
||||
│
|
||||
▼
|
||||
┌─────────────────────────────────────────┐
|
||||
│ auditoría (SENTINEL) [planificado] │
|
||||
│ │
|
||||
│ LIGHT: Cada 5 min, reglas automáticas │
|
||||
│ DEEP: Cada 1 hora, muestreo con LLM │
|
||||
└─────────────────────────────────────────┘
|
||||
┌─────────────────────────────────────────────────────────────┐
|
||||
│ ORÍGENES │
|
||||
├─────────────────────────────────────────────────────────────┤
|
||||
│ │
|
||||
│ ┌─────────────────┐ ┌─────────────────────────┐ │
|
||||
│ │ PRODUCCIÓN │ │ ENTRADA MANUAL │ │
|
||||
│ │ Alfred/Jared │ │ (Packet, API, manual) │ │
|
||||
│ │ │ │ │ │
|
||||
│ │ Flujos │ │ Datos incompletos │ │
|
||||
│ │ predefinidos │ │ o ad-hoc │ │
|
||||
│ └────────┬────────┘ └────────────┬────────────┘ │
|
||||
│ │ │ │
|
||||
│ │ (datos completos) │ │
|
||||
│ │ │ │
|
||||
└───────────┼─────────────────────────────────┼──────────────┘
|
||||
│ │
|
||||
▼ ▼
|
||||
┌─────────────────────────────────────────────────────────────┐
|
||||
│ SECRETARÍA │
|
||||
│ Clara / Margaret │
|
||||
├─────────────────────────────────────────────────────────────┤
|
||||
│ • Punto de entrada ÚNICO │
|
||||
│ • Log inmutable │
|
||||
│ • Todo se registra exactamente como llega │
|
||||
└─────────────────────────────────────────────────────────────┘
|
||||
│
|
||||
│
|
||||
┌────────┴────────┐
|
||||
│ │
|
||||
encaja no encaja
|
||||
│ │
|
||||
│ ▼
|
||||
│ ┌─────────────────────────────────────────────────────┐
|
||||
│ │ ADMINISTRACIÓN │
|
||||
│ │ Mason │
|
||||
│ ├─────────────────────────────────────────────────────┤
|
||||
│ │ • Ventana de enriquecimiento (24h configurable) │
|
||||
│ │ • Usuario completa/corrige datos │
|
||||
│ │ • Auto-envío si expira el tiempo │
|
||||
│ └──────────────────────────┬──────────────────────────┘
|
||||
│ │
|
||||
└───────────────┬───────────────┘
|
||||
│
|
||||
▼
|
||||
┌─────────────────────────────────────────────────────────────┐
|
||||
│ CONTABLE │
|
||||
│ Feldman │
|
||||
├─────────────────────────────────────────────────────────────┤
|
||||
│ • Cola de validación (24h configurable) │
|
||||
│ • Consolidación en bloques inmutables │
|
||||
│ • Encadenamiento hash (blockchain-style) │
|
||||
└─────────────────────────────────────────────────────────────┘
|
||||
```
|
||||
|
||||
### Regla de Decisión
|
||||
|
||||
| Condición | Ruta | Descripción |
|
||||
|-----------|------|-------------|
|
||||
| **Encaja** | Secretaría → Feldman | Datos completos de flujo predefinido |
|
||||
| **No encaja** | Secretaría → Mason → Feldman | Entrada manual o incompleta |
|
||||
|
||||
### Flujo de Producción (encaja)
|
||||
|
||||
Cuando la información viene de un proceso predefinido y está completa:
|
||||
|
||||
```
|
||||
Producción (Alfred/Jared)
|
||||
│
|
||||
│ flujo predefinido completo
|
||||
▼
|
||||
Secretaría (Clara/Margaret) ← Registro inmutable
|
||||
│
|
||||
│ directo (salta Mason)
|
||||
▼
|
||||
Contable (Feldman) ← Consolidación
|
||||
```
|
||||
|
||||
### Flujo Estándar (no encaja)
|
||||
|
||||
Cuando la información es manual, ad-hoc o incompleta:
|
||||
|
||||
```
|
||||
Entrada manual (Packet, API, etc.)
|
||||
│
|
||||
▼
|
||||
Secretaría (Clara/Margaret) ← Registro inmutable
|
||||
│
|
||||
▼
|
||||
Administración (Mason) ← Enriquecimiento (24h)
|
||||
│
|
||||
▼
|
||||
Contable (Feldman) ← Consolidación
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Comunicación Entre Servidores
|
||||
## Auditoría (Sentinel)
|
||||
|
||||
| Origen | Destino | Protocolo | Puerto | Propósito |
|
||||
|--------|---------|-----------|--------|-----------|
|
||||
| DECK | ARCHITECT | SSH/Git | 2222 | Push repos |
|
||||
| DECK | R2 | HTTPS | 443 | Almacenamiento |
|
||||
| CORP | ARCHITECT | SSH/Git | 2222 | Push repos |
|
||||
| CORP | R2 | HTTPS | 443 | Almacenamiento |
|
||||
| HST | ARCHITECT | SSH | 22 | Administración |
|
||||
| ARCHITECT | DECK | SSH | 22 | Deploy |
|
||||
| ARCHITECT | CORP | SSH | 22 | Deploy |
|
||||
Sentinel es un **componente independiente** que opera de forma transversal sobre el sistema:
|
||||
|
||||
```
|
||||
┌─────────────────────────────────────────────────────────────┐
|
||||
│ SENTINEL │
|
||||
│ (Auditoría) │
|
||||
├─────────────────────────────────────────────────────────────┤
|
||||
│ │
|
||||
│ Monitoriza y verifica integridad en múltiples puntos: │
|
||||
│ │
|
||||
│ • Secretaría ←── verifica inmutabilidad del log │
|
||||
│ • Mason ←── verifica ventanas temporales │
|
||||
│ • Feldman ←── verifica encadenamiento de bloques │
|
||||
│ │
|
||||
│ Modos de operación: │
|
||||
│ • LIGHT: verificación rápida (cada 5 min) │
|
||||
│ • DEEP: auditoría completa (cada 1h) │
|
||||
│ │
|
||||
└─────────────────────────────────────────────────────────────┘
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Bases de Datos
|
||||
## Principio de Diseño
|
||||
|
||||
| Servidor | Database | Tablas Principales |
|
||||
|----------|----------|--------------------|
|
||||
| ARCHITECT | architect | context_blocks, agents, creds_* |
|
||||
| DECK | tzzr | clara_log, alfred_executions |
|
||||
| CORP | corp | margaret_log, mason_workspace, feldman_* |
|
||||
| HST | hst_images | hst_tags, hst_trees |
|
||||
### Constructores, no gestores
|
||||
|
||||
ARCHITECT (con Claude) es un **constructor de arquitecturas**, no un gestor permanente.
|
||||
|
||||
- ARCHITECT diseña y construye la arquitectura de cada servidor
|
||||
- Cuando la arquitectura esté madura, el servidor será **clonable e independiente**
|
||||
- DECK y CORP funcionan sin conexión a ARCHITECT ni a Claude
|
||||
- Son sistemas diseñados para **usar** servicios de IA (APIs externas, RunPod), no para contenerla
|
||||
|
||||
### Descentralización operativa
|
||||
|
||||
```
|
||||
Architect App (centralizado) → Diseña moldes
|
||||
↓
|
||||
Instancias reales (descentralizadas)
|
||||
↓
|
||||
Cada una con su CORP, su DECK, sus agentes
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Modelo de Instancias
|
||||
|
||||
**DECK** y **CORP** son plantillas. En producción habrá múltiples instancias:
|
||||
|
||||
| Tipo | Ejemplos |
|
||||
|------|----------|
|
||||
| **DECK** | "Deck de Juan", "Deck de Victoria" |
|
||||
| **CORP** | "Empresa A SL", "Empresa B Corp" |
|
||||
|
||||
Cada instancia:
|
||||
- Tiene su propio bucket de almacenamiento
|
||||
- Puede renombrar sus agentes
|
||||
- **Opera de forma autónoma** (no depende de ARCHITECT en runtime)
|
||||
- Tiene su propio gestor de secretos
|
||||
- Hace sus propios backups a R2
|
||||
|
||||
---
|
||||
|
||||
## Servicios Compartidos (Opcionales)
|
||||
|
||||
Las instancias **pueden** conectarse a servicios GPU compartidos:
|
||||
|
||||
| Servicio | Función | Requerido |
|
||||
|----------|---------|-----------|
|
||||
| Grace | Extracción IA | Opcional |
|
||||
| The Factory | Generación | Opcional |
|
||||
| Circle | Colaboración | Opcional |
|
||||
|
||||
> **Nota:** Si los servicios compartidos no están disponibles, la instancia sigue operando. Solo las funciones de IA estarán limitadas.
|
||||
|
||||
Reference in New Issue
Block a user