Construido 100% en Rust. Diseñado para el máximo rendimiento y control absoluto de memoria.
BlackHorse es propiedad intelectual exclusiva de su creador, Martín Cajiao.
Este ecosistema (incluyendo el API, CLI, y librerías blackhorse-precision, blackhorse-skills, blackhorse-index) se distribuye bajo la estricta licencia GNU AGPLv3.
Para que quede absolutamente claro para empresas y desarrolladores comerciales:
- Trabajos Derivados: Si utilizas este código fuente en tu empresa, si ofreces sus capacidades a través de una red (SaaS, API remota), o si lo modificas, estás legalmente obligado a publicar todo el código fuente de tu aplicación bajo esta misma licencia y otorgar atribución visible al autor original.
- Ofuscación y Copia de Lógica: Cambiar los nombres de las variables, reordenar los archivos, transcribir la lógica a otro lenguaje de programación, o usar este repositorio como "referencia de ingeniería" para replicar su comportamiento exacto CONSTITUYE UN TRABAJO DERIVADO. Intentar "disfrazar" el código para evadir la licencia AGPLv3 será tratado como una violación de derechos de autor.
- Exclusividad: Este ecosistema fue diseñado y construido íntegramente por Martín Cajiao. Cualquier intento de apropiación comercial sin autorización será perseguido.
¿Quieres usar BlackHorse en un entorno corporativo cerrado sin liberar tu código? El modelo Open Source es para la comunidad. Si eres una empresa, debes adquirir una Licencia Comercial B2B contactando directamente al creador.
Este proyecto se apoya sobre hombros de gigantes. La ejecución tensorial subyacente utiliza código derivado del proyecto llama.cpp y otros componentes de código abierto.
El código de estos terceros mantiene sus licencias originales permisivas (MIT/Apache). Puedes consultar el archivo THIRD_PARTY_LICENSES.txt en la raíz de este repositorio para ver los créditos y derechos de los autores originales de dichos componentes de bajo nivel.
BlackHorse no es solo un wrapper sobre modelos de IA; es un ecosistema completo dividido en componentes hiper-especializados, logrando lo que herramientas tradicionales no pueden:
- Gestión de Hardware Dinámica: Detección automática en tiempo de ejecución de CUDA (NVIDIA), Vulkan, Apple Metal, ROCm (AMD) y SYCL (Intel). El motor adapta las capas de GPU basándose en la VRAM disponible para evitar Out-of-Memory (OOM).
- Watchdog Anti-Stall: Interoperabilidad segura con C++. Si un hilo del LLM se cuelga durante la inferencia, el sistema lo detecta, reinicia el hilo o el proceso controladamente sin matar el clúster.
- Modelos Concurrentes: Capacidad para cargar un modelo principal (razonamiento profundo, ej. 32B) y un modelo secundario (procesamiento rápido, ej. 8B) compartiendo el mismo backend eficientemente.
- BM25 In-Memory: Hemos escrito un algoritmo BM25 clásico nativo en Rust, prescindiendo de bases de datos pesadas o embeddings de red para la primera capa de filtrado.
- Tokenización Multilingüe: Filtros de stopwords optimizados para flujos de trabajo en Inglés y Español.
- Aislamiento Frontmatter: Parser YAML ultraligero escrito a mano para descubrir skills sin inyectar dependencias enormes al binario final.
- Zero-Drift & Limpieza Síncrona: El crate de precisión ejecuta funciones puras (sin llamadas de red) para limpiar tokens
<think>, auditar drift del tópico principal, detectar código repetitivo mediante similitud Jaccard y aplicar políticas rígidas de ejecución.
El proyecto está diseñado de forma modular. Cada librería puede ser utilizada de forma independiente:
/apps/enterprise-bot-api: El servidor central y orquestador de estado./apps/blackhorse-cli: Cliente de terminal ultrarrápido para interactuar con la API local./crates/blackhorse-precision: (Puro/Síncrono) Limpieza de texto, políticas y heurísticas./crates/blackhorse-skills: Loader de archivos de contexto inteligente./crates/blackhorse-index: Búsqueda léxica e indexación en memoria.
# Compilar con soporte para tarjetas NVIDIA (CUDA)
cargo build --release --features cuda
# Iniciar el servidor backend
./target/release/blackhorse-api --config path/to/config.tomlLas contribuciones de la comunidad son bienvenidas. Por favor, asegúrate de que todos los PRs (Pull Requests) pasen los tests de memoria estricta y respeten la arquitectura de "Crates Puros" (sin I/O donde no se debe).