Nós
Nós es un mensajero sin servidores para Android e iPhone. Los chats, los grupos, las fotos, los mensajes de voz, los archivos y las llamadas van cifrados de extremo a extremo y viajan por buzones alojados en nodos que cualquiera puede ejecutar, incluido tu propio ordenador. No hay número de teléfono, ni cuenta, ni ninguna empresa en medio. "Nós" significa "nosotros" y "nodos" en portugués: las personas y la red que forman.

Primeros pasos
La primera pantalla ofrece Create account, Import account y Explore without account.
- Create account: un nombre, un nombre de usuario y una foto opcionales, y un color de acento. "Your identity is your keys. No phone number required." No se registra nada en ningún sitio: el perfil viaja solo dentro de tu tarjeta, hasta tus contactos.
- Save your recovery phrase: doce palabras que son tu cuenta. Toca Show the words, apúntalas y luego I wrote it down. Puedes elegir Later; un aviso en Chats te lo recuerda hasta que lo confirmes.
- Explore without account abre la app con personas, grupos y mensajes de ejemplo, que se guardan en memoria y no se envían a ningún sitio. Ahí las llamadas, el escaneo y la red están desactivados. El aviso "You're exploring sample chats" sirve para salir y volver a la primera pantalla.
Las pestañas de abajo son Chats, Calls, Contacts y Settings.
Añadir personas
Nadie puede buscarte por número de teléfono ni por nombre. La gente llega a ti con tu tarjeta, y tú eliges a quién se la das.
- My card (Contacts › el icono del QR, o Discover › Share your card) muestra un código QR y Share link. Quien lo escanee o abra el enlace puede saludarte una vez. Los enlaces de invitación valen durante 30 días; Privacy › Invite links los cancela todos.
- Scan QR code lee la tarjeta de otra persona, un nodo que añadir, un dispositivo que enlazar o un número de seguridad. Enter a link instead acepta lo mismo pegado.
- Al abrir un enlace de invitación se ve la persona y Add contact. Al añadirla intercambiáis vuestras tarjetas y sellos, de modo que solo vosotros dos podéis escribir en el buzón del otro. La otra persona te recibe como contacto al instante ("joined from your invite").
- Search in network (Discover) encuentra a alguien por su clave (64 caracteres) o por una dirección como
[email protected](cuando su dominio responde en/.well-known/nos/<name>), o abre un enlace de invitación. Solo encuentra a quien ha activado Discoverable by key; esa persona recibe una solicitud. - Introduce to someone (en los detalles de un contacto) envía a cada uno de dos contactos la tarjeta del otro. Cada uno ve "Introduced by …" en Requests y añade al otro con Say hello.
Solicitudes
Las personas que te han encontrado por tu clave, o a las que te han presentado, aparecen en Requests (un aviso en Chats y en Contacts). No pueden escribirte hasta que pulses Accept. Ignore se olvida de ellas; Block además las frena en tus buzones.
Chats
La lista muestra cada chat con el último mensaje, su hora, los ticks de entrega, si alguien está escribiendo, los borradores y el número de no leídos. All, Unread, Groups y Archive la filtran; el campo de búsqueda filtra por nombre y por texto. Mantén pulsado un chat (o haz clic derecho) para Pin, Mute, Mark as read, Archive o Delete chat. + abre Add a contact, Message a contact, New group y Notes to self (sincronizadas con tus otros dispositivos).

Mensajes
- Escribe y envía; en los móviles, Intro añade una línea, salvo que Settings › Chats › Enter sends esté activado.
- + en el cuadro de texto envía una Photo or video, una foto de la Camera, un File (hasta 100 MB) o My location (se abre en OpenStreetMap).
- El micrófono graba un mensaje de voz: toca para empezar y luego envíalo o descártalo. Los mensajes de voz se reproducen con su forma de onda.
- Mantén pulsado un mensaje (o haz clic derecho) para las reacciones rápidas y Reply, Forward, Save or share, Edit (tus propios textos, en las 48 horas siguientes), Info y Delete (para ti, o para todos en las 48 horas siguientes). Un doble clic reacciona con un corazón.
- Las fotos muestran enseguida una pequeña vista previa y se descargan de los nodos; tócalas para abrirlas a pantalla completa. Los archivos se descargan al tocarlos.
Estados de entrega
| Marca | Significa |
|---|---|
| Reloj | Esperando en este móvil (sin conexión, o ningún buzón ha respondido). Sale solo. |
| Un tick | En un buzón de la otra persona. Espera allí hasta que su móvil lo recoge. |
| Dos ticks | Su dispositivo lo ha recibido y descifrado. |
| Dos ticks azules | Lo ha leído (si los dos tenéis activadas las confirmaciones de lectura). |
| Aviso | No entregado (bloqueado, o no hay forma de llegar a esa persona). Info › Send again lo reintenta. |
Info en un mensaje indica cuándo se escribió, cuándo se envió al buzón, cuándo se entregó y cuándo se leyó; en los grupos, quién lo recibió y quién lo leyó.
Mensajes temporales
En los detalles de un chat, Disappearing messages (1 hora, 24 horas, 7 días, 90 días u Off) hace que los mensajes nuevos desaparezcan de los dos móviles pasado ese tiempo. Privacy › Disappearing messages fija el temporizador de los chats nuevos.
Grupos
New group pide un nombre, una foto opcional y los contactos que quieres añadir (hasta 64 miembros). Ningún servidor guarda el grupo: cada miembro guarda la lista de miembros, firmada por los administradores, y cada mensaje se cifra una sola vez con la clave de quien lo envía y se deja en los buzones de todos los miembros.

- Las pestañas del grupo, arriba: Chat, Media, Files, Members.
- Los administradores pueden usar Add members, Remove from group y Make admin, cambiar el nombre del grupo y su foto. Leave group sirve para salir; el chat se queda en el dispositivo.
- Los miembros que no son contactos tuyos pueden escribirte, y tú a ellos, solo dentro del grupo: cada miembro sella sus buzones para el grupo.
- Cuando alguien entra o sale, los remitentes empiezan a usar claves nuevas, así que quien se ha ido no puede leer lo que llega después.
Llamadas
Los botones del teléfono y de la cámara en el chat de un contacto inician una llamada de voz o de vídeo. Las llamadas van directamente entre los dos dispositivos (WebRTC), cifradas; la señalización viaja en pequeños sobres que caducan en un minuto. Durante una llamada: Mute, Camera (activar o desactivar el vídeo), Flip y End. Una llamada entrante muestra Accept y Decline.
No hay retransmisión para las llamadas: cuando las dos redes no permiten un camino directo, la llamada no se puede conectar y la app dice "Couldn't connect directly". La pestaña Calls muestra tus llamadas; toca el teléfono para devolver una.
Contactos
La lista muestra tus contactos con su nombre de usuario, Online (cuando lo comparten) y tus grupos. Los detalles de un contacto tienen Message, Call, Video, Verify safety number, Nickname (solo lo ves tú), multimedia, mensajes temporales, Mute, Introduce to someone, sus Devices, Block, Clear chat y Remove contact.
Números de seguridad
Cada pareja de contactos comparte un número de seguridad de 60 dígitos. Compáralo en persona o en una llamada, o escanea el código en su móvil con Scan their code: si coincide, márcalo como Verified (una insignia junto al nombre).
Bloquear
Block cancela en todos tus buzones el sello que le diste a esa persona: los nodos dejan de aceptar sus sobres. No se le avisa. Settings › Privacy › Blocked muestra la lista y permite desbloquear.
Notificaciones
Settings › Notifications tiene dos modos:
- Instant: tus buzones despiertan este dispositivo con un aviso push vacío a través del servicio push del navegador. Ese servicio sabe cuándo despertar el dispositivo, nunca qué se ha enviado ni quién lo ha enviado. La notificación dice "New message"; el mensaje se recoge y se descifra cuando abres la app.
- Pure: nada de push. Ves los mensajes nuevos cuando abres la app.
En el iPhone, las notificaciones necesitan la app en la pantalla de inicio (Safari › Compartir › Añadir a pantalla de inicio) y después Turn on notifications. La app de Android busca mensajes mientras está abierta. Con la app abierta, un aviso muestra los mensajes nuevos de otros chats.
Dispositivos
Settings › Devices muestra tus dispositivos. Para añadir uno, abre Nós en el dispositivo nuevo, elige Import account › Link to my phone y ponle un nombre; luego, en tu móvil, toca Link a device y escanea el código que aparece (o abre allí su enlace). El dispositivo nuevo recibe tus contactos y grupos, y a partir de ese momento todos los mensajes; los anteriores se quedan donde estaban. La frase de recuperación se queda en el dispositivo principal, que es también el que elimina dispositivos.
Red

Un nodo guarda buzones: sobres cifrados, hasta que el móvil los recoge (30 días como máximo). No puede leerlos ni ver quién los envió. Cada persona tiene hasta tres buzones en nodos distintos, que figuran en su tarjeta; un mensaje va a todos ellos y la primera recogida lo borra.
- Your nodes muestra cada nodo, si está conectado y tus buzones en él.
- Connection: Automatic usa tus nodos y el público cuando no tienes ninguno; Manual usa solo los nodos que has añadido.
- Add a node escanea o pega el enlace que muestra un nodo. Si nadie ha adoptado aún el nodo, Adopt this node lo hace tuyo: os aloja a ti y a tus contactos con cuotas mayores (500 MB de mensajes y 2 GB de multimedia por persona, 30 días) en lugar de las públicas (50 MB y 200 MB, 7 días para la multimedia).
- Si no tienes ningún nodo propio, la app usa el nodo público de leonardoaguiar.com.
Ejecuta tu propio nodo
nos-node funciona en macOS y Linux (arm64 y x86_64):
curl -fsSL https://leonardoaguiar.com/apps/nos/install.sh | sh
nos-node run
nos-node address
nos-node address muestra un enlace y un código QR; ábrelo en Settings › Network › Add node para adoptar el nodo. Detrás de un router doméstico, ejecútalo con --attach wss://leonardoaguiar.com/_/nos#f4eea0585b7f4cc4ecfab6a76082a724ee42c7b57d462377f6cf8344c785d00a: mantiene una conexión con el nodo público, que le retransmite las apps sin ver nada más que bytes cifrados. En un servidor, ponlo detrás de TLS (nginx o Caddy) y pásale su dirección pública con --url wss://…. --public aloja también a desconocidos (con prueba de trabajo y cuotas pequeñas); --stun 0.0.0.0:3478 responde a STUN para las llamadas directas. El nodo guarda su clave, sus ajustes y sus datos en ~/Library/Application Support/Nos Node (macOS) o ~/.local/share/nos-node (Linux). Volver a ejecutar el comando de instalación lo actualiza.
Copia de seguridad y recuperación

- Frase de recuperación: Show recovery phrase (asegúrate de que nadie está mirando).
- Back up now y Back up every day envían a tus buzones una copia de seguridad cifrada (contactos, grupos, chats y las claves de este dispositivo; no la multimedia), con una clave derivada de tu frase. Save backup file crea un archivo
.nosbakque guardas tú. - Import account › Recovery phrase encuentra tu tarjeta en los nodos, abre tus buzones y recupera la última copia de seguridad. Sin copia, vuelven tu identidad, tu perfil y tus buzones, pero los contactos y los chats empiezan vacíos: vuelve a añadir a tus contactos con tu tarjeta.
- Import account › Backup file abre un
.nosbakcon su frase.
Guardianes
Choose guardians reparte tu frase entre 2 y 7 contactos, de forma que un número de ellos que tú eliges pueda recuperarla junto; menos no revelan nada. Cada parte les llega cifrada. En un móvil nuevo, Import account › Ask my guardians muestra un código y un enlace para enviárselos; cada guardián lo abre en Nós, comprueba que de verdad eres tú y envía su parte. Cuando llegan suficientes partes, la cuenta vuelve. People you protect muestra a quienes te han elegido a ti.
Reset account borra este dispositivo. Sin la frase ni guardianes, la cuenta no puede volver: nadie más la tiene.
Ajustes
| Página | Qué tiene |
|---|---|
| Profile | Foto, nombre visible, nombre de usuario, información, color de acento, My card. Los cambios llegan a tus contactos al instante. |
| Privacy | Introductions (Contacts o Nobody), Discoverable by key, Contacts can share your card, Invite links, Read receipts, Typing indicators, Online status, Disappearing messages para los chats nuevos, Blocked. |
| Notifications | Instant o Pure, Show sender and text, Banners while open. |
| Chats | Theme (System, Light, Dark), Text size, Enter sends, Archive all chats, Clear all chats. |
| Storage and data | Espacio que ocupan en este dispositivo las fotos, los vídeos, los mensajes de voz y los archivos, Manage storage; descarga automática de fotos, vídeos y archivos (Always, Wi-Fi only, Never) y fotos de alta calidad. |
| Devices | Tus dispositivos, Link a device, Remove. |
| Backup and recovery | Frase, copias de seguridad, guardianes, People you protect, Reset account. |
| Network | Connection, tus nodos, Add a node. |
| Advanced | Tu clave (en texto y en código QR), la clave de este dispositivo, Publish my card again, Send waiting messages now. |
No hay "última conexión": ningún nodo la guarda. Los avisos de escritura y de estado en línea son sobres diminutos que caducan en segundos, se envían solo a tus contactos y los dos se pueden desactivar.
Protocolo
- Identidad: las doce palabras (BIP39) derivan la clave de identidad (Ed25519, cuya mitad pública es tu clave), la clave de la tarjeta, la de la copia de seguridad, la de los sellos y las claves de cada buzón. Cada dispositivo tiene su propia cuenta Olm.
- Tarjeta: un registro firmado con tus dispositivos, buzones y perfil, con el interior cifrado con la clave de la tarjeta, que solo tienen tus contactos. Los nodos la guardan con un nombre derivado de esa clave, así que un desconocido que solo sepa tu clave no puede encontrarla.
- Sesiones: los mensajes entre dos personas usan Olm (el Double Ratchet, del vodozemac de Matrix), que empieza con claves de un solo uso guardadas en tus buzones; los grupos usan Megolm, con una cadena de envío por miembro.
- Sobres: sellados con la clave del buzón (X25519 y XChaCha20-Poly1305) y rellenados hasta 1, 4, 16 o 48 KB. El nodo ve el nombre del buzón, el sello, una vida útil y el escalón de tamaño; nada del remitente.
- Sellos: tokens firmados por el dueño del buzón para cada contacto, que nombran una clave titular que tiene que firmar cada sobre, con límites diarios. Bloquear revoca el sello en el nodo. Los desconocidos pagan con prueba de trabajo.
- Canal con los nodos: Noise NK sobre WebSocket, con la clave del nodo conocida de antemano, de modo que ni un retransmisor ni el terminador TLS que haya delante de un nodo pueden leer ni falsificar nada. Los nodos detrás de un router se conectan a un retransmisor con Noise IK.
- Multimedia: cada archivo se cifra con su propia clave, se corta en trozos de 48 KB y se direcciona por el hash de los trozos.
- Despertares: Web Push (RFC 8291 y 8292) con una clave VAPID creada por la app, para que cualquiera de tus buzones pueda despertar tu móvil sin una clave push central.
Instalación y actualizaciones
- Android: el APK de este sitio. Android 7 o posterior. Una vez al día, la app pregunta a este sitio cuál es la última versión y muestra Nós x is available en Settings; el APK nuevo se instala encima del anterior y conserva tu cuenta y tus chats.
- iPhone y iPad: la app web, desde Safari. Abre leonardoaguiar.com/apps/nos/app/, toca Compartir › Añadir a pantalla de inicio y abre Nós desde la pantalla de inicio. iOS 16.4 o posterior. Se actualiza sola.
- Cualquier navegador: la misma dirección funciona en un Chrome, Safari, Edge o Firefox recientes, con la cuenta guardada en ese navegador.
- El nodo: consulta "Ejecuta tu propio nodo".
Privacidad
Nós no tiene servidor propio ni cuentas. Lo que sale de tu dispositivo:
- Sobres a los buzones de los nodos, sellados: el nodo ve un nombre de buzón aleatorio, el escalón de tamaño, la hora y la dirección de internet que se ha conectado.
- Tu tarjeta en tus nodos, firmada y cifrada para tus contactos.
- Trozos de multimedia en tu buzón y en el del destinatario, cifrados, hasta que se descargan (7 días en los nodos públicos, 30 en los tuyos).
- Copias de seguridad cifradas en tus buzones, si las activas.
- Avisos push vacíos para despertar, a través del servicio web push de Apple, Google o Mozilla, cuando las notificaciones Instant están activadas.
- Llamadas, directas al otro dispositivo; el servidor STUN de Cloudflare (
stun.cloudflare.com) le dice a cada móvil su dirección pública. - La comprobación de versión de la app de Android: una petición al día a este sitio, sin enviar nada sobre ti.
No hay estadísticas de uso, ni subida de contactos, ni directorio, ni "última conexión".