Explicacion

Transferencias

Cómo sube, descarga, guarda para ver sin conexión y comparte ficheros Styx, y por qué una descarga vale lo mismo que un stream.

Especificado. Esta página describe el comportamiento objetivo. El diseño está en dec-0129 (LOCKED el 2026-10-02). Hoy sólo existe la subida desde el CLI (dec-0121); el resto todavía no tiene código. Lo que dice obliga a la implementación.

La idea

En Styx, mover ficheros no es un extra: es una de las piezas centrales, igual que reproducir. Subir, descargar, guardar para ver sin conexión, traer contenido de fuera y pasarlo entre servidores usan el mismo motor, el byte runtime del daemon, con las mismas reglas:

  • Todo se reanuda. Si se corta la conexión, se cierra la pestaña o se apaga el portátil, la transferencia sigue donde se quedó. Nunca vuelve a empezar.
  • Todo se verifica. Cada trozo que llega se comprueba antes de guardarlo o de entregarlo, venga del servidor, de otro servidor o de un peer.
  • Lo que entra se indexa al momento. No hay que esperar a un escaneo de la biblioteca.
  • Una transferencia nunca estropea una reproducción. Si alguien está viendo algo, su vídeo va primero.

Subir

Subes un fichero (o una carpeta) desde la web, la app o el CLI, y en cuanto termina está en la biblioteca, listo para reproducir y descargar. Sin rsync, sin FTP y sin "reescanear la biblioteca".

  • Se sube por trozos con el protocolo conduit. Cada trozo lleva su hash, y el fichero entero también, así que el servidor sabe si algo llegó mal.
  • Si se corta, se pregunta al servidor qué trozos tiene y se envía sólo lo que falta.
  • Lo que ya está no se vuelve a subir. Si el servidor ya tiene ese fichero dentro de tu dominio de deduplicación, la subida termina sin enviar los bytes. Por defecto el dominio es tu hogar; el operador puede elegir sólo tu usuario o el servidor entero. El servidor entero ahorra más, pero deja deducir qué ficheros tiene otro usuario, y Styx lo avisa antes de activarlo.
  • Para subir hace falta un permiso propio, y cada usuario tiene cuotas: cuánto ocupa como mucho un fichero, cuánto puede tener a medio subir y cuánto ha subido en total.
  • Después, en segundo plano, Styx identifica la película o el episodio, busca sus metadatos y los escribe dentro del fichero (ver Metadatos en el fichero).
styx upload "Película (2024).mp4"
styx upload ./Temporada\ 1/

Descargar

Una descarga vale lo mismo que un stream. Puedes llevarte:

Qué pidesQué recibes
El originalel fichero tal cual, byte a byte
Otro contenedorpor ejemplo, un MKV como MP4, sólo con las pistas de audio y subtítulos que elijas
Otro formato o calidadotro códec, resolución o bitrate, generado al vuelo igual que se genera el stream
Con los metadatos dentrocualquiera de los anteriores con título, ids y portada incrustados, para verlo en VLC o por AirPlay
  • Se reanuda en cualquier programa. La descarga usa HTTP estándar (rangos y If-Range), así que el navegador, VLC, curl o un gestor de descargas pueden continuarla tras un corte.
  • Lo convertido no se repite. Si pides un formato que otro usuario ya pidió, sale de la caché a toda velocidad. Si una conversión se corta, se reanuda sin volver a convertir lo hecho.
  • Lo cambiado de contenedor tiene tamaño exacto desde el primer byte, porque Styx calcula el fichero de salida de antemano y siempre produce los mismos bytes.
  • Varias fuentes a la vez. El cliente de descarga de Styx puede bajar el mismo fichero de varios sitios que lo tengan y comprobar cada trozo, así que si una fuente falla o miente, se nota y se descarta.
styx download <asset>                              # el original
styx download <asset> --profile mp4 --metadata     # MP4 con metadatos y portada
styx download <asset> --profile mp4 --dry-run      # explica qué haría, sin descargar

Permisos

Descargar es un permiso distinto de reproducir (asset:download frente a asset:play). Un servidor puede dejar ver sin dejar descargar, o al revés. Las cuentas restringidas no descargan. Convertir a otro formato gasta CPU del servidor, así que cada usuario tiene un presupuesto de conversión.

Ver sin conexión

Descargar para ver sin conexión guarda el fichero en tu dispositivo junto con lo necesario para reproducirlo sin el servidor:

  • Web: el navegador guarda el fichero en su almacenamiento privado (OPFS). En Chrome y Edge la descarga sigue aunque cierres la pestaña; en los demás, se reanuda al volver.
  • App: descarga en segundo plano del sistema.
  • CLI: styx download deja el fichero donde le digas.

Los metadatos van dentro del fichero, así que tu lista de descargas se ve igual sin red. Lo que veas sin conexión (por dónde vas, qué has terminado) se sincroniza al volver a conectarte.

Traer contenido de fuera y entre servidores

  • Adquisición: lo que Styx trae de fuera (torrents, enlaces directos, otro Styx, Jellyfin, un almacenamiento remoto) entra por la misma puerta que una subida y se indexa al terminar.
  • P2P: Styx comprueba los trozos con BLAKE3, en bloques de 16 KiB, los mismos que usa BitTorrent v2. Para sembrar un fichero calcula el árbol de BitTorrent v2 en una sola lectura, verificada contra el suyo, y sólo de lo que se siembra. Nada se comparte en un swarm público si el operador no lo activa para esa biblioteca.
  • Entre servidores Styx: los ficheros viajan por trozos verificados, con permisos acotados y que caducan. El detalle es de la federación.

Para operadores: qué se mide

Styx se compara con las mejores herramientas de cada caso, en la misma máquina y la misma red:

CasoSe compara con
Descargar el originalnginx sirviendo el mismo fichero (sendfile+kTLS)
Descargar desde lejosaria2 con varias conexiones
Subirrsync por SSH, más el re-escaneo de Jellyfin
TorrentsqBittorrent
Reanudar y verificarcortes en puntos al azar y fuentes que mienten
No molestar al que ve algola misma reproducción sin transferencias

Los umbrales concretos están en dec-0129 §4 y los fija el gate del nodo que los implemente.