El servidor decide
Nada en el producto marca localmente un "está licenciado". El cliente pregunta a nuestro servidor y recibe un veredicto; eso es lo único que se le permite creer.
Cada herramienta con licencia de Devolith usa el mismo motor. Esto es exactamente cómo se comporta — para quien compra y quiere saber qué está activando, y para developers que lo integran.
Nada en el producto marca localmente un "está licenciado". El cliente pregunta a nuestro servidor y recibe un veredicto; eso es lo único que se le permite creer.
Cada clave lleva una firma HMAC-SHA256 sobre su propio cuerpo. Una clave inventada falla las matemáticas antes de llegar a la base de datos: los generadores de claves no tienen nada que atacar.
Las respuestas se firman con nuestra clave privada y se verifican en el cliente con la pública. Falsear una respuesta "válida" significa forjar una firma, no editar un JSON.
Cada veredicto incluye la huella de la máquina, el nonce que envió tu cliente y una caducidad. Una respuesta capturada no se puede reproducir en otra máquina ni mantener viva para siempre.
Tres máquinas por licencia por defecto. La cuarta se rechaza en el servidor, y tú liberas una plaza desde tu panel con un clic.
La validación tiene límite de frecuencia por clave y por IP. Una clave respondiendo desde una multitud de redes se marca y se revisa. Los reembolsos y disputas revocan la clave automáticamente.
Cualquier software que corre en el ordenador de otra persona se puede acabar parcheando — quien diga lo contrario te está vendiendo algo. Lo que hace este motor es que compartirlo por descuido no sirva de nada, que los generadores de claves no funcionen, que la licencia sea revocable en cualquier momento, y que veamos el abuso mientras ocurre. Ese es el nivel de protección que de verdad usan las empresas de software reales.
La comprobación envía una clave de licencia, una huella de máquina con hash y el nombre del producto. No se escanean archivos, no se recogen datos personales, y el producto sigue funcionando sin conexión hasta que expira el margen de gracia.
Cada veredicto firmado es válido siete días, así que vuelos, caídas de VPN o servidores de build sin red no rompen tu trabajo. Pasado ese plazo, el producto pregunta una vez al servidor y sigue.
El nivel Extended sube el número de plazas y permite proyectos de cliente ilimitados. Misma validación, mismo panel: simplemente ves más máquinas listadas bajo una clave.
Aplica a las herramientas vendidas con licencia (no a las suscripciones SaaS, que no emiten clave Devolith).
Activa una máquina y devuelve un veredicto firmado. Consume una plaza la primera vez que se ve una huella.
POST https://devolith.dev/api/licence/validate
Content-Type: application/json
{
"key": "DV-XXXX-XXXX-XXXX-XXXX",
"fingerprint": "sha256-de-la-maquina",
"product": "perfex-ai-assistant",
"nonce": "aleatorio-por-peticion"
}
200 OK
{
"valid": true,
"alg": "ed25519",
"keyId": "…",
"signature": "base64…",
"payload": {
"sku": "perfex-ai-assistant",
"status": "valid",
"machine": "…",
"seats": 3,
"seatsUsed": 1,
"nonce": "aleatorio-por-peticion",
"expiresAt": "2026-08-22T10:04:11.000Z"
}
}
Los errores son deliberadamente vagos — invalid_key cubre tanto claves mal formadas como desconocidas, así el endpoint no sirve para enumerar claves válidas. Otros códigos: seat_limit (409), licence_revoked / licence_refunded (403), rate_limited (429).
Mismo contrato, pero nunca consume una plaza: solo refresca una activación existente. Llámalo con una frecuencia periódica —una vez al día es suficiente—, no solo al arrancar. Comprobar solo al inicio es el error que vuelve la licencia inútil.
Devuelve la clave pública Ed25519 usada para verificar veredictos. Fíjala dentro de tu build; descárgala solo como respaldo.
const crypto = require('crypto');
const ok = crypto.verify(
null,
Buffer.from(res.body), // bytes exactos devueltos
crypto.createPublicKey(DEVOLITH_PUBLIC_KEY),
Buffer.from(res.signature, 'base64')
);
if (!ok || res.payload.nonce !== miNonce) throw new Error('manipulado');
valid: true.expiresAt.isLicensed().El cliente de referencia se incluye con cada compra (devolith-licence.js para Node, Electron y extensiones de navegador, devolith-licence.php para plugins y temas de WordPress) y está listo para usar.
Rota una clave comprometida, libera una máquina, descarga la última versión.