En resumen
Bruno no tiene sincronización en la nube integrada. Los equipos lo solucionan con repositorios git, unidades de red compartidas o contenedores de desarrollo. Cada solución tiene límites reales. Apidog ahora cierra la brecha desde ambos lados: su nuevo modo Git con Especificación Primero permite que la especificación OpenAPI resida en tu repositorio y se mueva a través de solicitudes de extracción (pull requests), de la misma manera que lo hace Bruno, mientras que la sincronización opcional en la nube añade colaboración en vivo, acceso basado en roles, credenciales centralizadas y un servidor simulado (mock server) integrado. Ya no tienes que elegir git o un espacio de trabajo en equipo.
Introducción
El diseño de Bruno solo local es una característica, no un descuido. Los mantenedores tomaron una decisión deliberada: tus datos permanecen en tu máquina. Sin nube significa sin cuenta, sin suscripción, sin un proveedor que retenga tus colecciones como rehenes.
Pero el modelo "solo local" crea un problema de coordinación en el momento en que una segunda persona necesita la misma colección. ¿Cómo comparte colecciones de API un equipo de cinco desarrolladores? ¿Cómo obtiene un ingeniero de control de calidad las últimas solicitudes? ¿Cómo configura un nuevo empleado su entorno sin copiar archivos a través de Slack?
Esta guía explora cada solución alternativa que usan los equipos, lo que realmente cuesta cada una y dónde está el límite. También cubre algo nuevo: el modo Git con Especificación Primero de Apidog, que te permite mantener la filosofía de Bruno de archivos en un repositorio y aún así obtener la colaboración en vivo que git por sí solo no puede ofrecerte. Si quieres una visión más amplia primero, nuestro resumen de herramientas de API que funcionan con Git establece el contexto.
El enfoque git (el camino previsto)
Bruno fue diseñado en torno a git. Las colecciones son archivos .bru, los entornos son archivos JSON, todo es texto plano. El mecanismo de intercambio previsto es un repositorio git.
Cómo funciona:
- Crea un repositorio git para tu colección de API (o usa una carpeta dentro de tu repositorio existente)
- Envía (push) la colección a GitHub, GitLab o Bitbucket
- Los miembros del equipo clonan el repositorio y abren la carpeta en Bruno
- Los cambios se confirman y se envían; otros los descargan (pull)
Qué funciona bien:
- Historial de versiones completo en cada solicitud
- Los cambios de API pasan por la revisión de código
- La integración CI/CD es natural (
bru runen tu pipeline) - No se requiere ningún servicio de terceros más allá de tu proveedor de git
- Funciona con cualquier tamaño de equipo en teoría
Qué falla:
- Los miembros del equipo sin fluidez en git tienen dificultades con el flujo de trabajo
- Los cambios no son en vivo. Tú envías, otros descargan manualmente
- Los valores secretos (tokens, contraseñas) no se confirman, por lo que necesitas un mecanismo separado
- Ocurren conflictos de fusión cuando dos personas editan la misma solicitud
- No hay forma de dar acceso de solo lectura a no desarrolladores sin cuentas de git
Para quién funciona esto: equipos solo de desarrolladores con disciplina git consistente. Es válido para 2-8 desarrolladores que ya trabajan con git para todo lo demás. El patrón coincide con el enfoque más amplio de control de versiones de OpenAPI con Git.
El enfoque de unidad de red compartida
Algunos equipos colocan la carpeta de la colección de Bruno en una unidad de red compartida: un NAS, un servidor de archivos de red, una carpeta compartida de Dropbox o Google Drive.
Cómo funciona: Bruno abre colecciones desde cualquier ruta de carpeta. Apúntalo a la ubicación de la unidad compartida.
Qué funciona:
- Configuración fácil, no se requiere git
- Todos los miembros del equipo ven los mismos archivos
- Funciona para no desarrolladores que no pueden usar git
Qué falla:
- Sin historial de versiones, o historial de versiones deficiente si usas Dropbox o Drive
- Dos personas abriendo la misma colección a la vez pueden corromper o sobrescribir archivos
- Las unidades de red son más lentas que los archivos locales; las colecciones grandes se sienten lentas
- Sin control de acceso más allá de los permisos del sistema de archivos
- Los valores secretos aún necesitan una gestión separada
- Se desmorona cuando los miembros del equipo están desconectados o tienen una conexión inestable
Para quién funciona esto: equipos pequeños de 2-3 personas que rara vez editan al mismo tiempo y necesitan compartir sin git. No recomendado más allá del uso casual.
El enfoque de Gitpod / contenedor de desarrollo
Algunos equipos colocan sus colecciones de Bruno en un espacio de trabajo de Gitpod o una definición de contenedor de desarrollo, para que todos obtengan un entorno consistente con la colección incluida.

Cómo funciona: la colección reside en el repositorio. Gitpod o un contenedor de desarrollo se inician con Bruno (o la CLI de Bruno) y la colección precargada.
Qué funciona:
- Entorno consistente para cada desarrollador
- La colección siempre coincide con la base de código que prueba
- Sin configuración local. Clona e inicia el contenedor de desarrollo
Qué falla:
- Sigue siendo basado en git; los usuarios que no usan git no se benefician
- La GUI de escritorio de Bruno no se ejecuta en un entorno de desarrollo en la nube (la mayoría de las configuraciones de contenedores solo te dan la CLI sin interfaz gráfica)
- La sincronización en tiempo real aún no existe
Para quién funciona esto: equipos que ya utilizan Gitpod o contenedores de desarrollo y que quieren pruebas de API integradas en el entorno de desarrollo.
El enfoque de copia por desarrollador
Esta es la opción menos estructurada: cada desarrollador mantiene su propia colección de Bruno y la sincroniza manualmente con documentos compartidos o copias de la exportación de un compañero de equipo.
Qué funciona:
- Autonomía total, no se requiere coordinación
- Rápido para un desarrollador individual
Qué falla:
- Las colecciones divergen inmediatamente
- Sin fuente de verdad compartida
- La "colección de API del equipo" no significa nada cuando cada uno tiene una versión diferente
- Los gastos generales de mantenimiento se acumulan rápidamente
Para quién funciona esto: nadie más allá de un desarrollador individual. Este patrón acumula deuda técnica rápidamente.
Los límites que comparten todas las soluciones
Todas las soluciones de sincronización de Bruno tienen las mismas deficiencias, y git no puede solucionarlas:
- Sin colaboración en tiempo real. En Apidog, o en el nivel de pago de Postman, dos personas abren la misma colección y ven los cambios del otro al instante. Con Bruno más git, Alice y Bob siempre trabajan a partir de su última descarga (pull). Si Alice añade una solicitud y la envía (push), Bob no ve nada hasta que descarga (pull). Durante una sesión de API activa, eso es una fricción constante.
- Sin acceso basado en roles. Los permisos de Git (lectura o escritura a nivel de repositorio) no se corresponden con los roles de la colección de API. No puedes convertir a un interesado en un espectador que ejecuta solicitudes pero no puede editarlas. No puedes restringir a un contratista a carpetas específicas. El acceso en Bruno es todo o nada por repositorio.
- Sin credenciales de entorno compartidas. Las variables secretas de Bruno no se confirman, lo cual es un comportamiento de seguridad correcto. Pero significa que cada compañero de equipo configura las credenciales manualmente, y cuando un token rota, necesitas un proceso fuera de banda para decirles a todos que actualicen localmente. Las herramientas con entornos seguros en la nube gestionan esto de forma centralizada.
- Sin comentarios a nivel de colección. No puedes dejar una nota en una solicitud específica para que la vean tus compañeros de equipo. Los comentarios de PR de Git son similares, pero se adjuntan a una diferencia (diff), no a la colección en vivo.
Estas cuatro deficiencias son la verdadera razón por la que los equipos superan las soluciones alternativas. La siguiente sección explica cómo Apidog las cierra sin obligarte a abandonar git.
Modo Git con Especificación Primero de Apidog: el flujo de trabajo git sin las soluciones
El planteamiento habitual enfrenta a "Bruno más git" contra "una herramienta en la nube". El modo Git con Especificación Primero de Apidog anula esa elección. Permite que la especificación OpenAPI resida en tu propio repositorio de GitHub, GitLab o autoalojado como la única fuente de verdad, y luego superpone características de equipo sobre ese mismo repositorio.

Esto es lo que cambia en comparación con una configuración de Bruno más git.
- La especificación es la fuente de verdad, y reside en tu repositorio. Conectas un proyecto de Apidog a un repositorio git y la definición de la API se sincroniza como archivos. Crea una rama por característica, abre una solicitud de extracción (pull request), revisa la diferencia (diff) del contrato línea por línea y fusiona. Este es el flujo de revisión exacto que Bruno permite, aplicado a un documento OpenAPI completo en lugar de archivos de solicitud
.brusueltos. Para el razonamiento del diseño primero detrás de esto, consulta ¿Qué es el desarrollo de API con especificación primero?. - El diseño, las pruebas, los mocks y la documentación derivan de una única definición. Cuando la especificación cambia en una rama, el servidor simulado (mock server), las respuestas de ejemplo, los casos de prueba y la documentación de referencia publicada cambian con ella, y todo se confirma como una diferencia (diff) revisable. Con Bruno obtienes archivos de solicitud; la documentación y los mocks son problema de otra persona. Este es el núcleo del enfoque especificación como código, y es donde un solo archivo OpenAPI realiza el trabajo que antes hacían cuatro herramientas separadas.
- Mantienes git y añades colaboración en vivo. Esta es la parte que ninguna solución de Bruno puede igualar. El repositorio sigue siendo el sistema de registro, pero los compañeros de equipo que trabajan en la aplicación Apidog ven las ediciones de los demás en tiempo real en lugar de esperar la siguiente descarga (pull). Git te da historial y revisión; el espacio de trabajo compartido te da la sesión en vivo. Dejas de elegir entre ellos.
- El acceso basado en roles se sitúa sobre el repositorio. Los roles de visor, editor y administrador permiten a un interesado ejecutar solicitudes sin editarlas, o limitar a un contratista a proyectos específicos, nada de lo cual los permisos de git a nivel de repositorio pueden expresar.
- Las credenciales se gestionan de forma centralizada. Los entornos en la nube contienen variables compartidas (y almacenadas de forma segura), por lo que la rotación de un token se actualiza una sola vez en lugar de tener que notificar a cada desarrollador para que edite un archivo
.secret.jsonlocal. - Un servidor simulado (mock server) viene incluido. Bruno no tiene un servidor simulado, por lo que los equipos buscan una alternativa de servidor simulado de Bruno. En Apidog, el mock proviene directamente de la especificación, por lo que el trabajo de frontend comienza desde el primer día con una respuesta realista.
- Se ejecuta en CI. Apidog incluye un ejecutor CLI, por lo que los casos de prueba vinculados a tu especificación sincronizada se ejecutan en el mismo pipeline que lo haría
bru run, en cada push.
Una comparación breve y honesta:
| Capacidad | Bruno + git | Modo Git con Especificación Primero de Apidog |
|---|---|---|
| Archivos en tu propio repositorio | Sí (.bru) |
Sí (especificación OpenAPI) |
| Revisión de rama + solicitud de extracción | Sí | Sí |
| Ejecutor de CI | Sí (bru run) |
Sí (CLI de Apidog) |
| Soporte autoalojado / GitLab | Sí | Sí |
| Edición multiusuario en vivo | No | Sí |
| Acceso basado en roles (visualizador/editor) | No | Sí |
| Credenciales compartidas centralizadas | No | Sí |
| Servidor simulado (mock server) desde la especificación | No | Sí |
| Documentación + pruebas derivadas de un archivo | No | Sí |
El modo Git con Especificación Primero está en beta, así que confirma los detalles con tu propia configuración de GitHub o GitLab en una prueba antes de migrar a todo un equipo. Para una explicación más detallada de la conexión en sí, consulta la integración y sincronización de Git de Apidog y la guía del modo con Especificación Primero. Si estás comparando esto con una pila de diseño y pruebas de dos herramientas, Stoplight + Postman vs Apidog realiza la misma evaluación.
Cuándo quedarse con Bruno y cuándo cambiar
Bruno más git funciona. Para el equipo adecuado, funciona bien. La pregunta es cuándo el costo acumulativo de las soluciones supera el valor de la simplicidad de Bruno.
Quédate con Bruno cuando todo tu equipo esté compuesto por desarrolladores, todos tengan fluidez en git, no necesites sincronización en vivo y un modelo de permisos de repositorio de todo o nada esté bien.
Cámbiate al modo Git con Especificación Primero de Apidog cuando:
- Tengas miembros del equipo no desarrolladores que necesiten acceso a la API sin aprender git
- Tu equipo sea de 5 o más y la coordinación solo con git se haya convertido en una fricción diaria
- Necesites sincronización en vivo durante sesiones de API activas
- Necesites control de acceso a nivel de proyecto o carpeta, no solo del repositorio
- Estés cansado de distribuir credenciales manualmente cada vez que un token rota
- Necesites un servidor simulado (mock server) junto a tu cliente API
Dado que la especificación aún reside en tu repositorio, esta no es una puerta sin retorno lejos del control de versiones. Conservas el flujo de trabajo de git que Bruno te enseñó y añades la capa de equipo encima.
Configurando un flujo de trabajo Bruno + git que realmente funcione
Si te quedas con Bruno, aquí tienes un diseño que mantiene la fricción baja:
Estructura del repositorio:
api-collections/
.gitignore # excluir *.secret.json, .env
README.md # instrucciones de incorporación
environments/
local.json
staging.json
production.json # sin secretos, solo nombres de variables
users-api/
get-user.bru
create-user.bru
orders-api/
create-order.bru
list-orders.bru
bruno.json
Gestión de credenciales: usa environments/production.secret.json (ignoradas por git) para secretos locales. Documenta las variables requeridas en environments/production.json con valores vacíos como plantilla. Almacena los valores reales en el gestor de contraseñas o bóveda de secretos de tu equipo, con un enlace en el README.
Incorporación de nuevos desarrolladores:
- Clona el repositorio
- Abre la carpeta de la colección en Bruno
- Copia
production.jsonaproduction.secret.json - Rellena las credenciales desde la bóveda (enlazada en el README)
- Listo para usar
CI/CD: inyecta variables de entorno en tiempo de ejecución, para que no haya archivos secretos en el repositorio.
La postura de Bruno de no usar la nube es por principios y tiene beneficios reales, y las soluciones de sincronización son viables para el equipo adecuado. Conocer sus límites te dice cuándo apoyarte en ellas y cuándo buscar una herramienta construida para la colaboración en equipo. Ahora que Apidog mantiene la especificación en tu repositorio, ese alcance ya no significa dejar git atrás. Descarga Apidog y apúntalo a tu repositorio existente para ver la diferencia en tu propia API.
