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.

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 Unauthorized y no ejecuta ninguna comprobación.
  • Responde con Content-Type: application/json y Cache-Control: no-store.
  • Un componente caído no es un error: devuelve igualmente 200 OK, con ese componente en major_outage.
  • uptime30d es un número entre 0 y 1 (por ejemplo, 0.9999 es 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:

CampoQué poner
Nombre del proyectoCualquier nombre que reconozcas, p. ej. «API de facturación»
EntornoDesarrollo, Staging o Producción
URL baseLa dirección de tu API, p. ej. https://api.example.com
Endpoint de Pulsar/pulsar, salvo que hayas usado otra ruta
TokenEl 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.

EstadoSignificadoColor
OperativoFunciona con normalidadVerde
DegradadoFunciona, con rendimiento reducido o erroresÁmbar
Interrupción parcialParcialmente no disponibleRojo
Interrupción graveNo disponibleRojo
MantenimientoNo disponible de forma intencionadaÁmbar
DesconocidoNo se pudo determinar el estadoGris

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, localhost es 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 usar http://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_TOKEN en lugar de tu token.
  • Generador de tokens: tokens seguros de 256 bits y la línea .env correspondiente.
  • 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 diceQué revisar
Error de autenticaciónEl token de Pulsar coincide con PULSAR_TOKEN en el servidor, sin espacios. El servidor lee la cabecera Authorization: Bearer.
Endpoint de Pulsar no encontradoPULSAR_ENABLED=true y PULSAR_TOKEN están definidos en el servidor desplegado, y la ruta es correcta.
Tiempo de espera agotadoEl 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álidaAbre 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 TLSEl servidor tiene un certificado válido para ese nombre de host. Los certificados autofirmados se rechazan.
Host no encontrado / Conexión rechazadaLa 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 seguroEstás usando HTTP. Usa HTTPS fuera del desarrollo en local.
No llegan notificacionesLas 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).