Haz una foto con el móvil. Mírala en el ordenador. Descarga solo la que quieres.
PepoConnect conecta tus dispositivos por la red local para mover fotos, vídeos, archivos y texto. Sin enviártelos por un chat, sin cuentas y sin subir tus archivos a una nube. Una alternativa a la parte de fotos y archivos de Intel Unison, con Windows, Linux, Android e iPhone.
Descargar la última versión · Novedades de 0.4 · English
Si te resulta útil, puedes apoyar el proyecto con una ⭐. Y si algo falla, cuéntalo aquí: nos ayuda mucho más saber qué ha pasado que quedarnos con la duda.
Instala PepoConnect en los dos dispositivos que quieras conectar.
| Tu dispositivo | Descarga |
|---|---|
| Windows 10/11 de 64 bits | PepoConnect.exe · ZIP portable |
| Android | APK para móviles actuales · APK universal ARM |
| Linux x64 | AppImage · Flatpak · tar.gz |
| Linux ARM64 | AppImage · Flatpak · tar.gz |
| iPhone | IPA para instalación manual · Cómo instalarlo |
Windows se abre directamente. Android pide permiso para instalar el APK. En Linux, da permiso de ejecución al AppImage o abre el Flatpak con tu gestor de software. iPhone requiere AltStore o Sideloadly; no es una descarga del App Store. Las variantes Android de 32 bits y x86_64 están en la página de la versión.
- Conecta los dos dispositivos a la misma red y abre PepoConnect.
- Empareja el móvil escaneando el QR del ordenador, o usa el código de seis dígitos.
- Abre la galería o arrastra un archivo al dispositivo. Los dispositivos que ya has emparejado se vuelven a conectar solos.
Nuevo en 0.4: puedes actualizar desde Ajustes → Acerca de. La app comprueba si hay una versión nueva cada día y puedes desactivar los avisos que aparecen en pantalla. Si vienes de una versión anterior a 0.4, instala esta una vez para activar el nuevo actualizador. En Windows y Linux, cierra la versión anterior antes de abrir la nueva descarga. En Android, instala el APK sobre la app existente para conservar tus datos.
| Galería del móvil en el PC | Transferencias |
|---|---|
![]() |
![]() |
| Tema oscuro, fotos recién llegadas | Emparejar por QR | Ancho de móvil |
|---|---|---|
![]() |
![]() |
![]() |
Capturas de la aplicación real.
- Galería del móvil en el PC con miniaturas, previsualización a 1600 px y descarga del original con sus metadatos. Las fotos nuevas aparecen arriba con un aviso y un toast con "Ver" y "Descargar" (una ráfaga de fotos se agrupa en un solo aviso); "Seleccionar nuevas" (Ctrl+Mayús+N) las deja listas para descargarlas de golpe.
- Transferencias en los dos sentidos: arrastra archivos a la zona del dispositivo o elige "Añadir archivos…"; desde el móvil, el botón de enviar o "Compartir con PepoConnect". Reanudación tras cortes, verificación de integridad y varios archivos en paralelo.
- Varios móviles a la vez en el mismo PC, con lo recibido separado por
dispositivo (
Fotos/,Vídeos/,Archivos/) o unificado desde Ajustes. - Emparejamiento por QR (móvil) o por código de 6 dígitos (PC↔PC), con reconexión automática.
- Sigue conectado con la app cerrada: con «Servicio en segundo plano» activado, haces una foto y llega al PC sin abrir PepoConnect. En Android, un servicio en primer plano mantiene vivo el motor aunque cierres la ventana o la quites de recientes, y lo rearranca solo si Android mata el proceso o reinicias el móvil. En iPhone, PepoConnect se mantiene en marcha con el modo de audio del sistema (un bucle de silencio inaudible que no interrumpe tu música); si cierras la app desde el selector de apps o reinicias el iPhone, las fotos pendientes esperan en cola y salen al volver a abrirla. Lo que no se puede enviar en el momento —el PC apagado, la Wi-Fi caída— queda guardado y se envía solo al reconectar.
- Portapapeles compartido: un solo interruptor por pareja de dispositivos (se activa en cualquiera de los dos y vale para ambos sentidos). El PC lo envía al instante; Android no deja leer el portapapeles en segundo plano, así que el móvil lo manda al abrir PepoConnect, con el tile «Enviar portapapeles» de los ajustes rápidos, con el acceso directo del icono o con "Compartir → PepoConnect".
- Extras: auto-descarga de fotos nuevas, conversión HEIC→JPEG en el móvil, modo sesión de fotos y envío por navegador a cualquiera sin la app (enlace de un solo uso).
- Actualizaciones desde la app: comprobación cada 24 horas mientras está abierta (también en la bandeja) y al volver a abrirla si toca comprobar. «Ajustes → Acerca de → Actualizar» descarga, verifica e instala la nueva versión. El aviso aparece una sola vez por versión y se puede desactivar en «Ajustes → Notificaciones → Avisos de actualizaciones»; la comprobación diaria y el botón siguen funcionando.
Windows y Linux (AppImage/tarball) se reinician para completar la actualización
y conservan el perfil. Android pide la confirmación de su instalador; Flatpak
abre el gestor de software. En iPhone, el .ipa sin firmar requiere volver a
instalar con AltStore o Sideloadly usando la misma cuenta: iOS no permite que ese
paquete se sustituya a sí mismo. La app indica el paso correspondiente.
Los archivos van por un carril aparte escrito en Rust (packages/pepo_native):
una conexión TCP por archivo, cifrada con AES-256-GCM con una clave derivada
del emparejamiento y de la sesión, con xxh3 de integridad, escrita en disco
sin pasar por Dart. En la práctica, la velocidad depende de la Wi-Fi y del
almacenamiento de los dispositivos. El canal de control (ofertas, aceptaciones,
miniaturas) sigue en TLS.
Se negocia por archivo: si un extremo no tiene el motor (versión antigua,
biblioteca no cargada) o su puerto no es alcanzable, ese archivo va por los
canales TLS de siempre y la app sigue funcionando. En "Acerca de" se ve si el
motor está activo. El crate se compila dentro de flutter build en las cinco
plataformas (cargokit en Windows, Linux e iOS; tarea de Gradle en Android), así
que hace falta rustup para compilar el proyecto.
Cada dispositivo genera una clave EC P-256 y un certificado autofirmado. Entre aplicaciones emparejadas, el canal de control usa TLS 1.3 con el certificado del otro extremo anclado por huella, y cada sesión se autentica con una clave compartida derivada durante el emparejamiento (HKDF/HMAC-SHA256). Los archivos y el emparejamiento no usan servidores externos. Las comprobaciones de actualizaciones consultan GitHub; los paquetes se descargan únicamente al pulsar «Actualizar» y se verifican con el SHA-256 publicado en esa misma versión.
Los enlaces temporales para invitados, que se abren en un navegador sin instalar la app, usan HTTP sin cifrado dentro de la red local. Úsalos únicamente en una red de confianza; para enviar contenido cifrado, empareja las aplicaciones.
Los programas (.exe, .msi, .apk…) no se envían ni se aceptan, ni entre
dispositivos ni por el enlace de invitado, salvo que actives «Permitir
ejecutables» en Ajustes › Almacenamiento. Cada dispositivo decide por sí
mismo, así que hace falta activarlo en los dos; quien envía uno con el ajuste
apagado en el otro extremo ve la transferencia fallar con el motivo.
Requisitos: Flutter 3.47 (estable), Visual Studio Build Tools con C++ y ATL
(Windows), Android SDK con NDK 28, Java 17, Rust con rustup (motor rápido y
lanzador de Windows; los targets de Android e iOS se instalan solos).
flutter pub get
flutter test # tests de la app
cargo test --release --manifest-path packages/pepo_native/rust/Cargo.toml
cd packages/pepo_core && dart test # motor de red, TLS y carril rápidoLos tests del carril rápido cargan la biblioteca de packages/pepo_native/rust/target/release
(compílala antes con cargo build --release) o la que indique PEPO_NATIVE_LIB.
Prueba de extremo a extremo real (la app completa y un "móvil" sin interfaz en el mismo proceso, sobre TLS en loopback: emparejar por QR, foto nueva, descarga, envíos en los dos sentidos):
flutter test integration_test/e2e_test.dart -d windows| Plataforma | Comando |
|---|---|
Windows (.exe único) |
flutter build windows --release y .\packaging\windows\build-portable.ps1 → dist\PepoConnect-win-x64.exe |
| Android | flutter build apk --release --split-per-abi (firma con android/key.properties, ver key.properties.example) |
| Linux | flutter build linux --release y packaging/linux/make-tarball.sh x64, make-appimage.sh x64 x86_64, make-flatpak.sh x64 x86_64 |
| iOS | flutter build ios --release --no-codesign (el .ipa sin firmar se genera en CI) |
.github/workflows/release.yml compila todos los destinos al crear una
etiqueta vX.Y.Z (tool/release.ps1 -Part patch).
Segunda instancia en el mismo PC para probar: flutter run -d windows --dart-entrypoint-args=--profile=dev2.
- Descarga
PepoConnect-ios-unsigned.ipadel release. - Instálalo con Sideloadly (Windows) o AltStore con tu Apple ID.
- Con Apple ID gratuito la app caduca cada 7 días (AltServer la renueva sola si está en la misma Wi-Fi) y puedes tener 3 apps así a la vez.
- La primera vez, acepta el permiso de "Red local" y da acceso completo a las fotos: con «Acceso limitado» iOS oculta las fotos nuevas y el envío automático se queda sin nada que enviar (Ajustes › Este móvil avisa si pasa).
- Para que las fotos salgan con la app cerrada, deja activado «Servicio en segundo plano» en Ajustes › Este móvil. «Estado del segundo plano» dice si el motor está vivo y desde cuándo.
packages/pepo_core: motor en Dart puro (identidad, protocolo, sesiones, transferencias, galería, servidor de invitados). Sin dependencias de Flutter.lib/: app Flutter (estado con Riverpod, shell Fluent, páginas, plataforma).windows-launcher/: lanzador Rust que empaqueta la app en un solo.exe.packaging/: scripts de empaquetado por plataforma.
Copyright © 2026 PepoTech (pepitolas13).
El código propio de PepoConnect se publica bajo GNU GPL versión 3
(GPL-3.0-only). Puedes usarlo, estudiarlo, modificarlo y redistribuirlo,
también con fines comerciales. Si distribuyes una versión modificada, debes
facilitar su código fuente bajo GPLv3 y conservar los avisos de autoría.
Las dependencias y el código de terceros conservan sus respectivas licencias.
Las ideas, las pruebas en otros dispositivos y los informes de fallos ayudan mucho. Consulta cómo contribuir y cómo comunicar un problema de seguridad.




