stwrd
Plan flex · CLP 0 al mes

Esa tabla users con password_hash ya es un producto aparte.

stwrd te da la entrada completa —OIDC, passkeys, organizaciones, roles, SSO y bitácora— detrás de seis rutas y un SDK. Empiezas sin tarjeta: el plan flex no tiene cuota fija y cuesta CLP 12 por usuario que vuelve.

Sin tarjeta. Sin RUT. CLP 10.000 de saldo para probar esta noche.

server.ts
import { Stwrd, requirePermission }
  from "@stwrd/node";

const stwrd = Stwrd.fromEnv();

// resuelve la sesión una vez por petición
app.use(stwrd.attach());
// entrada, callback, salida, webhooks…
app.use(stwrd.authRouter());

app.get("/facturacion",
  requirePermission(stwrd, "billing:read"),
  (req, res) => res.json(req.stwrd.user));

// El permiso vino de la organización a la que
// entró la persona: nunca escribiste roles.
Seis rutas
La sesión vive en tu servidor; el token nunca toca el navegador
Estándares
OIDC con PKCE, rotación de refresh, JWKS por tenant
Tres SDK
Python, Node y React. Mismas rutas, mismas respuestas
Sin sorpresas
Toda fila lleva su tenant. No es convención: es restricción
Construirlo tú

Nadie decide construir un IdP. Se llega igual, un ticket a la vez.

La primera versión son dos horas: una tabla, un hash, una cookie. El problema es lo que viene después, que nunca aparece en la estimación y siempre aparece en el sprint.

Tu backlog

Lo que le crece a la tabla users

  • +
    Recuperar la contraseñaToken de un solo uso, que expira, que no se puede reusar aunque lleguen dos peticiones a la vez.
  • +
    «¿Ese correo existe?»El registro y la recuperación tienen que responder idéntico exista o no la cuenta. Byte a byte.
  • +
    Segundo factorTOTP con su ventana, códigos de respaldo de un solo uso, y la ceremonia WebAuthn si quieres passkeys.
  • +
    Cerrar sesión de verdadRevocar la sesión, su familia de refresh y avisarle a las otras aplicaciones. Hoy borras una cookie.
  • +
    Organizaciones e invitacionesEl día que un cliente tenga dos personas: miembros, roles, invitación que caduca, quién puede invitar.
  • +
    SAMLMetadata, firma, ACS, relojes desfasados. Aparece en la reunión donde estabas cerrando el contrato.
  • +
    Bitácora que aguante una auditoríaAppend-only de verdad, no un INSERT que alguien puede olvidar en la ruta nueva.
Y cada uno de estos tiene una forma sutil de estar mal que solo se descubre cuando alguien la explota.
Con stwrd

Lo que escribes en cambio

  • Dos líneas para montar /auth/*Entrada, callback, salida, sesión y webhooks. La sesión se resuelve una vez por petición.
  • Un guard por rutarequirePermission(stwrd, "billing:read"). El permiso viaja en el token.
  • Cero pantallas de auth en tu repoEntrar, registrarse, recuperar, enrolar factor y administrar la cuenta ya están hechas y traducidas.
  • Passkeys sin tocar WebAuthnY sin costo: el segundo factor es gratis en los tres planes, porque cobrarlo es regalar el plan de entrada al atacante.
  • El SSO llega cuando lo pidenSe enciende por organización el día de la reunión, no el trimestre siguiente.
  • La bitácora la escribe un middlewareNinguna ruta puede olvidarse de registrar: no es disciplina, es dónde vive el código.
  • Y si te arrepientes, exportasUsuarios, hashes, organizaciones, roles y membresías, documentado, con lo que no se puede llevar dicho de frente.
Un jueves a las 20:00 alcanza para tener tu login andando. Esa es toda la promesa.
El plan flex

Prepago, sin registrar tu tarjeta y sin sorpresas a final de mes.

Cargas saldo, el consumo se descuenta en el instante en que ocurre y nunca te llega una cuenta a fin de mes por algo que no viste venir. Y si el saldo se está acabando te avisamos antes — cuando quedan siete días de autonomía al ritmo que vienes gastando, y otra vez cuando quedan dos. Si aun así llega a cero, se dejan de crear cuentas nuevas pero quien ya tiene la suya sigue entrando, y tienes treinta días para recargar antes de que el servicio se corte. Recargar revierte todo en el acto.

Tu primer mes en flex
340 personas registradas
Cuota del planflexCLP 0
112 usuarios retenidosvolvieron al menos una vezCLP 1.344
228 que nunca volvieronbots, pruebas, correos muertosCLP 0
4 organizaciones, 3 aplicacionesilimitadas en los tres planesCLP 0
Passkeys y TOTPgratis en los tres planesCLP 0
Se descuenta del saldoCLP 1.344
Lo que en pro y max viene incluido, en flex lo compras por día
Tu marca: logo, colores y sin el pie de stwrdCLP 600 / día
Roles y permisos propiosCLP 250 / día
Exigir segundo factorCLP 250 / día
Sesiones configurablesCLP 150 / día
Bitácora de 30 díasCLP 150 / día
Bitácora de 90 díasCLP 400 / día
Conexión SAML, cada unaCLP 1.500 / día
Cuándo conviene cambiarse

El cruce está en 2.000 usuarios retenidos. Te lo decimos nosotros.

Es aritmética, no una conversación de ventas: por debajo de dos mil, flex cuesta menos que pro; exactamente en dos mil cuestan lo mismo; por encima, pro es más barato. El cruce de pro a max está en seis mil.

1.000 retenidos
CLP 12.000 flex · pro costaría CLP 18.000

Quédate en flex. Estás pagando dos tercios de la cuota fija que ni siquiera contrataste.

2.000 retenidos
CLP 24.000 flex = pro, exacto

El punto de indiferencia. Desde acá, pro trae incluido lo que en flex venías comprando por día.

6.000 retenidos
CLP 48.000 pro = max, exacto

El segundo cruce. Max además trae una conexión SAML y bitácora de 90 días.

La lista que traba el contrato

Tu primer cliente grande manda siempre las mismas seis preguntas.

Nunca son sobre tu producto: son sobre si su gente de TI y de cumplimiento puede convivir con él. Y llegan después de que la demo salió bien, cuando lo único que falta es firmar. Las seis vienen resueltas.

«Entramos con nuestro propio proveedor de identidad.»

SAML por organización, no por tenant: su conexión, su certificado, su metadata. La clínica de al lado sigue entrando con contraseña.

«Nuestros administradores manejan a nuestra gente.»

Una consola delegada en /my-org: miembros, invitaciones, roles, dominios y su propia bitácora. Su administrador deja de ser un ticket en tu soporte.

«Muéstrennos quién accedió a qué.»

Un registro que solo agrega, escrito por un middleware y nunca por un endpoint que alguien pueda olvidar. Se lee por API en los tres planes; el plan cambia cuántos días dura.

«Cuando desvinculamos a alguien, queda fuera.»

El cierre de sesión llega por canal trasero hasta tu aplicación, no solo a la pestaña del navegador. La sesión y su familia de refresh mueren juntas, en una sola sentencia.

«Nuestros roles no son los suyos.»

Roles y permisos definidos por organización y transportados en el token: tu código pregunta requirePermission y no vuelve a escribir una tabla de roles.

«¿Qué pasa si nos vamos?»

Una exportación documentada —usuarios, hashes de contraseña, organizaciones, roles, membresías— con la lista honesta de lo que no se puede llevar: passkeys, secretos TOTP y sesiones vivas.

Organizaciones

Un tenant. Tantas organizaciones como clientes tengas.

Si tu producto se le vende a empresas, cada cliente de tu cliente es una organización: sus miembros, sus roles, su marca en la pantalla de entrada, su SSO si lo tiene. Ilimitadas en los tres planes — le sacamos el medidor, porque cobrar por organización es ponerle impuesto justo al crecimiento que quieres.

Una persona puede pertenecer a varias. El token dice a cuál entró, y los permisos viajan con él.

Tenant
Clinify
Clínica NorteSAML218 miembros
Centro Médico SurPasskeys41 miembros
Dra. Ana RivasEnlace por correo1 miembro

Tres clientes, tres formas de entrar, una sola integración. La consulta de una persona no necesita SAML, y el hospital no acepta otra cosa.

Precios

Todos parten en flex. Te cambias cuando la cuota fija te salga más barata.

Precios en pesos chilenos. Sin costo de instalación, sin mínimo de asientos, sin contrato anual obligatorio.

pro
CLP 18.000 / mes
1.000 usuarios retenidos incluidos · CLP 6 el adicional
  • Todo lo de flex, incluido en vez de por día
  • Tu marca en las pantallas, y el pie de stwrd apagable
  • Tus propios roles y permisos
  • Bitácora de 30 días
  • Conexiones SAML a CLP 38.000 cada una
Conviene desde 2.000
max
CLP 45.000 / mes
5.000 usuarios retenidos incluidos · CLP 3 el adicional
  • Todo lo de pro
  • Una conexión SAML incluida
  • Bitácora de 90 días
  • Soporte prioritario con SLA
  • Conexiones SAML adicionales a CLP 28.000
Conviene desde 6.000

Anual, si lo quieres: pagas diez meses en vez de doce, te llevas 25% de descuento en cada usuario retenido y congelas la lista de precios por un año. Sin cobro de salida de ningún tipo —ni multa, ni devolución del descuento—: si te vas en el mes tres, simplemente dejas de pagar.

Cómo se entra

Del clic a tu propia pantalla de entrada.

Sin llamada de ventas, sin formulario para pedir un sandbox, sin esperar a un ejecutivo de cuenta.

Creas tu tenant

Con GitHub, Google o un correo. El nombre de tu organización es lo que va a ver tu gente en la pantalla de entrada.

Aseguras la cuenta

Una passkey, códigos de respaldo que se muestran una sola vez y un correo de recuperación distinto del de la cuenta.

Te llevas las credenciales

Emisor, client id y secreto, más el fragmento para tu framework — e instrucciones que tu agente de código puede seguir solo.

Pruebas la entrada

Tu pantalla, en tu URL de retorno, con el saldo ya cargado. Subes de plan desde adentro el día que la aritmética lo pida.

Un jueves a las 20:00 alcanza.

Creas el tenant, pegas dos líneas, y tu login anda. Sin tarjeta, sin RUT y con CLP 10.000 de saldo: el primer usuario retenido te cuesta doce pesos.