Ir al contenido

Cumplimiento NDAA

Verificado contra el código el 22 de agosto de 2026 · Mantis Server 1.3.2 Revisado el 24 de agosto de 2026 · Mantis Server 1.4.16 — sin dependencias nuevas

Este documento no es una declaración de intenciones: es el inventario completo de lo que Mantis incorpora, con el origen de cada pieza y las órdenes exactas para que un auditor lo reproduzca sin depender de nosotros.


La Sección 889 de la NDAA (ley de EE. UU.) prohíbe al gobierno federal y a sus contratistas usar equipos o servicios de telecomunicaciones y videovigilancia de un grupo concreto de empresas:

Huawei · ZTE · Hikvision · Dahua · Hytera — y sus filiales, entre ellas HiSilicon (Huawei) y las marcas OEM de Hikvision y Dahua.

Dos aclaraciones que evitan malentendidos frecuentes:

  1. No existe una «certificación NDAA» oficial. Ningún organismo emite un sello previo. Lo que se declara es que el producto no incorpora tecnología de los proveedores prohibidos, y esa declaración se sostiene con evidencia reproducible.

  2. Soportar una marca no es incorporarla. Poder leer un NVR de un fabricante mediante protocolos abiertos es interoperabilidad, no dependencia tecnológica. Lo que la norma restringe es integrar su hardware, su código o sus servicios.


Ámbito Piezas De proveedor restringido
Módulos del backend (Go) 59 0
Paquetes de analítica (Python) 14 0
Paquetes de la estación (C#/.NET) 3 0
Binarios de terceros empaquetados 5 0
Modelos de inteligencia artificial 6 0
SDK de fabricante de cámaras 0

Cero coincidencias con la lista de la Sección 889 en las 87 piezas.


Lo sustancial de Mantis está escrito por Intunet en Colombia. No es un integrador de componentes de terceros: es un producto propio que usa infraestructura de código abierto ampliamente auditada.

Componente Tecnología Origen
Backend / API Go Desarrollo propio — Colombia
Interfaz web React + TypeScript Desarrollo propio — Colombia
Estación de escritorio C# .NET 8 Desarrollo propio — Colombia
Analítica de video Python Desarrollo propio — Colombia
Panel de licencias Go + React Desarrollo propio — Colombia
Clientes ONVIF / RTSP Go Desarrollo propio — Colombia

El último punto importa y se detalla en el apartado 7: los clientes que hablan con cámaras y grabadores los escribimos nosotros, no son SDK del fabricante.


Estos cinco componentes viajan dentro del instalador. Son proyectos de código abierto conocidos, cada uno con su licencia y su repositorio público.

Componente Función Origen Licencia
PostgreSQL Base de datos PostgreSQL Global Development Group (EE. UU.) PostgreSQL
FFmpeg Tratamiento de video FFmpeg (comunidad, Europa) LGPL / GPL
go2rtc Streaming RTSP / WebRTC AlexxIT (comunidad) MIT
Caddy Servidor web y TLS Stack Holdings (EE. UU.) Apache 2.0
Python + CUDA Entorno de analítica Python Software Foundation · NVIDIA (EE. UU.) PSF · propietaria NVIDIA

Ninguno pertenece a un proveedor de la Sección 889, ni depende de uno.


Modelo Para qué Origen
InsightFace / antelopev2 Reconocimiento facial Proyecto académico abierto
YOLO (Ultralytics) Detección de objetos y personas Ultralytics — EE. UU. / Reino Unido
OSNet Re-identificación de personas Investigación académica abierta
PyTorch Motor de inferencia Linux Foundation (Meta, EE. UU.)
ONNX Runtime Motor de inferencia Microsoft (EE. UU.)
OpenCV Tratamiento de imagen OpenCV.org (fundación sin ánimo de lucro)

Los modelos se ejecutan en el servidor del cliente. Ninguna imagen sale del centro para ser analizada.

Sobre el origen de la investigación en visión artificial. Buena parte de la literatura académica de este campo tiene autores de universidades chinas, y varios de estos modelos citan ese trabajo. Eso no es una dependencia de la Sección 889: la norma nombra empresas concretas cuyos equipos y servicios se prohíben, no la procedencia de un artículo científico. Los pesos que Mantis distribuye provienen de repositorios públicos con licencia abierta, verificables por su huella criptográfica.


6.1 Directas — las que declaramos nosotros

Sección titulada «6.1 Directas — las que declaramos nosotros»
Módulo Para qué Origen
gin-gonic/gin Framework web Comunidad
gin-contrib/cors Control de origen cruzado Comunidad
gorm.io/gorm + driver/postgres Acceso a base de datos Comunidad
glebarez/sqlite SQLite sin cgo (solo pruebas) Comunidad
golang-jwt/jwt/v5 Tokens de sesión Comunidad
gorilla/websocket Eventos en tiempo real Comunidad
pquerna/otp Segundo factor (TOTP) Comunidad
redis/go-redis/v9 Caché entre nodos Redis Ltd. (EE. UU. / Israel)
joho/godotenv Lectura de configuración Comunidad
golang.org/x/crypto Criptografía Google / equipo de Go
gopkg.in/yaml.v3 Configuración de go2rtc Canonical
stretchr/testify Pruebas automáticas Comunidad

6.2 Indirectas de origen chino — declaradas por transparencia

Sección titulada «6.2 Indirectas de origen chino — declaradas por transparencia»

Cuatro de los 46 módulos indirectos proceden de empresas chinas. Ninguna está en la Sección 889, pero se declaran porque un auditor las va a encontrar y merece la explicación por adelantado:

Módulo Empresa Por qué está
bytedance/sonic ByteDance Acelerador de JSON que incorpora Gin
bytedance/sonic/loader ByteDance Auxiliar del anterior
cloudwego/base64x CloudWeGo (ByteDance) Codificación base64 acelerada
cloudwego/iasm CloudWeGo (ByteDance) Ensamblador que usa sonic

Cuatro precisiones:

  1. No están en la lista. La Sección 889 nombra cinco empresas concretas. ByteDance no es una de ellas, ni filial de ninguna.
  2. Son indirectas. Las arrastra Gin, el framework web. Mantis no las invoca en ninguna línea de su código.
  3. Son código abierto auditable, no un servicio ni un binario cerrado. Se compilan desde fuente en cada build.
  4. No hablan con la red. Son rutinas de codificación de texto en memoria: no abren conexiones ni leen ficheros.

Si un pliego exigiera excluirlas, se recompila Gin sin el acelerador de JSON, y sonic deja de entrar en el binario. Es un cambio de opciones de compilación, no un rediseño. Podemos entregar una compilación así a petición.

Los 42 módulos indirectos restantes proceden del equipo de Go (golang.org/x), de Google (protobuf, uuid), del proyecto modernc.org (Irlanda) y de la comunidad de código abierto. La lista íntegra está en go.mod y se puede leer sin ejecutar nada.


7. Dependencias de analítica y de la estación

Sección titulada «7. Dependencias de analítica y de la estación»

Python (14 paquetes): numpy, opencv-python-headless, onnxruntime-gpu, insightface, mediapipe, requests, python-dotenv, psycopg2-binary, psutil, redis y cinco bibliotecas de CUDA de NVIDIA. Todas de comunidades de código abierto o de empresas estadounidenses.

Estación de escritorio (3 paquetes): LibVLCSharp, LibVLCSharp.WPF y VideoLAN.LibVLC.Windows — todos del proyecto VideoLAN (Francia).


8. Lo que sí aparece al buscar las marcas prohibidas

Sección titulada «8. Lo que sí aparece al buscar las marcas prohibidas»

Una búsqueda de «Hikvision» o «Dahua» en el código devuelve coincidencias. Conviene explicarlas por adelantado, porque es lo primero que encuentra un auditor y en frío parece lo contrario de lo que es.

Todas son de interoperabilidad de lectura:

  • Mantis puede conectarse a NVR ya instalados de varias marcas, incluidas algunas restringidas, para leer video que esos equipos ya grabaron. Es frecuente en una migración: el cliente tiene grabadores en servicio y quiere aplicarles analítica sin tirarlos.
  • Esa conexión usa protocolos abiertos de la industria — ONVIF, RTSP y HTTP con autenticación digest — implementados por nosotros en Go. Las coincidencias son el nombre de la marca en un mapa de rutas y en el texto que ve el usuario al elegir el tipo de grabador.
  • No hay SDK, ni biblioteca, ni binario, ni firmware del fabricante.

Verificado en el árbol del producto: ninguna carpeta de SDK y ningún .dll o .so de terceros de fabricantes de cámaras.

Es la misma situación que un navegador que puede abrir cualquier sitio web: soportar el protocolo no es incorporar la tecnología del otro extremo.

⚠️ Esto importa en la instalación, no en el software. Mantis cumple la Sección 889; las cámaras que se conecten, no necesariamente. Un contrato federal estadounidense exigiría además que el hardware instalado no sea de marcas restringidas. Esa decisión pertenece al pliego del cliente, y Mantis funciona igual con cámaras que sí cumplen.


Mantis no requiere conexión a internet para operar, lo que elimina de raíz la preocupación por tráfico hacia servidores extranjeros:

  • La licencia se valida sin conexión, con firma criptográfica Ed25519.
  • Los modelos de IA se ejecutan en el servidor del cliente. Ninguna imagen ni video sale del centro.
  • No hay telemetría, ni analítica de uso, ni actualizaciones automáticas, ni «llamada a casa» de ningún tipo.

La única llamada externa del sistema es a la API de Telegram, y solo si el administrador configura ese canal de notificación. Está apagada por defecto y se puede no usar nunca. Comprobable con la orden 3 del apartado siguiente: no hay ninguna otra dirección externa en el código.


No hace falta creer esta página. Sobre el código fuente:

Ventana de terminal
# 1. SDK o binarios de fabricante de cámaras. Debe salir vacío.
find . -iname "*sdk*" -type d
find . \( -name "*.dll" -o -name "*.so" \) -not -path "*/node_modules/*"
# 2. Proveedores de la Sección 889 en TODAS las dependencias del backend.
# Debe salir vacío.
grep -iE "huawei|zte|hikvision|dahua|hytera|hisilicon" \
desktop-windows/server/backend/go.mod \
desktop-windows/server/backend/go.sum
# 3. Direcciones externas a las que llama el software.
# Solo debe aparecer api.telegram.org.
grep -rhoE "https?://[a-zA-Z0-9.-]+" \
--include="*.go" desktop-windows/server/backend/internal/ | sort -u
# 4. Inventario completo de dependencias, con su origen.
cat desktop-windows/server/backend/go.mod
cat desktop-windows/server/workers/requirements-gpu-windows.txt

El código fuente está disponible para auditoría del cliente bajo acuerdo de confidencialidad.


Mantis es un producto desarrollado íntegramente en Colombia por Intunet. No incorpora hardware, código fuente, bibliotecas, firmware ni servicios de Huawei, ZTE, Hikvision, Dahua, Hytera ni de sus filiales.

Su capacidad de conectarse a sistemas de terceros se basa exclusivamente en protocolos abiertos de la industria — ONVIF y RTSP — implementados por Intunet.

Esta declaración se sostiene sobre el inventario de las 87 piezas enumeradas arriba y es reproducible con las órdenes del apartado 10.

Última verificación contra el código: 24 de agosto de 2026, versión 1.4.16.

Se repitió sobre la 1.3.2, que añade 6.489 líneas respecto a la 1.2.0: ninguna dependencia nueva (go.mod y go.sum sin cambios), ningún proveedor restringido y ninguna llamada externa nueva.

Revisado de nuevo sobre la 1.4.16 (24/08/2026). go.mod y go.sum siguen sin cambios, y no se añadió ningún paquete de Python.

El único componente nuevo que se distribuye es el intérprete de Python «embeddable» oficial (~21 MB), que ahora viaja dentro del instalador. No introduce ningún proveedor nuevo: procede de python.org (Python Software Foundation, EE. UU.), la misma fuente del entorno de Python que ya figura en el inventario. Se incluyó porque un entorno de Python no funciona sin el intérprete que lo generó, y ese no estaba viajando con el producto — motivo por el que la analítica no arrancaba en ninguna instalación.

La comprobación debe repetirse en cada versión mayor y siempre que se añada una dependencia, por corta que sea. Las cuatro órdenes del apartado 10 tardan menos de un minuto.