Skip to content

RikardoBonilla/ORCA

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

ORCA

Orchestrator for Running Compact Agents

ORCA es un orquestador CLI de agentes IA especializados que corren localmente. Su principio central: un modelo pequeño bien configurado supera a un modelo grande genérico en una tarea específica.

No necesitas el modelo más nuevo ni el más potente. Necesitas el ideal para tu equipo y tu objetivo.


Por qué existe ORCA

El ecosistema de modelos locales (Ollama, llama.cpp, etc.) crece rápido pero nadie resuelve una pregunta simple: ¿qué modelo debo usar en mi máquina para esta tarea?

Las herramientas actuales te dicen qué modelos existen, no cuáles pueden correr eficientemente en tu hardware ni cuáles son los mejores para lo que necesitas hacer.

ORCA cierra ese gap:

  1. Detecta tu hardware real
  2. Evalúa qué modelos Ollama pueden correr sin bloquear tu sistema
  3. Recomienda el ideal según tu dominio de trabajo
  4. Lo configura como un experto especializado con system prompt preciso
  5. Lo ejecuta en conversación interactiva directamente en terminal

Principio de diseño

Modelos pequeños + contexto preciso = resultados superiores.

Un modelo de 3B parámetros con el system prompt correcto supera en una tarea específica a un modelo de 70B sin contexto. ORCA formaliza ese patrón en un sistema reproducible y adaptado al hardware real del usuario.


Cómo funciona — el flujo completo

python3 main.py
       |
       v
[ 1. hardware_scan ]
    Detecta: SO, arquitectura, CPU (físicos/lógicos), RAM disponible, GPU/VRAM
    Soporta: NVIDIA (pynvml), AMD (pyrsmi), Apple Silicon (psutil), Solo CPU
    Resultado: perfil del dispositivo en tiempo real
       |
       v
[ 2. model_evaluator ]
    Consulta modelos instalados en Ollama via ollama.list()
    Para cada modelo conocido (instalado o no):
        - Obtiene parameter_size y quantization_level via ollama.show()
        - Calcula RAM requerida con formula dinamica
        - Clasifica segun RAM disponible del dispositivo
    Muestra tabla con umbrales explicados
       |
       v
[ 3. recommender ]
    Usuario elige dominio: code / security / writing / general / embeddings
    Filtra modelos viables para ese dominio
    Sugiere el mejor segun prioridad del thresholds.json
    Si el modelo no esta instalado: ofrece descargarlo con barra de progreso
    Usuario confirma o elige otro de la lista
       |
       v
[ 4. expert_builder ]
    Carga system prompt especializado desde experts/{dominio}.txt
    Construye configuracion completa del agente
    Muestra resumen: modelo, dominio, RAM, caracteres del prompt
       |
       v
[ 5. agent_runner ]
    Abre conversacion interactiva en terminal
    Mantiene historial completo de la sesion en memoria
    Streaming token a token (respuesta en tiempo real)
    Salir: escribe "salir" o Ctrl+C

Estructura del proyecto

ORCA/
├── main.py                      <- entrada principal — corre todo con un comando
├── requirements.txt             <- dependencias
├── README.md                    <- este archivo
│
├── config/
│   └── thresholds.json          <- constantes del sistema (no tocar sin razon)
│
├── core/
│   ├── __init__.py
│   ├── hardware_scan.py         <- fase 1: perfil del dispositivo
│   ├── model_evaluator.py       <- fase 2: evaluacion y clasificacion de modelos
│   ├── recommender.py           <- fase 3: recomendacion por dominio + descarga
│   ├── expert_builder.py        <- fase 4: carga system prompt y configura agente
│   └── agent_runner.py          <- fase 5: conversacion interactiva con streaming
│
├── experts/
│   ├── code.txt                 <- experto en codigo limpio y buenas practicas
│   ├── security.txt             <- experto en ciberseguridad y hacking etico
│   ├── writing.txt              <- experto en redaccion profesional
│   └── general.txt              <- asistente de proposito general
│
└── models/
    └── rkdCode.modelfile        <- modelo custom (base: qwen2.5-coder:14b)

El cerebro: thresholds.json

ORCA no necesita una lista hardcodeada de cuanta RAM usa cada modelo. ollama.show() entrega parameter_size y quantization_level en tiempo real. Con eso, la RAM se calcula dinamicamente para cualquier modelo presente o futuro.

thresholds.json almacena unicamente las constantes matematicas del sistema:

Formula de evaluacion:

RAM_requerida_GB = (parametros × bytes_por_cuantizacion × 1.2) / 1024³
Cuantizacion Bytes por parametro
Q4_K_M 0.56
Q4_0 0.50
Q5_K_M 0.69
Q5_0 0.63
Q8_0 1.00
F16 2.00
F32 4.00

Clasificacion segun RAM disponible:

Clasificacion Condicion Significado
eficiente uso <= 60% corre fluido sin afectar el sistema
limite uso <= 85% funciona pero ajustado
inviable uso > 85% bloquearia el sistema

La tabla muestra el % real de uso por modelo y los umbrales calculados para el dispositivo en uso.


Expertos — la especialización

Cada dominio tiene un system prompt construido para maximizar el rendimiento del modelo en esa area. El system prompt define: rol, tono, reglas, restricciones y formato de respuesta.

Dominio Archivo Modelos recomendados (<=7B)
Codigo experts/code.txt qwen2.5-coder:7b, qwen2.5-coder:3b
Seguridad experts/security.txt phi3:3.8b, llama3.2:3b
Redaccion experts/writing.txt mistral:7b, qwen2.5:7b
General experts/general.txt llama3.2:3b, deepseek-r1:1.5b
Embeddings experts/general.txt nomic-embed-text

Los system prompts son editables. Ajustar el prompt es la forma mas efectiva de mejorar el rendimiento de un modelo pequeño sin cambiar el modelo.


Instalacion y uso

Requisitos

  • Python 3.10 o superior
  • Ollama instalado

Instalar dependencias

pip install -r requirements.txt

Iniciar Ollama (necesario antes de correr ORCA)

ollama serve

Correr ORCA

python3 main.py

GPU — librerias opcionales

Hardware Libreria Instalacion
NVIDIA pynvml pip install pynvml
AMD pyrsmi pip install pyrsmi
Apple Silicon ninguna psutil es suficiente
Solo CPU ninguna funciona sin GPU

Modelos probados

Modelo RAM real Dominio Resultado
deepseek-r1:1.5b 1.13 GB code / general instalado y funcional
nomic-embed-text 0.09 GB embeddings disponible

Los modelos se instalan desde ORCA directamente — no es necesario usar ollama pull manualmente.


Hardware de desarrollo

Desarrollado y probado en:

  • MacBook Pro Intel — Darwin x86_64
  • 8 GB RAM / ~2 GB disponibles en uso normal
  • Sin GPU dedicada — Solo CPU

ORCA esta disenado para funcionar bien incluso en hardware limitado.


Estado del proyecto

Fase Modulo Estado
1 hardware_scan.py completo
2 model_evaluator.py completo
3 recommender.py completo
4 expert_builder.py completo
5 agent_runner.py completo
main.py completo

Version actual: nucleo CLI funcional — uso personal. Siguiente etapa: interfaz web local, multi-usuario.


Alcance y vision

Hoy: herramienta CLI personal para experimentar con modelos locales, aprender patrones de orquestacion y tener un asistente especializado disponible sin depender de APIs externas ni internet.

Futuro: cuando el nucleo este solido y probado, ORCA escala a multi-usuario con interfaz web local.

Principio que no cambia: el hardware del usuario define que puede correr. ORCA siempre respeta eso.


ORCA — primer proyecto oficial de Ricardo Bonilla. Iniciado: 2026-03-27

About

Hardware-aware CLI that detects your specs, evaluates local Ollama models by RAM, and auto-configures the most efficient AI agent for your domain: code, security, writing or general.

Topics

Resources

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages