Cómo usar Pulsar
Pulsar muestra en tu móvil el estado de tus API y servicios. Añades un endpoint a tu backend, GET /pulsar, lo proteges con un token y Pulsar lo lee. En unos diez minutos pasas de un proyecto vacío a tu primera notificación.
1. Qué necesitas
- Una API o backend que puedas desplegar, en cualquier lenguaje o framework.
- Un sitio donde definir variables de entorno (un archivo
.env, el panel de tu hosting o los secretos de tu CI). - Pulsar instalada en un iPhone (iOS 15 o posterior) o en un Android (Android 6 o posterior).
No hace falta cuenta, ni SDK, ni ningún servicio de terceros.
2. Crea un token
Genera un token largo y aleatorio. Es la única llave que permite leer tu estado, así que trátalo como una contraseña:
openssl rand -hex 32
También puedes usar Herramientas para desarrolladores › Generador de tokens dentro de la app, que crea un token de 256 bits en tu dispositivo.
Añádelo al entorno de tu servidor, nunca al código fuente:
PULSAR_ENABLED=true
PULSAR_TOKEN=<tu-token>
Si PULSAR_ENABLED no es exactamente true, o el token está vacío, el endpoint debe responder 404 Not Found, como si no existiera.
3. Añade GET /pulsar a tu API
El endpoint comprueba tus componentes (base de datos, caché, workers, servicios externos) y devuelve JSON:
{
"status": "operational",
"components": [
{ "name": "API", "state": "operational", "uptime30d": 1 },
{ "name": "PostgreSQL", "state": "operational", "uptime30d": 0.9999 },
{ "name": "Redis", "state": "degraded", "uptime30d": 0.9872 }
],
"checkedAt": "2026-10-03T09:41:00.000Z"
}
Las reglas importantes:
- Lee el token solo de la cabecera
Authorization: Bearer <token>y compáralo en tiempo constante. Nunca lo aceptes en la URL. - Un token ausente o incorrecto devuelve
401 Unauthorizedy no ejecuta ninguna comprobación. - Responde con
Content-Type: application/jsonyCache-Control: no-store. - Un componente caído no es un error: devuelve igualmente
200 OK, con ese componente enmajor_outage. uptime30des un número entre0y1(por ejemplo,0.9999es 99,99 %).
Un ejemplo mínimo con Node.js y Express:
import crypto from "node:crypto";
import express from "express";
const app = express();
app.get("/pulsar", async (req, res) => {
const token = process.env.PULSAR_TOKEN ?? "";
if (process.env.PULSAR_ENABLED !== "true" || !token) return res.sendStatus(404);
const given = (req.get("authorization") ?? "").replace(/^Bearer /, "");
const a = crypto.createHash("sha256").update(given).digest();
const b = crypto.createHash("sha256").update(token).digest();
if (!crypto.timingSafeEqual(a, b)) {
return res.set("WWW-Authenticate", "Bearer").sendStatus(401);
}
const db = await checkDatabase(); // "operational" | "degraded" | "major_outage"
const components = [
{ name: "API", state: "operational", uptime30d: 1 },
{ name: "PostgreSQL", state: db, uptime30d: 0.9999 },
];
const status = components.some((c) => c.state === "major_outage")
? "partial_outage"
: components.some((c) => c.state === "degraded") ? "degraded" : "operational";
res.set("Cache-Control", "no-store")
.json({ status, components, checkedAt: new Date().toISOString() });
});
Dentro de la app, en Guía de configuración, tienes guías completas y probadas para Node.js, Express, Fastify, NestJS, Next.js, FastAPI, Django, Laravel, Go, Rust, .NET y Spring Boot, junto con la especificación completa del Pulsar Protocol.
Despliega y compruébalo desde tu ordenador:
curl -H "Authorization: Bearer $PULSAR_TOKEN" https://api.example.com/pulsar
4. Añade tu proyecto en Pulsar
Pulsa + en la pantalla Proyectos y rellena:
| Campo | Qué poner |
|---|---|
| Nombre del proyecto | Cualquier nombre que reconozcas, p. ej. «API de facturación» |
| Entorno | Desarrollo, Staging o Producción |
| URL base | La dirección de tu API, p. ej. https://api.example.com |
| Endpoint de Pulsar | /pulsar, salvo que hayas usado otra ruta |
| Token | El valor de PULSAR_TOKEN |
Pulsa Probar conexión. Pulsar comprueba paso a paso que el servidor responde, que acepta el token, que el endpoint existe y que la respuesta cumple el protocolo, y te dice cuántos componentes ha encontrado. Corrige lo que aparezca en rojo y pulsa Añadir proyecto.
El token se guarda en el Llavero de iOS o en el Android Keystore y no se vuelve a mostrar. Puedes sustituirlo más adelante desde el menú del proyecto.
5. Lee el estado
La pantalla Proyectos muestra cada proyecto con su estado global, tiempo de respuesta, uptime y una línea de tiempo de 24 horas. Abre un proyecto para ver cada componente.
| Estado | Significado | Color |
|---|---|---|
| Operativo | Funciona con normalidad | Verde |
| Degradado | Funciona, con rendimiento reducido o errores | Ámbar |
| Interrupción parcial | Parcialmente no disponible | Rojo |
| Interrupción grave | No disponible | Rojo |
| Mantenimiento | No disponible de forma intencionada | Ámbar |
| Desconocido | No se pudo determinar el estado | Gris |
Cuando Pulsar no puede llegar a tu endpoint (sin red, tiempo agotado, problema de TLS, token incorrecto), el proyecto te explica por qué con palabras sencillas y conserva el último estado conocido de los componentes, para que sigas viendo qué funcionaba.
La pantalla del proyecto muestra también Estadísticas de las últimas 24 horas o 7 días: con qué frecuencia el endpoint estuvo accesible y operativo, percentiles de latencia y los periodos con problemas.
6. Actividad y notificaciones
Pulsar registra cambios, no cada comprobación: un componente que se degrada, una caída, una recuperación, un endpoint que deja de responder o vuelve a hacerlo. Los encontrarás en la pestaña Actividad, agrupados por día y con la duración de cada incidente.
La primera vez que añades un proyecto, Pulsar pide permiso para enviar notificaciones. En Ajustes › Notificaciones eliges si quieres avisos de cambios de estado y de recuperaciones. Para silenciar un proyecto durante un rato (por ejemplo, durante un despliegue), abre su menú y elige Silenciar notificaciones…. Los proyectos silenciados se siguen comprobando y registrando.
7. Cada cuánto comprueba Pulsar
Con Pulsar abierta, cada proyecto se comprueba con el intervalo que elijas en Ajustes › Intervalo de comprobación (de 30 segundos a 30 minutos, o manual). Siempre puedes deslizar hacia abajo para comprobar ahora.
Con la app cerrada, iOS y Android deciden cuándo se hacen las comprobaciones en segundo plano: como mucho cada 15 minutos, a menudo menos, y nunca mientras el teléfono restrinja la actividad en segundo plano. Un móvil no puede monitorizar 24/7. Usa Pulsar para vigilar tus proyectos, no como tu único sistema de alertas para servicios críticos.
8. Desarrollo en local
Para comprobar una API que se ejecuta en tu ordenador:
- En un móvil,
localhostes el propio móvil. Usa la IP local de tu ordenador, p. ej.http://192.168.1.42:3000, y asegúrate de que ambos están en la misma Wi-Fi. - El emulador de Android llega a tu ordenador en
http://10.0.2.2:<puerto>. El simulador de iOS puede usarhttp://localhost:<puerto>. - HTTP sin cifrar solo se permite en el entorno Desarrollo y con direcciones de red privada, y Pulsar lo marca como No seguro. Producción exige siempre HTTPS.
- En iPhone, permite Red local a Pulsar cuando te lo pida (Ajustes › Privacidad y seguridad › Red local).
9. Herramientas para desarrolladores
Pulsa el icono de código en la pantalla Proyectos. Todo se ejecuta en tu dispositivo:
- Validador de payload: pega una respuesta y compruébala contra el protocolo.
- Fragmentos de solicitud: curl, HTTPie, fetch, Python y una comprobación para GitHub Actions, con
$PULSAR_TOKENen lugar de tu token. - Generador de tokens: tokens seguros de 256 bits y la línea
.envcorrespondiente. - Calculadora de SLA: tiempo de caída permitido por 99,9 %, 99,99 % y otros objetivos.
- Prueba de latencia: peticiones secuenciales a un proyecto con p50, p95 y jitter.
- Inspector TLS: emisor del certificado, caducidad y días restantes de cualquier host.
- Informe de incidentes: un resumen en Markdown de los incidentes de un proyecto, listo para un postmortem.
10. Seguridad y privacidad
- Los tokens viven solo en el Llavero o el Keystore y viajan solo en la cabecera
Authorization. - La validación de certificados está siempre activa, se bloquean las redirecciones de HTTPS a HTTP y el token nunca se envía a otro host.
- Bloqueo de la app (Ajustes › Seguridad) protege Pulsar con Face ID, huella o el código de tu dispositivo, tras el tiempo que elijas.
- Pulsar no tiene cuenta, ni servidores, ni analítica. Lee la Política de privacidad.
11. Hazla tuya
- Apariencia: sistema, claro u oscuro.
- Icono de la app: Claro, Oscuro, Pulso o Anillo (Ajustes › Icono de la app). En Android el nuevo icono aparece al salir de la app.
- Idioma: English, Español, Français, Deutsch, Русский, 中文, العربية o Norsk bokmål (Ajustes › Idioma).
- Orden y filtros: arrastra los proyectos para reordenarlos; filtra por estado.
- Exportar e importar: pasa tus proyectos a otro móvil con un archivo JSON. Los tokens nunca se exportan; vuelve a añadirlos en el nuevo móvil.
12. Solución de problemas
| Pulsar dice | Qué revisar |
|---|---|
| Error de autenticación | El token de Pulsar coincide con PULSAR_TOKEN en el servidor, sin espacios. El servidor lee la cabecera Authorization: Bearer. |
| Endpoint de Pulsar no encontrado | PULSAR_ENABLED=true y PULSAR_TOKEN están definidos en el servidor desplegado, y la ruta es correcta. |
| Tiempo de espera agotado | El endpoint responde dentro del tiempo de espera (Ajustes › Tiempo de espera de conexión). Ejecuta las comprobaciones lentas en paralelo y con su propio límite. |
| Respuesta de Pulsar no válida | Abre Ver errores de validación: cada error indica el campo y lo que se esperaba. Los campos extra desconocidos no son un problema. |
| Falló el handshake TLS / Error de TLS | El servidor tiene un certificado válido para ese nombre de host. Los certificados autofirmados se rechazan. |
| Host no encontrado / Conexión rechazada | La URL base es correcta y el servidor está en marcha. En un móvil, localhost es el propio móvil (ver Desarrollo en local). |
| No seguro | Estás usando HTTP. Usa HTTPS fuera del desarrollo en local. |
| No llegan notificaciones | Las notificaciones de Pulsar están permitidas en los ajustes del sistema, el proyecto no está silenciado y la actualización en segundo plano está activada. |
¿Sigues atascado? Escribe a info@arkplatforms.eu y, si puedes, adjunta el archivo de Ajustes › Desarrollador › Diagnóstico › Exportar diagnóstico (nunca contiene tokens).