Cómo un servidor Styx se abre a la web pública (registro, acceso sin cuenta, quién ve, descarga, sube, edita y modera) y qué piezas de Styx puedes usar para construir lo tuyo encima.
Especificado. Esta página describe el comportamiento objetivo. El diseño está en
dec-0130(PROPOSED) y todavía no hay código. Lo que dice obliga a la implementación. Los nodos que lo construirán están propuestos endec-0130§15 (P10) y no existen aún en el roadmap.
Las dos van juntas porque la primera necesita la segunda: el frontend del modo público es una plantilla que sólo usa piezas públicas.
No hay un "Styx público" aparte. Es el mismo artefacto con STYX_MODE=public, que cambia los
valores por defecto de cinco ajustes. Cada uno se puede cambiar por separado, por la web, la API
o el CLI.
| Ajuste | Valores | Privado (default) | Público (preset) |
|---|---|---|---|
| Registro | closed, invite, approval, open | invite | approval |
| Acceso sin cuenta | off, browse, play, download | off | browse |
| Visibilidad (por biblioteca) | private, unlisted, public | private | private |
| Entrega (por biblioteca) | stream, download, both | both | stream |
| Moderación | off, on | off | on, obligatoria |
Un servidor con registro open o con acceso sin cuenta no arranca si le falta la
moderación, el contacto de abuso (STYX_ABUSE_CONTACT) o las cuotas para anónimos.
Son dos cosas distintas:
closed: sólo las crea un admin.invite: con invitación (ver Invitaciones).approval: cualquiera la pide, con un motivo, y un admin o moderador la aprueba.open: cualquiera, al momento, con un periodo de prueba.Así, "sin registro" puede ser un catálogo que nadie puede editar pero todos ven
(closed + play), o una comunidad donde mirar es libre y participar pide aprobación
(approval + browse).
El inicio de sesión sigue siendo sin contraseña, con passkeys contra un proveedor OIDC (ver Iniciar sesión). Contra los bots, un reto de prueba de trabajo en el navegador, sin CAPTCHAs de terceros. Una invitación entra siempre, sea cual sea la política.
Quien entra sin cuenta no tiene historial ni perfil en el servidor. Si la web recuerda por dónde ibas, lo guarda tu navegador.
Los permisos no son roles nuevos del servidor: son niveles de la concesión de cada biblioteca, de menos a más:
| Nivel | Puede |
|---|---|
view | ver el catálogo y reproducir |
download | además, descargar |
upload | además, subir ficheros a esa biblioteca |
edit | además, editar metadatos y artwork |
moderate | además, resolver denuncias, ocultar, retirar, suspender |
La vía por la que entraste decide tu nivel inicial:
open o approval: view en las bibliotecas abiertas a registrados;upload, edit o moderate.Ninguna vía automática da permiso para subir. Subir y editar en un servidor abierto se da a personas concretas.
Una biblioteca es pública si está concedida a cualquiera, oculta (unlisted) si sólo
se llega por enlace directo, y privada si no. Y cada biblioteca dice si se reproduce, se
descarga o las dos cosas. Cuando pides una descarga en un formato que el fichero no tiene, el
servidor lo genera al vuelo. Sin cuenta sólo se descargan las variantes que ya existen, porque
generarlas cuesta CPU.
En modo público la moderación no se puede apagar:
styx moderation takedown. Lo retirado se conserva un
tiempo configurable sin servirse y después se borra.Styx te da los mecanismos. Cumplir la ley es cosa de quien opera el servidor: el contacto de abuso, las normas de la comunidad, el agente DMCA si aplica, los plazos de la DSA y de las órdenes de retirada de la UE.
Lo que se publica, cada pieza con su versión propia:
| Pieza | Para qué |
|---|---|
| API HTTP + OpenAPI | hablar con un servidor Styx desde cualquier lenguaje |
@styx/sdk | cliente TypeScript tipado, generado del contrato |
@styx/plugin-sdk, @styx/source-sdk | escribir plugins y fuentes |
@styx/player | reproducir sesiones de Styx con tu player o con el nuestro |
@styx/ui | los componentes visuales de Styx |
CLI styx | todo lo de la API, con --json para scripts y agentes |
| conduit, spire | subidas/descargas reanudables y mensajería, en sus repos |
Cada símbolo lleva una etiqueta de estabilidad:
@public: contrato; no cambia de forma incompatible sin subir la versión mayor (la menor
mientras sea 0.x).@beta: estable en intención; puede cambiar con aviso.@alpha: para probar; puede cambiar sin aviso.@internal: no lo uses.Todo empieza en @alpha o @beta y se promueve a @public cuando lo usa algo real. Las
operaciones de la API que se retiran avisan con las cabeceras Deprecation y Sunset antes de
desaparecer.
La plantilla de frontend público es una app que sólo puede usar estas piezas. Si la plantilla funciona, tú puedes hacer lo mismo: copiarla, cambiarla, o ignorarla y usar sólo la API.