PulseMon

v1.0.2

Monitor cron jobs and background tasks with PulseMon. Check monitor status, create/update/delete monitors, view incidents, and manage alerts.

1· 385· 3 versions· 1 current· 1 all-time· Updated 7h ago· MIT-0
byRamon@ramongalego

Install

openclaw skills install pulsemon

PulseMon Skill

Monitor your cron jobs and background tasks through PulseMon.

Setup

The user needs a PulseMon API key. They can generate one at https://pulsemon.dev/dashboard/settings under "API Keys".

Store it as the environment variable PULSEMON_API_KEY.

Base URL

All API requests go to: https://pulsemon.dev/api/v1

Authentication

Every request must include the header:

Authorization: Bearer {PULSEMON_API_KEY}

Available Actions

List all monitors

GET /api/v1/monitors

Returns an array of monitors with their name, slug, status (up/down/waiting/paused), last ping time, and expected interval.

Get a specific monitor

GET /api/v1/monitors/{id}

Returns full monitor details including recent pings and incidents.

Create a monitor

POST /api/v1/monitors

Content-Type: application/json

Body:

{
  "name": "Nightly Backup",
  "slug": "nightly-backup",
  "expectedInterval": 86400,
  "gracePeriod": 300,
  "tags": ["production"]
}
  • name: Human-readable name (required, 1-100 characters)
  • slug: URL-safe identifier, lowercase letters, numbers, and hyphens only (required, 3-60 characters)
  • expectedInterval: Seconds between expected pings (required, minimum 10, maximum 2592000)
  • gracePeriod: Extra seconds before alerting (optional, 0-86400, defaults to a sensible value based on the interval)
  • tags: Array of string tags for organisation (optional)
  • maxDuration: Max allowed run time in milliseconds (optional, null to disable). Alerts if a ping reports a duration exceeding this threshold.

Update a monitor

PATCH /api/v1/monitors/{id}

Content-Type: application/json

Body: any of these fields (at least one required):

  • name: string (1-100 characters)
  • expectedInterval: number (10-2592000)
  • gracePeriod: number (0-86400)
  • isPaused: boolean
  • tags: array of strings
  • maxDuration: number or null (milliseconds)

Delete a monitor

DELETE /api/v1/monitors/{id}

Pause a monitor

POST /api/v1/monitors/{id}/pause

Resume a monitor

POST /api/v1/monitors/{id}/resume

List pings for a monitor

GET /api/v1/monitors/{id}/pings?limit=20&offset=0

List incidents for a monitor

GET /api/v1/monitors/{id}/incidents?limit=20&offset=0

Ping a monitor

Pings are sent directly to the ping endpoint (no API key needed):

GET https://pulsemon.dev/api/ping/{slug}

Optional query params:

  • status: "success" (default), "fail", or "start"
  • duration: Job duration in milliseconds

POST https://pulsemon.dev/api/ping/{slug} with JSON body:

{
  "status": "success",
  "duration": 1234,
  "body": "Processed 500 records"
}
  • status=start: Signals a job has begun. Enables overlap detection. Does not reset the deadline.
  • status=success: Signals the job completed. Resets the deadline.
  • status=fail: Records a failure. Does not reset the deadline.
  • body: Job output (up to 10 KB). Included in alert notifications.
  • duration: Job run time in ms. Checked against maxDuration threshold if set.

Response Format

All responses are JSON with this shape:

{
  "data": { ... },
  "error": null
}

On error:

{
  "data": null,
  "error": { "code": "NOT_FOUND", "message": "Monitor not found" }
}

Common Intervals

When the user says a time like "every hour" or "daily", convert to seconds:

  • Every minute: 60
  • Every 5 minutes: 300
  • Every 15 minutes: 900
  • Every 30 minutes: 1800
  • Every hour: 3600
  • Every 6 hours: 21600
  • Every 12 hours: 43200
  • Daily: 86400
  • Weekly: 604800

Guidelines

  • When listing monitors, show name, status, and last ping time in a readable format.
  • When a monitor is "down", mention how long it's been down.
  • When creating a monitor, suggest a sensible grace period if the user doesn't specify one (e.g. 10% of the interval, minimum 30 seconds).
  • After creating a monitor, show the user the ping URL: https://pulsemon.dev/api/ping/{slug}
  • Always confirm before deleting a monitor.
  • When the user says "check my monitors" or similar, use the list endpoint and summarise the results.
  • Format durations in human-readable form (e.g. "2 hours ago" instead of a raw timestamp).

Version tags

latestvk97ahb6vzsg4gss4yyv05kh8rd82ybym

Runtime requirements

EnvPULSEMON_API_KEY