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.
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:
- Detecta tu hardware real
- Evalúa qué modelos Ollama pueden correr sin bloquear tu sistema
- Recomienda el ideal según tu dominio de trabajo
- Lo configura como un experto especializado con system prompt preciso
- Lo ejecuta en conversación interactiva directamente en terminal
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.
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
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)
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.
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.
- Python 3.10 o superior
- Ollama instalado
pip install -r requirements.txtollama servepython3 main.py| 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 |
| 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 pullmanualmente.
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.
| 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.
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