# La app de macOS, a fondo

URnetwork en el Mac se construye desde el mismo proyecto de Xcode que la app
de iPhone y iPad: una base de código, un motor, dos formas de ventana. La
usas como una VPN (conectas, y tu tráfico aparece desde otro lugar), pero
sale por conexiones domésticas reales compartidas por otros miembros, no por
centros de datos. Este recorrido cubre al completo las partes con forma de
Mac y pasa por las funciones compartidas con la profundidad justa para
usarlas; donde el comportamiento es idéntico a iOS, el
[recorrido de iOS](/docs/tour-ios) tiene la versión exhaustiva. Para la
instalación y la primera conexión, ver los
[primeros pasos en macOS](/docs/getting-started-macos); para lo que cambian
las salidas gestionadas por miembros, la [visión general](/docs/overview).

## Cómo está construida la app

Dos procesos, como toda VPN seria en las plataformas de Apple:

- **La app** (bundle `network.ur`) es la ventana y el extra de la barra de
  menús.
- **La extensión de túnel** (`network.ur.extension`) es una extensión de red
  `NEPacketTunnelProvider` que macOS arranca y supervisa. Tu tráfico se
  mueve por este proceso, lo que significa que tu protección nunca depende
  de que la ventana esté abierta.

La app habla con el túnel por un RPC de dispositivo local (un canal de
control privado entre los dos procesos), así que puede acoplarse a un túnel
que ya está en marcha. Sal de la app y reábrela a mitad de sesión, o haz que
se caiga, y adopta el túnel vivo en lugar de reiniciarlo. Esta es también la
razón de que macOS te pida aprobar una configuración VPN en la primera
conexión: la extensión es un componente gestionado por el sistema, y el
sistema operativo exige consentimiento.

La app requiere macOS 13.5 o posterior, y todo es código abierto en
[github.com/urnetwork](https://github.com/urnetwork), así que afirmaciones
como "la ruta de datos no registra nada" pueden comprobarse en el código en
lugar de tomarse en confianza. Ninguna auditoría independiente cubre el
protocolo ni el código de servidor del operador, donde viven las
afirmaciones de privacidad. Dos evaluaciones de terceros de 2025 cubren
otras superficies: una prueba de penetración de la aplicación web y la API,
y una evaluación MASA AL2 de Leviathan Security Group sobre la app de
Android, que la superó. Ninguna cubre la app de Mac. El
[modelo de amenazas](/docs/threat-model) registra ambas y sus límites.

## La ventana: una barra lateral con cuatro secciones

La ventana principal es una vista dividida. La barra lateral tiene las
mismas cuatro secciones que las pestañas de iOS (**Conectar** (Connect),
**Cuenta** (Account), **Clasificación** (Leaderboard), **Soporte**
(Support)), y la sección seleccionada llena el resto de la ventana.

### Conectar

El gran globo es el botón de conectar. La línea de estado debajo dice
**Conectado a N proveedores** (Connected to N providers), y hacer clic en
esa línea abre **Ubicaciones de proveedores** (Provider Locations): un globo
giratorio sobre la lista de los proveedores que de verdad te transportan
ahora mismo. Espera varios a la vez, normalmente de tres a ocho. Tu cliente
ejecuta dos conjuntos en paralelo (uno de calidad para HTTPS, uno de
velocidad para todo lo demás) y fija cada sitio a un proveedor, así que la
imagen es plural por diseño mientras cualquier sitio concreto sigue viendo
una sola dirección estable. Los proveedores lentos o desaparecidos se
reemplazan automáticamente; que uno se desconecte a mitad de streaming
cuesta como mucho una pausa breve mientras ese sitio se muda a otro de tu
conjunto, y si una sesión entera se arrastra, reconéctate para sacar un
conjunto nuevo. La [visión general](/docs/overview) explica la ruta que toma
cada conexión, por qué se detiene en cuatro tramos y lo que cada parte del
camino puede ver y no ver.

Bajo el globo está el panel de detalles: tu ubicación seleccionada, las
**Opciones de conexión** (Connect options: modo de conexión, IP fija,
Anonimización fuerte, Cifrado poscuántico), las tarjetas de estadísticas
Remoto / Bloqueado / Local (Remote / Blocked / Local) que abren los
contratos del cliente, las reglas de división y el panel de DNS, y el
conmutador **Bloquear anuncios y rastreadores** (Block ads and trackers).
Compartir conexión no está aquí. Vive en Cuenta → Ajustes.

| Ajuste | Valor por defecto | Efecto | Coste principal |
|---|---|---|---|
| Modo de conexión (Connection mode) | Auto | Auto ejecuta ambos conjuntos de proveedores y encamina cada paquete al que corresponde | Web o Streaming se comprometen con un solo conjunto |
| IP fija (Fixed IP) | Desactivado | Estrecha la ventana a un solo proveedor, así que todos los sitios ven una misma dirección estable | Renuncia a la salida plural |
| Anonimización fuerte (Strong Anonymization) | Activado | Prohíbe una ruta directa cliente-proveedor, así que un proveedor nunca ve tu IP real | Más lento que la ruta directa |
| Cifrado poscuántico (Post Quantum Encryption) | Activado | Sella la sesión de extremo a extremo hasta el proveedor, así que el operador transporta texto cifrado | Omite los proveedores con los que no puede sellar |
| Bloquear anuncios y rastreadores (Block ads and trackers) | Desactivado | Filtra anuncios y rastreadores de todo lo que transporta el túnel | El filtrado es para todo el túnel, no por app |

- Desactivar Anonimización fuerte es el modo directo: más rápido, y ese
  proveedor pasa a ver tu dirección real.
- El sellado no admite respaldo. Mientras el Cifrado poscuántico está
  activado, el cliente no envía ni acepta datos de aplicación en claro: un
  proveedor con el que no consigue establecer una sesión sellada se omite,
  no se usa sin sellar. El coste es de disponibilidad, no de
  confidencialidad: pierdes ese proveedor, no tu cifrado. Toda compilación
  actual de proveedor habla el lado que responde, así que eso es poco
  frecuente. Desactiva el ajuste y el tráfico puede volver a tomar la ruta
  estándar. Ninguna app muestra todavía un veredicto de sellado-o-no por
  conexión.

Un proveedor es la conexión real de otro miembro; la plataforma es el
operador de en medio, que te empareja con ellos. Un proveedor ve adónde va
el tráfico que transporta, la vista que tu ISP tiene hoy de ti, pero no lo
que hay dentro, porque casi todos los sitios sellan sus propios contenidos
con HTTPS. Por defecto nunca conoce tu IP real, que se queda con la
plataforma. La plataforma, a su vez, conserva casi nada: tu dirección se
guarda como un hash unidireccional con clave (revuelto con una clave
secreta, no reversible) del bloque de direcciones que la rodea y no como la
dirección en sí, y el registro de transferencias anota recuentos de bytes
entre ids de cliente, nunca los sitios que visitas. Una consulta geográfica
sí archiva una ciudad aproximada por conexión, así que el dónde grueso se
conoce; el qué, nunca. Con ambos valores por defecto activados, un proveedor
nunca sabe quién eres y el operador no puede leer lo que envías, así que
ninguna parte por sí sola reúne tu identidad y tu actividad.

| Modo | El operador ve | El proveedor ve | Valor por defecto y disponibilidad |
|---|---|---|---|
| **Retransmitido sellado** | tu cuenta y conexión de origen, en qué proveedores estás, y texto cifrado con su tiempo y volumen | los destinos que saca a internet y un id de dispositivo/contrato, **no** tu IP real | el valor de fábrica: Cifrado poscuántico, activado en el panel de conexión |
| **Retransmitido estándar** | tu cuenta y conexión de origen, en qué proveedores estás, y los destinos y bytes de paquete del interior | los destinos que saca a internet y un id de dispositivo/contrato, **no** tu IP real | solo con **Cifrado poscuántico** desactivado |
| **Directo** | menos intervención en la retransmisión | **tu IP real** y los destinos que saca a internet | opcional: desactiva **Anonimización fuerte** |

Límite: nada verifica que los proveedores que se te ofrecen sean
independientes entre sí o del operador, y el operador puede ejecutar
proveedores él mismo. El [modelo de amenazas](/docs/threat-model) trabaja
estas filas frente a adversarios con nombre, incluido un operador hostil, y
es explícito sobre dónde falla cada una.

Haz clic en la tarjeta de ubicación y la lista de proveedores se abre. En el
Mac se despliega como un panel junto a la vista de conexión en lugar de una
hoja, y el botón **Mostrar lista de proveedores** (Show Provider List) de la
barra de herramientas también la conmuta. Navegarla lista países, cada uno
con un recuento en vivo de proveedores en línea; teclea el nombre de un
lugar en **Buscar proveedores** (Search providers) y una sección de
**Ciudades** (Cities) aparece en los resultados. La puntería de nivel ciudad
es algo que se busca, no algo a lo que se llega desplazándose. Cada
ubicación es el dispositivo de un miembro físicamente allí: la plataforma
geolocaliza la conexión que observa, y una dirección que parece un centro de
datos o una VPN se degrada en lugar de recibir confianza. "Mejor disponible"
optimiza por velocidad cerca de ti; una ubicación concreta te hace aparecer
allí.

### Cuenta

La identidad y el plan viven aquí:

- **Plan.** El gratuito es una cuota de datos diaria real; UR Pro es una
  mensual grande a 5 $/mes o 40 $/año. Números vigentes en
  [ur.io/products](https://ur.io/products).
- **Tu actividad como proveedor.** Donde se configura el compartir, con lo
  que el tuyo ha transportado detallado. Ajustes lo enlaza como "Usa el
  protocolo UR" (Uses the UR Protocol); [ur.xyz](https://ur.xyz) documenta
  cómo funcionan las recompensas por participar.
- **Códigos de saldo.** Recargas de datos de un solo uso: una tarjeta regalo
  de datos, sin suscripción adjunta.
- **Ubicaciones bloqueadas (Blocked locations).** Países por los que nunca
  quieres salir.
- **Identidades de proveedores.** Los proveedores con los que tu cliente
  mantiene ahora una sesión sellada verificada.
- **El panel de identidad poscuántica.** Cubierto abajo.
- **Ajustes (Settings).** Donde viven compartir conexión, el kill switch
  (interruptor de corte), las ubicaciones bloqueadas, el arranque al iniciar
  sesión, tu frase de recuperación y métodos de inicio de sesión, y la
  eliminación de la cuenta.

Los conmutadores de Ajustes de un vistazo:

| Ajuste | Valor por defecto | Efecto | Coste principal |
|---|---|---|---|
| Compartir conexión (Provide mode) | Nunca (Never) | Comparte el ancho de banda sobrante de tu Mac en público, o solo con tus propios dispositivos | Cada byte transportado cuenta contra el tope de datos del ISP |
| Kill switch | Desactivado | Rechaza el recurso a la ruta local, así que el tráfico se detiene en lugar de fugarse cuando ningún proveedor está accesible | Sin tráfico cuando los proveedores fallan |
| Iniciar URnetwork al arrancar el sistema (Launch URnetwork on system startup) | Desactivado | Arranca la app al iniciar sesión mediante el propio servicio de ítems de inicio de macOS | Una entrada en Ajustes del Sistema → Ítems de inicio |

Empezar sin correo es aquí una vía de primera clase. **Crear Cuenta
instantánea** (Create Instant Account) en la pantalla de inicio de sesión
crea una red real y permanente en un clic, asegurada por una frase de
recuperación que la plataforma genera y muestra una vez, justo después de la
creación. Guárdala: es la única vía de vuelta, el operador conserva solo
formas hash de ella, y con ella guardada la cuenta sobrevive a este Mac.
Cuenta es entonces donde puedes añadir cualquier otro método de inicio de
sesión (Apple, Google, correo o teléfono, Solana, Bittensor) a esa misma
red, conservando saldo e historial. Un correo o un teléfono es tu vía de
inicio de sesión y recuperación, nada más, y las vías de frase de
recuperación y cartera, con pago en USDC en cadena, permiten que una cuenta
no lleve correo, nombre ni tarjeta en absoluto. Un **código de
autorización** (auth code) generado en cualquier dispositivo con la sesión
ya iniciada es la forma más rápida de traer tu Mac a una cuenta existente.

### Clasificación

Los mayores proveedores por datos movidos, nunca nada sobre la navegación de
nadie. Comparte desde tu Mac y puedes aparecer aquí, en público con el
nombre de tu red o en privado, sin nombre. Si no compartes, simplemente no
estás.

### Soporte

Planes, ayuda, comentarios y enlaces de comunidad, con la posibilidad de
adjuntar logs del cliente a un informe: la vía normal cuando algo se rompe.
Fuera de la app, feedback.ur.io funciona desde cualquier navegador; los
hallazgos de seguridad van a security@ur.io bajo la política de divulgación
en ur.io/vdp.

## El extra de la barra de menús

URnetwork también vive en la barra de menús, y es la forma más rápida de
usar la app en el día a día:

- **Estado de un vistazo.** Conectado y Compartiendo, cada uno con una marca
  o una cruz.
- **Conectar / Desconectar (Connect / Disconnect).** Un clic, sin necesidad
  de ventana.
- **Mostrar (Show).** Trae de vuelta la ventana principal.
- **Salir de URnetwork (Quit URnetwork).** Desconecta y cierra.

Cierra la ventana y la app sigue funcionando en la barra de menús; el túnel
sigue funcionando en cualquier caso, porque es un proceso aparte gestionado
por el sistema. ⌘Q tampoco es un cierre a propósito: oculta la ventana y
saca la app del Dock hacia la barra de menús. **Salir de URnetwork** ahí es
la salida real, y se lleva el túnel consigo.

## Compartido con iOS: las funciones profundas

Estas funcionan idénticas a la app de iOS; el
[recorrido de iOS](/docs/tour-ios) cubre cada una con todo detalle.

### DNS personalizado

Un panel de DNS completo bajo Conectar. El DNS es la guía telefónica de
internet (convierte un nombre como netflix.com en la dirección a la que se
conecta tu Mac) y un lugar clásico de fisgoneo y bloqueo por parte de
cortafuegos locales y regionales. No hace falta tocar el panel: el valor por
defecto, DNS cifrado sobre HTTPS resuelto a través del túnel, ya es el
ajuste más seguro. Desde ahí puedes cambiar cualquier combinación de **DoH
(remoto/local)** y **DNS sin cifrar (remoto/local)**, editar tú mismo las
listas de resolvedores y usar el **respaldo de DNS local** (local DNS
fallback), que hace competir a un resolvedor local mientras el túnel arranca
para que las consultas nunca se atasquen durante el handshake (desactivado
significa que el DNS solo se resuelve por el túnel). La pantalla ofrece
ajustes recomendados por país, porque algunas redes nacionales interfieren
con las consultas lo bastante como para romper la configuración más
estricta, con aplicación de un toque y restauración de un toque a los
valores seguros, más servidores sugeridos marcados en el color de tu país
conectado.

### Reglas de división

Encamina tráfico concreto fuera del túnel o fíjalo en su sitio, a nivel de
dominio e IP. Toca el tráfico en vivo para encaminarlo en local, el arreglo
cuando una intranet de oficina, una impresora o un NAS desaparecen detrás
del túnel. O mantén un sitio en un solo proveedor para una dirección
estable, lo que mantiene tranquilos a los sitios sensibles a la dirección
como los bancos; ese proveedor pasa entonces a ver tus visitas a ese único
sitio, todavía sin tu identidad ni tu contenido. Las reglas capturan todo el
grupo de red coasociado, así que el tráfico de CDN y subdominios se mueve
junto. Como en iOS, **aquí no hay túnel dividido por aplicación**. Android y
Windows lo tienen, pero las plataformas de Apple no dan a las apps de VPN un
gancho por aplicación soportado, así que las reglas en el Mac son de nivel
de red.

### Compartir conexión

Compartir el ancho de banda sobrante de tu Mac (un escritorio con buena
subida es exactamente el dispositivo que la red quiere) se configura en
Cuenta → Ajustes → Conexiones, donde **Compartir conexión** (Provide mode)
es una elección de cuatro posiciones y no un interruptor:

| Modo | Qué transporta |
|---|---|
| **Nunca (Never)** | Nada. El valor por defecto: eres puramente un usuario |
| **Auto** | Tráfico público mientras estás conectado; solo tus propios dispositivos cuando no |
| **Siempre (Always)** | Tráfico público, conectado o no |
| **Red (Network)** | Solo y siempre tus propios dispositivos |

El tráfico público se mide bajo contratos firmados (acuerdos criptográficos
que cuentan bytes entre identidades de cliente, que es como se liquida el
uso sin registrar destinos), y los proveedores participan en el protocolo
UR; [ur.xyz](https://ur.xyz) documenta cómo funcionan las recompensas de esa
participación.

La seguridad está diseñada en tu propia máquina. La capa de inspección de
código abierto del motor connect corre en tu Mac en la salida y bloquea el
intercambio de archivos (clase BitTorrent) y el tráfico con patrón de ataque
antes de que salga por tu conexión. Lo que produce una coincidencia: el
paquete se descarta, y una firma de intercambio de archivos levanta además
una señal de abuso al operador que lleva solo el id del dispositivo emisor y
un booleano (sin destino, sin dominio, sin contenidos), para la que el
operador no incluye hoy ningún gestor. Los descartes de patrón de ataque y
de túnel opaco no levantan nada en absoluto. El mismo filtro es la razón de
que URnetwork no sea, a propósito, una herramienta de torrents para
usuarios. Límite: ningún diseño de salida compartida hace el riesgo
exactamente cero, y por eso la audiencia la eliges tú, y cada byte que
transportas cuenta contra el tope de datos del ISP, así que en un plan
medido comparte selectivamente o no compartas.

### El panel de identidad poscuántica

El ajuste en sí es **Cifrado poscuántico** (Post Quantum Encryption), un
conmutador en el panel de conexión bajo Opciones de conexión, y sale de
fábrica **activado**: sellado es el estado en el que empieza una instalación
recién hecha, no una elección que tengas que tomar. Cuenta muestra entonces
la identidad de sesión poscuántica de tu cliente con una hoja de compartir
para la comparación fuera de banda, la misma idea que comparar los números
de seguridad en una app de mensajería: leer la huella por otro canal
demuestra que la sesión sellada termina donde crees. Lo que cubre el ajuste:
tu cliente sella el tráfico directamente hasta un proveedor usando una
sesión TLS 1.3 negociada con **X25519MLKEM768** (híbrido clásico + ML-KEM),
de modo que el operador de en medio transporta bytes que no puede leer, y
las grabaciones hechas hoy están diseñadas para seguir selladas incluso
frente a un ordenador cuántico futuro (la amenaza de "recolectar ahora,
descifrar después"). No admite respaldo: mientras el ajuste está activado, el
cliente no envía ni acepta datos de aplicación en claro, así que un proveedor
con el que no consigue establecer una sesión sellada se omite en lugar de
usarse sin sellar — pierdes ese proveedor, no tu cifrado. Toda compilación
actual de proveedor habla el lado que responde, así que eso es poco
frecuente; desactiva el ajuste y el tráfico puede volver a tomar la ruta
estándar de la plataforma. Ninguna app muestra todavía un veredicto de
sellado-o-no por conexión. Las firmas de identidad siguen siendo
Ed25519, y "poscuántico" significa este intercambio de claves de sesión,
nada más amplio.

## Resolución de problemas

### La aprobación de la configuración VPN

La primera conexión dispara un diálogo del sistema pidiendo permitir una
configuración VPN. Si se rechazó, el túnel no puede arrancar jamás.
Apruébala en el siguiente intento, o mira en **Ajustes del Sistema → VPN**
(System Settings → VPN, visible también bajo Red), donde la configuración de
URnetwork debería estar listada y habilitada.

### Varios perfiles de VPN, y cómo los gestiona la app

Las reinstalaciones y actualizaciones pueden dejar a macOS con más de un
perfil de VPN de URnetwork. La app cuenta con ello: al conectar enumera
todos los perfiles, y cuando arrancar uno falla lo restablece y reintenta, y
pasa al siguiente. Si un túnel ya está en marcha lo adopta por el RPC de
dispositivo en lugar de reiniciarlo. Los perfiles rotos se restablecen o
eliminan con un tope de eliminaciones, y toda operación sobre perfiles está
acotada por plazos para que un demonio del sistema atascado no pueda colgar
la app. Es automático, y se describe aquí para que las entradas de Ajustes
del Sistema tengan sentido.

### "Failed to load VPN profiles" (error 12)

Si conectar falla con **"Failed to load VPN profiles"** (código de error
12), el almacén de preferencias de VPN del sistema se niega a enumerar
perfiles, un estado que la app no puede reparar desde dentro. Arréglalo a
mano:

1. Abre Ajustes del Sistema y encuentra las configuraciones VPN (Ajustes
   del Sistema → VPN, o el equivalente de General → VPN y gestión de
   dispositivos en tu versión de macOS).
2. Elimina la(s) configuración(es) de URnetwork.
3. Reconecta desde la app y aprueba la configuración nueva.

Eliminar la configuración borra fontanería, no datos: tu cuenta, tus ajustes
y tus reglas de división quedan intactos, y la siguiente conexión la recrea
(mostrando otra vez el diálogo de aprobación de una sola vez).

### Arrancar al iniciar sesión

**Iniciar URnetwork al arrancar el sistema** (Launch URnetwork on system
startup) es un conmutador en Cuenta → Ajustes, bajo Sistema. Registra la app
en el propio servicio de ítems de inicio de macOS, así que funciona en todas
las versiones que la app soporta y la entrada aparece en Ajustes del
Sistema → General → Ítems de inicio (Login Items), donde también puedes
quitarla a mano. Desactivar el conmutador la desregistra de nuevo.

### Cómo funciona aquí el kill switch

Igual que en iOS: la app lleva un conmutador **Kill switch** en
Cuenta → Ajustes → Conexiones, el mismo control del SDK que tiene toda app
de URnetwork. Empieza desactivado, así que encenderlo es un acto
deliberado. Activado, el cliente se niega a recurrir a tu ruta local, así
que el tráfico se detiene en lugar de fugarse. Lo que el Mac no añade es
aplicación a nivel de sistema operativo. La app no establece
`includeAllNetworks`, así que si el proceso del túnel muere de forma
inesperada, macOS restaura la red normal en lugar de fallar cerrado: tus
apps siguen funcionando por la red subyacente con tu IP real, probablemente
sin que notes más que un parpadeo. La marca/cruz de la barra de menús es el
cable trampa de un vistazo. La app supervisa el túnel y recupera perfiles
con agresividad, pero hoy no le pide al sistema que bloquee en firme el
tráfico cuando el túnel está caído. Si necesitas un comportamiento de fallo
cerrado garantizado, aplícalo fuera del Mac (una regla de router o
cortafuegos que solo deje pasar tráfico del túnel), o haz el trabajo crítico
de navegador a través de la extensión de navegador de URnetwork, cuyo kill
switch viene activado por defecto y cubre solo el tráfico del navegador.

### Leer los logs del túnel

La extensión del túnel escribe en el log unificado del sistema: Console.app,
no archivos.

1. Abre **Console.app** y selecciona tu Mac.
2. En el menú Acción, activa **Incluir mensajes de información** (Include
   Info Messages) e **Incluir mensajes de depuración** (Include Debug
   Messages). Las líneas útiles están en esos niveles.
3. Filtra por el subsistema `network.ur.extension` o busca "URnetwork", y
   reproduce la conexión.

### Comportamiento en reposo

El túnel está configurado con `disconnectOnSleep` desactivado: cerrar la
tapa no tumba la sesión, así que retomas donde lo dejaste en lugar de
rehacer el handshake en cada despertar. Un Mac dormido no mueve tráfico. No
navega y no comparte; el ajuste solo te ahorra el nuevo handshake.

## Adónde ir ahora

- [Primeros pasos en macOS](/docs/getting-started-macos) para el camino
  corto.
- [El recorrido de iOS](/docs/tour-ios) para las mismas funciones en su
  forma exhaustiva, más los atajos de Siri.
- La [visión general](/docs/overview) para cómo funciona la red de extremo a
  extremo, y las [preguntas frecuentes](/docs/faq) para respuestas rápidas.
