SOMA (Sistema Operativo Multi-Agente) es un sistema operativo experimental de 64 bits desarrollado desde cero en C freestanding y ensamblador, sin Linux, glibc, POSIX ni dependencias de runtime de propósito general.
El objetivo de SOMA es explorar una arquitectura AI-native, donde agentes basados en LLM puedan interactuar con un entorno operativo controlado por el propio kernel, con acceso directo a los subsistemas de memoria, almacenamiento, red y ejecución.
⚠️ Estado del proyecto: experimental. SOMA está orientado a investigación, prototipado y experimentación con sistemas operativos y agentes autónomos.
- Kernel ReAct: bucle de razonamiento/acción integrado en el entorno del sistema que permite ejecutar herramientas y evaluar telemetría.
- Orquestación jerárquica: el agente principal (
soma) puede delegar tareas especializadas a otros agentes, comobuscador. - Blackboard IPC: intercambio de contexto entre agentes mediante una pizarra compartida persistente en
/agent/blackboard.txt. - Herramientas nativas: los agentes interactúan con funcionalidades del sistema mediante comandos y primitivas expuestas por el kernel.
- BM25 / TF-IDF: motor de recuperación de información implementado en C para buscar contenido almacenado en el sistema de archivos.
- Normalización textual: soporte para normalización UTF-8 y comparación de términos con normalización de diacríticos.
- Búsqueda sobre memoria persistente: integración con el almacenamiento de SOMA.
- VirtIO-NET: controlador de red para entornos virtualizados mediante QEMU.
- Ethernet, ARP e IPv4: implementación de los componentes fundamentales de la pila de red.
- ICMP, UDP y TCP: soporte para comunicación y diagnóstico.
- HTTPD: servidor HTTP integrado en el sistema.
- API REST: endpoints JSON para exponer telemetría y estado del sistema.
- Dashboard Web: interfaz HTML para observar el estado operativo desde el host.
- SOMAFS02: sistema de archivos experimental sobre VirtIO-BLK.
- Hasta 16 KiB por archivo: límite definido por el formato actual.
- Hasta 64 inodos dinámicos: capacidad correspondiente a la implementación actual.
- Espacios de trabajo: separación lógica mediante rutas como
/workspace/y/mis_archivos/. - KHeap: asignador dinámico utilizado por el kernel y sus subsistemas.
- Memoria virtual: soporte de paginación de cuatro niveles en x86_64.
┌───────────────────────────────────────────────────────────────┐
│ SOMA BARE-METAL KERNEL │
│ │
│ ┌───────────────────┐ ┌─────────────────────────────┐ │
│ │ Interactive CLI │◄─────►│ Autonomous ReAct │ │
│ │ UTF-8 / COM1 │ │ Orchestrator: soma │ │
│ └─────────┬─────────┘ └──────────────┬──────────────┘ │
│ │ │ │
│ │ delegate │ │
│ │ ▼ │
│ ┌─────────▼─────────┐ ┌─────────────────────────────┐ │
│ │ SOMAFS / RamFS │◄─────►│ Research Agent │ │
│ │ /workspace /mem │ │ buscador / Blackboard IPC │ │
│ └─────────┬─────────┘ └──────────────┬──────────────┘ │
│ │ │
│ ┌─────────▼───────────────────────────────────────────────┐ │
│ │ BM25 / TF-IDF + KHeap + Memory Management │ │
│ └───────────────────────────┬─────────────────────────────┘ │
│ │ │
│ ┌───────────────────────────▼─────────────────────────────┐ │
│ │ Networking / HTTPD │ │
│ │ TCP · UDP · IPv4 · ARP · ICMP │ │
│ └───────────────────────────┬─────────────────────────────┘ │
│ │ │
│ ┌────────────────▼────────────────┐ │
│ │ VirtIO-NET / VirtIO-BLK │ │
│ └────────────────┬────────────────┘ │
└──────────────────────────────┼────────────────────────────────┘
│ VirtIO Queues
▼
┌───────────────────────────────────────────────────────────────┐
│ QEMU │
│ Host port forwarding :8090 │
└──────────────────────────────┬────────────────────────────────┘
│ SLIRP NAT / LAN
▼
┌───────────────────────────────────────────────────────────────┐
│ LAN / AI Server │
│ llama.cpp / API │
│ 192.168.1.200:8087 │
└───────────────────────────────────────────────────────────────┘
SOMA utiliza Docker para proporcionar un entorno reproducible de compilación cruzada y QEMU para ejecutar el sistema virtualizado.
git clone https://github.com/mlalejandre/soma.git
cd somapython3 ejecutar.pyEl script prepara el entorno de compilación, construye los componentes C/ASM, genera la imagen de arranque y lanza QEMU.
Una vez iniciado QEMU:
http://localhost:8090/
El puerto 8090 corresponde al forwarding configurado en el host; el servidor HTTP interno utiliza el puerto 80.
Una vez arrancado el sistema, SOMA proporciona una shell interactiva orientada a operaciones del kernel, almacenamiento, red y agentes.
| Comando | Descripción |
|---|---|
soma <misión> |
Asigna un objetivo al orquestador principal. |
delegate <agente> "<misión>" |
Delega una tarea a un agente especializado. |
bm25 <término> |
Busca información relevante en el almacenamiento persistente. |
| Comando | Descripción |
|---|---|
somafetch |
Muestra información y telemetría del sistema. |
httpd |
Muestra el estado del servidor HTTP. |
ps / threads |
Muestra tareas y threads activos. |
ping <ip> |
Ejecuta una prueba ICMP. |
curl <url> |
Realiza una petición HTTP mediante la pila de red. |
| Comando | Descripción |
|---|---|
ls -a /workspace |
Lista el contenido del workspace. |
cat <archivo> |
Muestra el contenido de un archivo. |
nano <archivo> |
Abre el editor de texto interactivo. |
soma> investiga los principios de la computación cuántica y guarda tus notas
Usuario
│
▼
soma
│
├── analiza el objetivo
│
├── delega ───────────────► buscador
│ │
│ ├── search
│ ├── curl
│ └── sintetiza información
│ │
│ ▼
│ Blackboard IPC
│ │
◄──────────────────────────────────────┘
│
├── lee el contexto compartido
│
├── genera el informe
│
└── write
│
▼
/workspace/notas_quantica.txt
somarecibe el objetivo y determina qué información necesita.- El orquestador delega la investigación al agente
buscador. buscadorutiliza las herramientas disponibles para recuperar información.- El agente sintetiza los resultados y los publica en el Blackboard.
somarecupera el contexto compartido.- El orquestador genera el resultado final.
- El informe queda persistido en
/workspace/notas_quantica.txt. - El resultado puede consultarse posteriormente mediante la shell o el Dashboard Web.
kernel/
├── arch/ # Arquitecturas
├── boot/ # Arranque
├── drivers/ # VirtIO y dispositivos
├── mm/ # Gestión de memoria
├── net/ # Networking
├── fs/ # SOMAFS / RamFS
├── ai/ # Agentes y orquestación
├── search/ # BM25 / TF-IDF
└── httpd/ # Servidor HTTP / API
La estructura es conceptual y puede variar según la versión del árbol de código.
SOMA ejecuta gran parte de su funcionalidad privilegiada en Ring 0 dentro del entorno virtualizado.
Esto permite:
- Acceso directo a primitivas del kernel.
- Control sobre memoria y dispositivos virtualizados.
- Integración estrecha entre IA y sistema operativo.
- Una arquitectura con pocas capas de abstracción entre agentes y kernel.
Sin embargo:
- Ring 0 proporciona privilegios, no aislamiento de seguridad entre agentes.
- Por ello, los agentes con capacidades privilegiadas deben considerarse confiables.
- No ejecutes agentes, modelos, código o entradas no confiables en una instancia de SOMA conectada a una red sensible.
- Linux, macOS o Windows con Docker.
- Docker / Docker Compose.
- Python 3.
- QEMU.
- Toolchain compatible con x86_64 y/o AArch64.
llama.cpp
│
▼
192.168.1.200:8087
│
▼
SOMA
La dirección IP anterior representa una configuración de laboratorio y puede cambiarse según el entorno.
┌────────────────────┐
│ Artificial │
│ Intelligence │
└─────────┬──────────┘
│
▼
┌─────────────────────────┐
│ SOMA │
│ AI-Native OS Layer │
└────────────┬────────────┘
│
┌─────────────┴─────────────┐
▼ ▼
┌──────────────────┐ ┌──────────────────┐
│ Operating │ │ Autonomous │
│ Systems │ │ Agents │
└──────────────────┘ └──────────────────┘
El proyecto investiga, entre otros temas:
- Sistemas operativos especializados para agentes.
- Tool use a nivel de sistema.
- Orquestación multiagente.
- Memoria persistente para agentes.
- Recuperación de información integrada en el sistema.
- Networking nativo para agentes autónomos.
- Interfaces humano-IA integradas en el sistema operativo.
- Arquitecturas AI-native sin depender de un sistema operativo convencional.
SOMA v0.2 — Experimental
Las APIs, estructuras internas, protocolos y formatos de almacenamiento pueden cambiar entre versiones. No se garantiza compatibilidad binaria, estabilidad de ABI ni compatibilidad hacia atrás.
SOMA se distribuye bajo la licencia MIT. Consulta LICENSE para conocer los términos completos.
Las contribuciones son bienvenidas. Antes de abrir un Pull Request:
- Comprueba que el proyecto compila.
- Ejecuta las pruebas disponibles.
- Documenta cambios en interfaces o formatos.
- Evita introducir dependencias innecesarias en el kernel.
- Mantén separadas las capas de arquitectura, drivers, red, FS y agentes.
Para cambios importantes, documenta:
- Problema y motivación.
- Diseño propuesto.
- Impacto sobre ABI/API, memoria y rendimiento.
- Compatibilidad con x86_64 y AArch64.
Un sistema operativo no debería limitarse a ejecutar agentes.
También puede convertirse en el entorno operativo nativo de esos agentes.
SOMA explora esa posibilidad.