Avanzado 16 minDespliegue

IA para programar en la empresa: proteger el código propietario, los NDA y el secreto industriel

Un desarrollador pega una función de negocio en un asistente en la nube para refactorizarla. En un segundo, un fragmento de código cubierto por una cláusula de cesión y un NDA acaba de salir de tu perímetro, pasando por los servidores de un tercero estadounidense. Para una empresa de software, una oficina de ingeniería o una empresa de servicios informáticos sujeta a obligaciones de secreto industrial, este gesto aparentemente inocuo supone una vulneración jurídica y contractual. Esta guía está dirigida al responsable técnico o al director de sistemas de información que quiere equipar a sus desarrolladores con un copiloto eficaz sin que jamás salga una línea de código propietario de la red de la empresa. Veremos por qué GitHub Copilot y Cursor plantean problemas a pesar de sus opciones 'empresa', qué exigen realmente el RGPD y el AI Act, y después cómo desplegar una pila 100% local (Ollama, Cline, Aider, Tabby) en un equipo o en un servidor GPU compartido, con una política auditable de no exfiltración.

Por Mohamed Meguedmi·Actualización 2026-08-27·Probado en Ubuntu 24.04

#El verdadero riesgo: tu código va a un tercero

El código fuente no es un dato como cualquier otro. Contiene tus algoritmos, tus secretos de fabricación, tus claves de API incrustadas en el código (esto ocurre), tu arquitectura de seguridad y, jurídicamente, a menudo está cubierto por una cláusula de cesión de derechos en beneficio de un cliente. Un asistente de código en la nube lee el contexto alrededor del cursor, a veces todo el repositorio para su indexación, y envía estos fragmentos a un modelo remoto. El riesgo no es teórico: combina filtración de secretos industriales, incumplimiento de acuerdos de confidencialidad (NDA) e incumplimiento del RGPD en cuanto un comentario contiene datos personales.

Secreto industrial
Un algoritmo de propiedad exclusiva expuesto a terceros pierde su cualidad de secreto (art. L151-1 del Código de Comercio): la protección jurídica desaparece.
Cláusula de cesión
Para código entregado a un cliente, el contrato suele prohibir cualquier comunicación de ese código a un subcontratista no autorizado. Un asistente en la nube es un subcontratista no declarado.
NDA con un proveedor
Trabajas en el código de un partner bajo un acuerdo de confidencialidad: enviarlo a OpenAI o Anthropic constituye una violación directa.
Datos personales
Un conjunto de pruebas, un log inline o un comentario con una dirección de correo electrónico hacen que el envío quede sujeto al RGPD.
!
La trampa del «no entrenamos con tus datos»
La promesa de no usar los datos para entrenar modelos (zero data retention) solo resuelve una parte del problema. El código sigue transmitiéndose, se procesa en memoria en servidores fuera de la UE y continúa sujeto a la CLOUD Act estadounidense. No entrenar no equivale a no transferir datos.

#Por qué Copilot y Cursor vulneran tus NDA

El kit de IA Local para Empresas

Desplegar una IA local en el trabajo: RGPD, AI Act, arquitectura multiusuario, costes, nota para la dirección.

  • Espacio en línea de por vida
  • PDF + archivos
  • Reembolsado 30 j

GitHub Copilot y Cursor son excelentes herramientas de productividad, pero su modelo de negocio se basa en LLM alojados (Copilot en la infraestructura de Azure/OpenAI, Cursor en OpenAI y Anthropic). Incluso con los planes Business o Enterprise, tu código sale del equipo para que se complete en el servidor. Las opciones 'content exclusion' o 'privacy mode' reducen la retención, pero el flujo de datos por la red hacia un tercero sigue existiendo. En el caso de una cláusula de NDA que prohíba cualquier divulgación a un tercero no identificado, este flujo constituye un incumplimiento, independientemente de la política de retención.

Copilot Business
Código enviado a GitHub/Azure para completar código. 'No training' activado por defecto, pero con transferencia fuera de la UE y sujeción al CLOUD Act.
Cursor (Privacy Mode)
El modo privado evita la retención por parte de Cursor, pero las consultas siguen pasando por las API de OpenAI y Anthropic.
Cursor sin Privacy Mode
El código puede ser conservado y utilizado para mejorar el producto. Inaceptable bajo NDA estricto.
Límite contractual común
Con ninguna de estas ofertas se firma un DPA que cubra una cláusula de cesión del código del cliente a un subcontratista tercero específico.
i
El test decisivo
Pregúntale a tu equipo jurídico: '¿Puedo enviar el código del cliente X a un servidor Y de un tercero situado en Estados Unidos?'. Si la respuesta es no para uno solo de tus contratos, ningún asistente en la nube puede desplegarse de forma homogénea en el equipo. El uso local se convierte entonces en la única política coherente.

#Lo que exigen el RGPD y el AI Act en materia de código fuente

El RGPD no habla de «código fuente», sino de datos personales. El código los contiene con más frecuencia de lo que se cree: direcciones de correo electrónico en los comentarios, identificadores de pruebas, datos de inicialización y trazas de registros. En cuanto uno de estos elementos se envía a un asistente en la nube, realizas una transferencia de datos, lo que exige una base jurídica, un encargado del tratamiento sujeto a un DPA (art. 28) y, fuera de la UE, un mecanismo de transferencia válido (cláusulas contractuales tipo). El AI Act, por su parte, clasifica la mayoría de los asistentes de código como de riesgo limitado, con obligaciones principalmente de transparencia; pero lo que realmente está en juego para ti viene antes, en la gobernanza de los datos de entrada del modelo.

RGPD artículo 28
Cualquier asistente en la nube que trate tus datos es un encargado del tratamiento y requiere un DPA firmado. Muchos equipos lo utilizan sin contrato.
RGPD: transferencias fuera de la UE
Sin alojamiento en la UE, se necesitan garantías (SCC) y un análisis de transferencia. El alojamiento local elimina completamente la cuestión.
AI Act (transparencia)
Riesgo limitado para el asistente de código: informar que el contenido es generado por IA. Poco restrictivo, pero debe documentarse.
Minimización por diseño
La vía más sencilla para cumplir los requisitos: no transferir nada en absoluto. Una arquitectura local aplica la minimización por diseño.
→
En local: cumplimiento por sustracción
En lugar de acumular DPA, SCC, análisis de impacto y exclusiones de contenido para una herramienta en la nube, el despliegue 100 % local elimina la transferencia. Sin transferencia, sin encargado del tratamiento, sin cuestiones relativas al RGPD sobre los datos de entrada del modelo. Es el enfoque más defendible ante un auditor.

#Pila 100% local: Ollama, Cline, Aider, Tabby

Una pila de copiloto local se basa en dos capas: un servidor de inferencia que ejecuta el modelo en tu hardware y clientes que se conectan a él desde el IDE o el terminal. El servidor de referencia es Ollama, que expone una API HTTP local y gestiona la descarga de modelos GGUF. Sobre esta capa, tres clientes complementarios cubren los distintos usos: Cline para el agente en VS Code, Aider para la programación en pareja desde el terminal, orientada a commits de Git, y Tabby para la autocompletación al estilo de Copilot, en modo de servidor compartido para todo el equipo.

Ollama
Servidor de inferencia local (MIT). Sirve los modelos mediante http://localhost:11434. Sin telemetría de código ni llamadas salientes para la inferencia.
Cline
Extensión de VS Code (agente). Lee y escribe archivos, ejecuta comandos y planifica tareas que abarcan varios archivos. Se conecta a Ollama como proveedor local.
Aider
CLI de programación en pareja (Apache 2.0). Edita el código y realiza los commits de Git; excelente para la refactorización guiada. Apunta a la API de Ollama.
Tabby
Servidor de autocompletado autoalojado (licencia Apache 2.0). Reemplaza a Copilot para las sugerencias dentro del código; ideal para un servidor con GPU compartida.
Instalar el entorno Ollama + un modelo de código
# Serveur d'inference local
curl -fsSL https://ollama.com/install.sh | sh

# Modele de code recommande pour 16 Go VRAM (specialiste agent de code)
ollama pull devstral:24b

# Verifier que l'API locale repond (aucun appel sortant)
curl http://localhost:11434/api/tags
Conectar Aider a Ollama (terminal)
pip install aider-install && aider-install

# Pointer Aider vers le serveur local, jamais vers une API cloud
export OLLAMA_API_BASE=http://127.0.0.1:11434
aider --model ollama_chat/devstral:24b

Para Cline, en VS Code, seleccionas el proveedor 'Ollama' en las configuraciones de la extensión e introduces la URL del servidor (local o la de tu servidor GPU interno). No se introduce ninguna clave de API de nube: es la garantía técnica de que ningún fragmento se envía a OpenAI o Anthropic. Tabby, en cambio, se despliega en un contenedor en el servidor GPU y los equipos apuntan a su endpoint interno.

#Arquitectura: equipo aislado vs servidor GPU compartido

Predominan dos topologías. El equipo aislado ejecuta Ollama directamente en la máquina del desarrollador (Mac de la serie M o PC RTX): el código nunca abandona el equipo, lo que resulta ideal para los NDA más estrictos, pero esta opción está limitada por la VRAM individual y resulta costosa si hay que equipar muchos puestos. El servidor GPU compartido centraliza una o varias GPU en la red interna; los equipos se conectan a él a través de la API. Se comparte un modelo más grande, se racionaliza el hardware y el flujo permanece estrictamente dentro de la red (LAN o VPN empresarial).

Comparativa de las dos topologías de despliegue
CriterioEstación aislada (Ollama local)Servidor GPU compartido (Tabby/Ollama)
Ámbito del códigoNunca sale de la máquinaPermanece en la red interna (LAN/VPN)
Tamaño del modeloLimitada por la VRAM del equipoModelo más grande compartido (24-80 GB)
Coste del hardwareAlto (1 GPU por desarrollador)Racionalizado (1 servidor para N desarrolladores)
Autocompletado en tiempo realBuena si hay una GPU localExcelente con Tabby + batching
Cumplimiento de un NDA estrictoMáxima (cero tráfico de red)Fuerte (solo flujo interno, trazable)
MantenimientoDescentralizada, heterogéneaCentralizada, actualizaciones gestionadas
→
Esquema híbrido recomendado
En la práctica, se combinan Tabby en un servidor GPU para el autocompletado compartido por todo el equipo (alto rendimiento, procesamiento por lotes) y Ollama local en los equipos que trabajan con los repositorios más sensibles o para trabajar sin conexión a la red. Todo ello bajo una política de red que bloquea los endpoints conocidos de IA en la nube.

#¿Qué modelos de código para qué VRAM?

La calidad de un copiloto local depende del modelo. Tres familias abiertas dominan la programación en 2026: Qwen3-Coder (Alibaba, MoE 30B-A3B, 256k de contexto, rápido gracias a sus 3B de parámetros activos, Apache 2.0), Devstral (Mistral AI, un 24B pensado para su uso con agentes como Cline y OpenHands, Apache 2.0) y los modelos generalistas con buenas capacidades de programación, como Qwen 3.8 27B o GLM 4.7 Flash. La elección se ajusta a la VRAM disponible y al uso: un modelo pequeño y rápido para el autocompletado de Tabby, uno más grande para el razonamiento basado en agentes de Cline.

Modelos de código locales por presupuesto de VRAM (cuantización Q4)
VRAMModelo recomendadoUso típico
8 GBQwen2.5-Coder 7B base (FIM)Autocompletado en línea con Tabby (la referencia FIM de 2026), sugerencias rápidas de código
16 GBDevstral 24B / gpt-oss 20BAgente Cline y Aider en repositorios medianos
24 GBQwen3-Coder 30B-A3B / Qwen 3.8 27BRefactorización de múltiples archivos, razonamiento
48-80 GBQwen3-Coder 30B-A3B Q8 / Granite 4.2 30BServidor compartido entre varios desarrolladores, contexto largo
i
Verificar la VRAM real antes de prometer
La VRAM anunciada para un modelo depende de la cuantización y de la longitud de contexto (el KV cache crece con el contexto). Un Qwen3-Coder 30B-A3B en Q4 (19 GB) cabe en 24 GB para un contexto moderado, pero un contexto de 256k puede superar el límite. Prueba con tu carga real.

#Política 'provider local only'

Una pila de software local solo protege si está sujeta a una política que la restrinja. 'Provider local only' significa que ninguna herramienta de desarrollo puede apuntar a una API de IA en la nube. Esto se concreta en tres niveles complementarios: configuración de las herramientas (sin claves de servicios en la nube), bloqueo de red (los endpoints de IA en la nube son inaccesibles desde los equipos de desarrollo) y norma organizativa (documento de normas firmado). La combinación de los tres es lo que hace que la política sea realmente exigible durante una auditoría.

  1. 01
    Prohibir las claves de API en la nube
    Ninguna variable OPENAI_API_KEY, ANTHROPIC_API_KEY o equivalente en los equipos de desarrollo. Cline y Aider están configurados exclusivamente en el endpoint interno de Ollama.
  2. 02
    Bloquear los endpoints en el firewall
    Filtrar el tráfico saliente hacia api.openai.com, api.anthropic.com y los dominios de Copilot y Cursor. Así, las sugerencias de autocompletado ya no pueden salir físicamente de la red.
  3. 03
    Fijar la configuración de las extensiones
    Desplegar los ajustes de VS Code/Cline mediante GPO o MDM para impedir que un desarrollador vuelva a configurarlos para apuntar a un proveedor en la nube.
  4. 04
    Política de uso y formación
    Una política de uso firmada recuerda la prohibición de pegar código en un chatbot en la nube (el riesgo residual no es técnico, sino humano).
  5. 05
    Registrar accesos al servidor de inferencia
    Los logs del servidor Ollama/Tabby demuestran que las completaciones se sirven internamente. Pieza clave de la auditoría.

#Auditar la ausencia de exfiltración

El argumento 'es local' solo tiene valor si se demuestra. La auditoría de ausencia de exfiltración consiste en demostrar, con registros que lo respalden, que ningún fragmento de código abandona el perímetro durante el uso del copiloto. El método más convincente es la observación del tráfico de red: se captura el tráfico de un equipo durante una sesión de programación intensiva y se comprueba que ninguna conexión se dirija a un endpoint de IA en la nube. Se completa con la inspección de la configuración y de los registros del servidor.

Capturar y verificar el tráfico saliente durante una sesión
# 1. Capturer le trafic du poste pendant une session de codage Cline/Aider
sudo tcpdump -i any -n 'tcp port 443' -w /tmp/session_code.pcap

# 2. Lister les IP/destinations contactees (hors reseau interne)
tcpdump -r /tmp/session_code.pcap -n | awk '{print $5}' | cut -d. -f1-4 | sort -u

# 3. Verifier qu'aucune resolution ne vise un endpoint d'IA cloud
grep -Ei 'openai|anthropic|githubcopilot|cursor' /var/log/dnsmasq.log || echo 'OK : aucune requete IA cloud'
Evidencia de red
Captura con tcpdump/Wireshark: solo aparecen las IP del servidor interno y de los repositorios Git internos. Ningún endpoint de IA en la nube.
Prueba de configuración
Exportación de ajustes Cline/Aider mostrando el proveedor Ollama interno y la ausencia de clave en la nube.
Prueba de bloqueo
Prueba negativa: un intento manual de acceder a api.openai.com desde un equipo de desarrollo falla (cortafuegos).
Evidencia del servidor
Registros de Ollama/Tabby con marcas de fecha y hora que relacionan los autocompletados con los equipos internos.
→
Documentar una vez, reproducir muchas veces
Automatiza la auditoría mediante un script (captura + análisis + informe) y prográmala para que se ejecute periódicamente. Un expediente de auditoría reproducible vale mucho más que una afirmación puntual cuando el cliente o la CNIL plantea preguntas.

#Una valoración honesta: local vs nube

Seamos justos: la nube sigue por delante en la calidad bruta de los modelos más grandes y en no requerir ningún esfuerzo de infraestructura. Un asistente propietario en la nube puede superar a un Qwen3-Coder 30B-A3B local en determinadas tareas de razonamiento complejo. La ejecución local exige una inversión en hardware y un equipo para mantener el servidor de inferencia, y ofrece una calidad ligeramente inferior en las tareas más exigentes. La decisión adecuada no es ideológica: depende de la sensibilidad de tu código.

Elige la opción local si
Tienes código sujeto a un NDA, cláusulas de cesión, secretos industriales o clientes que prohíben recurrir a subcontratistas externos no autorizados.
La nube puede ser suficiente si
Tu código es de código abierto, sin datos personales, sin compromiso contractual de confidencialidad con un tercero.
Coste real de la ejecución local
Un servidor con GPU (24-48 GB), cuyo coste se amortiza entre los miembros de un equipo, suele salir más barato que las licencias en la nube por usuario en un plazo de 2 a 3 años.
El riesgo oculto del cloud
El costo de una sola violación de NDA (pérdida de contrato, litigio) supera varios años de licencias locales.
i
Regla de decisión en una frase
Si no puedes responder «sí» a «¿puedo enviar este código a un tercero?» para todos tus repositorios, despliega una pila local homogénea: es más fácil de gestionar que un entorno mixto de nube y ejecución local decidido caso por caso.

#Conclusión y puesta en marcha

Equipar a un equipo de desarrollo con un copiloto de alto rendimiento sin exponer nunca el código propietario es hoy una opción realista: Ollama como servidor de inferencia, Cline y Aider para el agente y el terminal, Tabby para el autocompletado compartido, todo bajo una política 'provider local only' y una auditoría reproducible de ausencia de exfiltración. El cumplimiento del RGPD y del AI Act se consigue por sustracción: sin transferencias, sin subcontratistas, sin preguntas. Para ahorrar tiempo en la puesta en marcha, la guía de pago «Copiloto de código local» proporciona un paquete llave en mano de Ollama + Cline + Aider: configuraciones listas para usar, selección de modelos según el presupuesto de VRAM, una política de red que bloquea los endpoints en la nube y el script de auditoría de ausencia de exfiltración. Con ello puedes desplegar en pocas horas una pila tecnológica defendible ante tu departamento jurídico y tus clientes.

Preguntas frecuentes
¿Es realmente Copilot Enterprise incompatible con un NDA?+
Depende del NDA. Si tu acuerdo prohíbe cualquier divulgación a un tercero que no esté autorizado expresamente por su nombre, sí: incluso con el entrenamiento desactivado, el código pasa por la infraestructura de GitHub/Azure, lo que constituye una divulgación a un tercero. Haz que tu departamento jurídico valide cada contrato con un cliente antes de cualquier despliegue en la nube.
¿Una pila de software local con Ollama ofrece suficiente rendimiento para reemplazar a Copilot?+
Para la autocompletación y la programación en pareja habitual, sí: Tabby ofrece sugerencias en línea (con Qwen2.5-Coder 7B base, que sigue siendo la referencia FIM en 2026) y, para el chat con agentes, Devstral 24B o Qwen3-Coder 30B-A3B están a la altura en la mayoría de las tareas. En razonamientos muy complejos, los modelos más grandes de la nube mantienen una ventaja, pero la diferencia se ha reducido y la garantía de confidencialidad cambia el panorama.
¿Qué GPU para equipar un equipo de 10 desarrolladores?+
Un servidor GPU compartido con 24 a 48 GB de VRAM (por ejemplo, una tarjeta de 24 GB para empezar) que ejecute Tabby y Ollama suele ser suficiente para unos diez desarrolladores que usen autocompletado, con un Devstral 24B o un Qwen3-Coder 30B-A3B. Mide tu carga real: un contexto largo aumenta el tamaño de la caché KV y la VRAM necesaria.
¿El RGPD exige realmente trabajar con el código en local?+
No, el RGPD no exige el procesamiento local. Exige, en cuanto se produzca una transferencia de datos personales (comentarios, logs, conjuntos de prueba), una base jurídica, un DPA y, fuera de la UE, garantías para la transferencia. El procesamiento local es simplemente la vía más sencilla para cumplir la normativa, ya que elimina la transferencia y, por tanto, la mayoría de estas obligaciones.
¿Cómo demostrar a un cliente que no se filtra ninguna línea de código?+
Mediante un expediente de auditoría reproducible: una captura del tráfico de red durante una sesión de programación que muestre cero conexiones a un endpoint de IA en la nube, una exportación de la configuración de las herramientas sin clave de acceso a la nube, una prueba negativa de acceso bloqueado por el cortafuegos y los registros del servidor de inferencia interno. Automatiza todo mediante scripts para poder repetirlo cuando se solicite.
¿Esta guía te ha ayudado?

¿Un comentario, un error, una precisión? Avísanos, eso mejora la guía para todos.